<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> |
+<a href="#pub-slots">Public Slots</a> |
<a href="#signals">Signals</a> |
<a href="#pub-methods">Public Member Functions</a> |
<a href="#pub-attribs">Public Attributes</a> |
<b>UpdateStatus_ErrorNoConnection</b> = 6,
<b>UpdateStatus_ErrorConnectionTestFailed</b> = 7,
<br />
-  <b>UpdateStatus_ErrorFetchUpdateInfo</b> = 8
+  <b>UpdateStatus_ErrorFetchUpdateInfo</b> = 8,
+<b>UpdateStatus_CancelledByUser</b> = 9
<br />
}</td></tr>
<tr class="separator:aff186e28bb0b6050d9a9224657d0c6a3"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-slots"></a>
+Public Slots</h2></td></tr>
+<tr class="memitem:add6f1f5bd1dada7fc989c84e597ac4d7"><td class="memItemLeft" align="right" valign="top"><a id="add6f1f5bd1dada7fc989c84e597ac4d7"></a>
+void </td><td class="memItemRight" valign="bottom"><b>start</b> (Priority=InheritPriority)</td></tr>
+<tr class="separator:add6f1f5bd1dada7fc989c84e597ac4d7"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="signals"></a>
Signals</h2></td></tr>
<tr class="memitem:a044467a6036676be8b762e92f4e0c892"><td class="memItemLeft" align="right" valign="top"><a id="a044467a6036676be8b762e92f4e0c892"></a>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
-<tr class="memitem:a31feb1a3987f97b62217701ac4f5bc46"><td class="memItemLeft" align="right" valign="top"><a id="a31feb1a3987f97b62217701ac4f5bc46"></a>
- </td><td class="memItemRight" valign="bottom"><b>UpdateChecker</b> (const QString &binWGet, const QString &binNC, const QString &binGnuPG, const QString &binKeys, const QString &applicationId, const quint32 &installedBuildNo, const bool betaUpdates, const bool testMode=false)</td></tr>
-<tr class="separator:a31feb1a3987f97b62217701ac4f5bc46"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4514c18f67d6b800a6102f251255cef5"><td class="memItemLeft" align="right" valign="top"><a id="a4514c18f67d6b800a6102f251255cef5"></a>
+ </td><td class="memItemRight" valign="bottom"><b>UpdateChecker</b> (const QString &binWGet, const QString &binMCat, const QString &binGnuPG, const QString &binKeys, const QString &applicationId, const quint32 &installedBuildNo, const bool betaUpdates, const bool testMode=false)</td></tr>
+<tr class="separator:a4514c18f67d6b800a6102f251255cef5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a50f6b68b977f213cdc812d3634519cb1"><td class="memItemLeft" align="right" valign="top"><a id="a50f6b68b977f213cdc812d3634519cb1"></a>
const int </td><td class="memItemRight" valign="bottom"><b>getUpdateStatus</b> (void) const</td></tr>
<tr class="separator:a50f6b68b977f213cdc812d3634519cb1"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:afd219fb3d8223dae6a6b80765683e5b3"><td class="memItemLeft" align="right" valign="top"><a id="afd219fb3d8223dae6a6b80765683e5b3"></a>
const <a class="el" href="../../d1/d0d/class_m_utils_1_1_update_checker_info.html">UpdateCheckerInfo</a> * </td><td class="memItemRight" valign="bottom"><b>getUpdateInfo</b> (void) const</td></tr>
<tr class="separator:afd219fb3d8223dae6a6b80765683e5b3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a166ded79a9b92116db7d22cef73850fc"><td class="memItemLeft" align="right" valign="top"><a id="a166ded79a9b92116db7d22cef73850fc"></a>
+void </td><td class="memItemRight" valign="bottom"><b>cancel</b> (void)</td></tr>
+<tr class="separator:a166ded79a9b92116db7d22cef73850fc"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<p>This is the complete list of members for <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>, including all inherited members.</p>
<table class="directory">
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>checkForUpdates</b>(void) (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>getCurrentProgress</b>(void) const (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getMaximumProgress</b>(void) const (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>getSuccess</b>(void) const (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getUpdateInfo</b>(void) const (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>getUpdateStatus</b>(void) const (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>messageLogged</b>(const QString &text) (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>progressChanged</b>(const int progress) (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>run</b>(void) (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cancel</b>(void) (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>checkForUpdates</b>(void) (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getCurrentProgress</b>(void) const (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>getMaximumProgress</b>(void) const (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getSuccess</b>(void) const (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>getUpdateInfo</b>(void) const (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getUpdateStatus</b>(void) const (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>messageLogged</b>(const QString &text) (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>progressChanged</b>(const int progress) (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>run</b>(void) (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>start</b>(Priority=InheritPriority) (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">slot</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>statusChanged</b>(const int status) (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>testKnownHosts</b>(void) (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>update_status_t</b> (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>UpdateChecker</b>(const QString &binWGet, const QString &binNC, const QString &binGnuPG, const QString &binKeys, const QString &applicationId, const quint32 &installedBuildNo, const bool betaUpdates, const bool testMode=false) (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>UpdateStatus_CheckingConnection</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>UpdateStatus_CompletedNewVersionOlder</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>UpdateStatus_CompletedNoUpdates</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>UpdateStatus_CompletedUpdateAvailable</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>UpdateStatus_ErrorConnectionTestFailed</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>UpdateStatus_ErrorFetchUpdateInfo</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>UpdateStatus_ErrorNoConnection</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>UpdateStatus_FetchingUpdates</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>UpdateStatus_NotStartedYet</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~UpdateChecker</b>(void) (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>UpdateChecker</b>(const QString &binWGet, const QString &binMCat, const QString &binGnuPG, const QString &binKeys, const QString &applicationId, const quint32 &installedBuildNo, const bool betaUpdates, const bool testMode=false) (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>UpdateStatus_CancelledByUser</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>UpdateStatus_CheckingConnection</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>UpdateStatus_CompletedNewVersionOlder</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>UpdateStatus_CompletedNoUpdates</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>UpdateStatus_CompletedUpdateAvailable</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>UpdateStatus_ErrorConnectionTestFailed</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>UpdateStatus_ErrorFetchUpdateInfo</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>UpdateStatus_ErrorNoConnection</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>UpdateStatus_FetchingUpdates</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>UpdateStatus_NotStartedYet</b> enum value (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>~UpdateChecker</b>(void) (defined in <a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a>)</td><td class="entry"><a class="el" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
<div class="ttc" id="_hash_8h_html_aa9e34ac422f4e52061cb8908f922fe17"><div class="ttname"><a href="../../d2/dad/_hash_8h.html#aa9e34ac422f4e52061cb8908f922fe17">MUtils::Hash::HASH_BLAKE2_512</a></div><div class="ttdeci">static const quint16 HASH_BLAKE2_512</div><div class="ttdoc">Hash algorithm identifier. </div><div class="ttdef"><b>Definition:</b> Hash.h:42</div></div>
<div class="ttc" id="_hash_8h_html_af80dfb1569816fab7ab5ed32e6386458"><div class="ttname"><a href="../../d2/dad/_hash_8h.html#af80dfb1569816fab7ab5ed32e6386458">MUtils::Hash::HASH_KECCAK_384</a></div><div class="ttdeci">static const quint16 HASH_KECCAK_384</div><div class="ttdoc">Hash algorithm identifier. </div><div class="ttdef"><b>Definition:</b> Hash.h:45</div></div>
<div class="ttc" id="namespace_m_utils_html"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="ttdoc">Global MUtils namespace. </div><div class="ttdef"><b>Definition:</b> CPUFeatures.h:37</div></div>
-<div class="ttc" id="_global_8h_html_a8e7b4857b78f9749233e5abc96534ca8"><div class="ttname"><a href="../../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8">MUTILS_NO_COPY</a></div><div class="ttdeci">#define MUTILS_NO_COPY(CLASS)</div><div class="ttdoc">Disables copy constructor and assignment operator in the specified class. This macro should be used i...</div><div class="ttdef"><b>Definition:</b> Global.h:362</div></div>
+<div class="ttc" id="_global_8h_html_a8e7b4857b78f9749233e5abc96534ca8"><div class="ttname"><a href="../../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8">MUTILS_NO_COPY</a></div><div class="ttdeci">#define MUTILS_NO_COPY(CLASS)</div><div class="ttdoc">Disables copy constructor and assignment operator in the specified class. This macro should be used i...</div><div class="ttdef"><b>Definition:</b> Global.h:366</div></div>
<div class="ttc" id="_hash_8h_html_a330b73d6927d6cd95892712f9396f40e"><div class="ttname"><a href="../../d2/dad/_hash_8h.html#a330b73d6927d6cd95892712f9396f40e">MUtils::Hash::create</a></div><div class="ttdeci">MUTILS_API Hash * create(const quint16 &hashId, const char *const key=NULL)</div><div class="ttdoc">Create instance of a hash function. </div></div>
<div class="ttc" id="class_m_utils_1_1_hash_1_1_hash_html"><div class="ttname"><a href="../../da/db0/class_m_utils_1_1_hash_1_1_hash.html">MUtils::Hash::Hash</a></div><div class="ttdoc">This abstract class specifies the generic interface for all support hash algorithms. </div><div class="ttdef"><b>Definition:</b> Hash.h:57</div></div>
<div class="ttc" id="_hash_8h_html_ae38cda07e425eb7c745492215a48ae08"><div class="ttname"><a href="../../d2/dad/_hash_8h.html#ae38cda07e425eb7c745492215a48ae08">MUtils::Hash::HASH_KECCAK_256</a></div><div class="ttdeci">static const quint16 HASH_KECCAK_256</div><div class="ttdoc">Hash algorithm identifier. </div><div class="ttdef"><b>Definition:</b> Hash.h:44</div></div>
<tr class="memitem:a4d4c545ea06892f6487f15a48808564f"><td class="memItemLeft" align="right" valign="top">MUTILS_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#a4d4c545ea06892f6487f15a48808564f">natural_string_sort</a> (QStringList &list, const bool bIgnoreCase)</td></tr>
<tr class="memdesc:a4d4c545ea06892f6487f15a48808564f"><td class="mdescLeft"> </td><td class="mdescRight">Sort a list of strings using "natural ordering" algorithm. <a href="#a4d4c545ea06892f6487f15a48808564f">More...</a><br /></td></tr>
<tr class="separator:a4d4c545ea06892f6487f15a48808564f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afd8eb699de88edd73e47fe2e41873385"><td class="memItemLeft" align="right" valign="top">MUTILS_API QString </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385">clean_file_name</a> (const QString &name)</td></tr>
-<tr class="memdesc:afd8eb699de88edd73e47fe2e41873385"><td class="mdescLeft"> </td><td class="mdescRight">Clean up a file name string. <a href="#afd8eb699de88edd73e47fe2e41873385">More...</a><br /></td></tr>
-<tr class="separator:afd8eb699de88edd73e47fe2e41873385"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad801fab93087c31d764ad15295fe3a88"><td class="memItemLeft" align="right" valign="top">MUTILS_API QString </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88">clean_file_path</a> (const QString &path)</td></tr>
-<tr class="memdesc:ad801fab93087c31d764ad15295fe3a88"><td class="mdescLeft"> </td><td class="mdescRight">Clean up a file path string. <a href="#ad801fab93087c31d764ad15295fe3a88">More...</a><br /></td></tr>
-<tr class="separator:ad801fab93087c31d764ad15295fe3a88"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeb7783b8ecbe163501ce60dce8b6709f"><td class="memItemLeft" align="right" valign="top">MUTILS_API QString </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#aeb7783b8ecbe163501ce60dce8b6709f">clean_file_name</a> (const QString &name, const bool &pretty)</td></tr>
+<tr class="memdesc:aeb7783b8ecbe163501ce60dce8b6709f"><td class="mdescLeft"> </td><td class="mdescRight">Clean up a file name string. <a href="#aeb7783b8ecbe163501ce60dce8b6709f">More...</a><br /></td></tr>
+<tr class="separator:aeb7783b8ecbe163501ce60dce8b6709f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adb5da6435b27e10443060dd2550784f3"><td class="memItemLeft" align="right" valign="top">MUTILS_API QString </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#adb5da6435b27e10443060dd2550784f3">clean_file_path</a> (const QString &path, const bool &pretty)</td></tr>
+<tr class="memdesc:adb5da6435b27e10443060dd2550784f3"><td class="mdescLeft"> </td><td class="mdescRight">Clean up a file path string. <a href="#adb5da6435b27e10443060dd2550784f3">More...</a><br /></td></tr>
+<tr class="separator:adb5da6435b27e10443060dd2550784f3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ad2a851b289ee66873d3a1ec86f5f34eb"><td class="memItemLeft" align="right" valign="top">MUTILS_API bool </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#ad2a851b289ee66873d3a1ec86f5f34eb">regexp_parse_uint32</a> (const QRegExp &regexp, quint32 &value)</td></tr>
<tr class="memdesc:ad2a851b289ee66873d3a1ec86f5f34eb"><td class="mdescLeft"> </td><td class="mdescRight">Parse regular expression results. <a href="#ad2a851b289ee66873d3a1ec86f5f34eb">More...</a><br /></td></tr>
<tr class="separator:ad2a851b289ee66873d3a1ec86f5f34eb"><td class="memSeparator" colspan="2"> </td></tr>
</div>
</div>
-<a id="afd8eb699de88edd73e47fe2e41873385"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#afd8eb699de88edd73e47fe2e41873385">§ </a></span>clean_file_name()</h2>
+<a id="aeb7783b8ecbe163501ce60dce8b6709f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aeb7783b8ecbe163501ce60dce8b6709f">§ </a></span>clean_file_name()</h2>
<div class="memitem">
<div class="memproto">
<td class="memname">MUTILS_API QString MUtils::clean_file_name </td>
<td>(</td>
<td class="paramtype">const QString & </td>
- <td class="paramname"><em>name</em></td><td>)</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
<td></td>
+ <td class="paramtype">const bool & </td>
+ <td class="paramname"><em>pretty</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function ensures that the given string is a valid file (or directory) name. It does so by replacing any illegal characters, i.e. any characters <em>not</em> allowed in file names (which explicitly <em>includes</em> directory separators). Furthermore, the function will trim/remove specific characters that are <em>not</em> allowed directly at the beginning or end of a file name. Finally, the function takes care of special "reserved" file names that are forbidden by the file system. You can use this function to convert user inputs into a valid file name.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">list</td><td>A read-only reference to the QString holding the original, potentially invalid file name.</td></tr>
+ <tr><td class="paramname">name</td><td>A read-only reference to the QString holding the original, potentially invalid file name.</td></tr>
+ <tr><td class="paramname">pretty</td><td>If set to <code>true</code>, the function tries to generate a "pretty" file name from the given file name. Otherwise, the function simply replaces each forbidden file name character by an underscore character.</td></tr>
</table>
</dd>
</dl>
</div>
</div>
-<a id="ad801fab93087c31d764ad15295fe3a88"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ad801fab93087c31d764ad15295fe3a88">§ </a></span>clean_file_path()</h2>
+<a id="adb5da6435b27e10443060dd2550784f3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adb5da6435b27e10443060dd2550784f3">§ </a></span>clean_file_path()</h2>
<div class="memitem">
<div class="memproto">
<td class="memname">MUTILS_API QString MUtils::clean_file_path </td>
<td>(</td>
<td class="paramtype">const QString & </td>
- <td class="paramname"><em>path</em></td><td>)</td>
+ <td class="paramname"><em>path</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
<td></td>
+ <td class="paramtype">const bool & </td>
+ <td class="paramname"><em>pretty</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function ensures that the given string is a valid file (or directory) path. It does so by replacing any illegal characters, i.e. any characters <em>not</em> allowed in file paths. Directory separators are preserved, but they will be "canonicalized". Furthermore, in each path component, the function will trim/remove specific characters that are <em>not</em> allowed directly at the beginning or end of a path component. Finally, the function takes care of special "reserved" file names that are forbidden by the file system. You can use this function to convert user inputs into a valid file path.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">list</td><td>A read-only reference to the QString holding the original, potentially invalid file path.</td></tr>
+ <tr><td class="paramname">path</td><td>A read-only reference to the QString holding the original, potentially invalid file path.</td></tr>
+ <tr><td class="paramname">pretty</td><td>If set to <code>true</code>, the function tries to generate "pretty" file names from the given file names. Otherwise, the function simply replaces each forbidden file name character by an underscore character.</td></tr>
</table>
</dd>
</dl>
<a href="../../d4/d85/_job_object_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// MuldeR's Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright (C) 2004-2017 LoRd_MuldeR <MuldeR2@GMX.de></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// This library is free software; you can redistribute it and/or</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// modify it under the terms of the GNU Lesser General Public</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// License as published by the Free Software Foundation; either</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// version 2.1 of the License, or (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// This library is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// You should have received a copy of the GNU Lesser General Public</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// License along with this library; if not, write to the Free Software</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// http://www.gnu.org/licenses/lgpl-2.1.txt</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <<a class="code" href="../../d5/d3b/_global_8h.html">MUtils/Global.h</a>></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span>QProcess;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="../../dc/dd3/class_m_utils_1_1_job_object.html"> 46</a></span>  <span class="keyword">class </span>MUTILS_API <a class="code" href="../../dc/dd3/class_m_utils_1_1_job_object.html">JobObject</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="../../dc/dd3/class_m_utils_1_1_job_object.html">JobObject</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  ~<a class="code" href="../../dc/dd3/class_m_utils_1_1_job_object.html">JobObject</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">bool</span> isObjectCreated(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">bool</span> addProcessToJob(<span class="keyword">const</span> QProcess *<span class="keyword">const</span> process);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">bool</span> terminateJob(<span class="keyword">const</span> quint32 &exitCode);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  uintptr_t m_jobPtr;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="../../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8">MUTILS_NO_COPY</a>(<a class="code" href="../../dc/dd3/class_m_utils_1_1_job_object.html">JobObject</a>)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  };</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> }</div><div class="ttc" id="_global_8h_html"><div class="ttname"><a href="../../d5/d3b/_global_8h.html">Global.h</a></div><div class="ttdoc">This file contains miscellaneous functions that are generally useful for Qt-based applications...</div></div>
<div class="ttc" id="class_m_utils_1_1_job_object_html"><div class="ttname"><a href="../../dc/dd3/class_m_utils_1_1_job_object.html">MUtils::JobObject</a></div><div class="ttdoc">This class represents a job object. </div><div class="ttdef"><b>Definition:</b> JobObject.h:46</div></div>
<div class="ttc" id="namespace_m_utils_html"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="ttdoc">Global MUtils namespace. </div><div class="ttdef"><b>Definition:</b> CPUFeatures.h:37</div></div>
-<div class="ttc" id="_global_8h_html_a8e7b4857b78f9749233e5abc96534ca8"><div class="ttname"><a href="../../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8">MUTILS_NO_COPY</a></div><div class="ttdeci">#define MUTILS_NO_COPY(CLASS)</div><div class="ttdoc">Disables copy constructor and assignment operator in the specified class. This macro should be used i...</div><div class="ttdef"><b>Definition:</b> Global.h:362</div></div>
+<div class="ttc" id="_global_8h_html_a8e7b4857b78f9749233e5abc96534ca8"><div class="ttname"><a href="../../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8">MUTILS_NO_COPY</a></div><div class="ttdeci">#define MUTILS_NO_COPY(CLASS)</div><div class="ttdoc">Disables copy constructor and assignment operator in the specified class. This macro should be used i...</div><div class="ttdef"><b>Definition:</b> Global.h:366</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
<tr class="memitem:a4d4c545ea06892f6487f15a48808564f"><td class="memItemLeft" align="right" valign="top">MUTILS_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#a4d4c545ea06892f6487f15a48808564f">MUtils::natural_string_sort</a> (QStringList &list, const bool bIgnoreCase)</td></tr>
<tr class="memdesc:a4d4c545ea06892f6487f15a48808564f"><td class="mdescLeft"> </td><td class="mdescRight">Sort a list of strings using "natural ordering" algorithm. <a href="../../d3/da6/namespace_m_utils.html#a4d4c545ea06892f6487f15a48808564f">More...</a><br /></td></tr>
<tr class="separator:a4d4c545ea06892f6487f15a48808564f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afd8eb699de88edd73e47fe2e41873385"><td class="memItemLeft" align="right" valign="top">MUTILS_API QString </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385">MUtils::clean_file_name</a> (const QString &name)</td></tr>
-<tr class="memdesc:afd8eb699de88edd73e47fe2e41873385"><td class="mdescLeft"> </td><td class="mdescRight">Clean up a file name string. <a href="../../d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385">More...</a><br /></td></tr>
-<tr class="separator:afd8eb699de88edd73e47fe2e41873385"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad801fab93087c31d764ad15295fe3a88"><td class="memItemLeft" align="right" valign="top">MUTILS_API QString </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88">MUtils::clean_file_path</a> (const QString &path)</td></tr>
-<tr class="memdesc:ad801fab93087c31d764ad15295fe3a88"><td class="mdescLeft"> </td><td class="mdescRight">Clean up a file path string. <a href="../../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88">More...</a><br /></td></tr>
-<tr class="separator:ad801fab93087c31d764ad15295fe3a88"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeb7783b8ecbe163501ce60dce8b6709f"><td class="memItemLeft" align="right" valign="top">MUTILS_API QString </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#aeb7783b8ecbe163501ce60dce8b6709f">MUtils::clean_file_name</a> (const QString &name, const bool &pretty)</td></tr>
+<tr class="memdesc:aeb7783b8ecbe163501ce60dce8b6709f"><td class="mdescLeft"> </td><td class="mdescRight">Clean up a file name string. <a href="../../d3/da6/namespace_m_utils.html#aeb7783b8ecbe163501ce60dce8b6709f">More...</a><br /></td></tr>
+<tr class="separator:aeb7783b8ecbe163501ce60dce8b6709f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adb5da6435b27e10443060dd2550784f3"><td class="memItemLeft" align="right" valign="top">MUTILS_API QString </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#adb5da6435b27e10443060dd2550784f3">MUtils::clean_file_path</a> (const QString &path, const bool &pretty)</td></tr>
+<tr class="memdesc:adb5da6435b27e10443060dd2550784f3"><td class="mdescLeft"> </td><td class="mdescRight">Clean up a file path string. <a href="../../d3/da6/namespace_m_utils.html#adb5da6435b27e10443060dd2550784f3">More...</a><br /></td></tr>
+<tr class="separator:adb5da6435b27e10443060dd2550784f3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ad2a851b289ee66873d3a1ec86f5f34eb"><td class="memItemLeft" align="right" valign="top">MUTILS_API bool </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#ad2a851b289ee66873d3a1ec86f5f34eb">MUtils::regexp_parse_uint32</a> (const QRegExp &regexp, quint32 &value)</td></tr>
<tr class="memdesc:ad2a851b289ee66873d3a1ec86f5f34eb"><td class="mdescLeft"> </td><td class="mdescRight">Parse regular expression results. <a href="../../d3/da6/namespace_m_utils.html#ad2a851b289ee66873d3a1ec86f5f34eb">More...</a><br /></td></tr>
<tr class="separator:ad2a851b289ee66873d3a1ec86f5f34eb"><td class="memSeparator" colspan="2"> </td></tr>
<div class="title">Global.h</div> </div>
</div><!--header-->
<div class="contents">
-<a href="../../d5/d3b/_global_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// MuldeR's Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright (C) 2004-2017 LoRd_MuldeR <MuldeR2@GMX.de></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// This library is free software; you can redistribute it and/or</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// modify it under the terms of the GNU Lesser General Public</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// License as published by the Free Software Foundation; either</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// version 2.1 of the License, or (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// This library is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// You should have received a copy of the GNU Lesser General Public</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// License along with this library; if not, write to the Free Software</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// http://www.gnu.org/licenses/lgpl-2.1.txt</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <QString></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">//Forward Declarations</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span>QProcess;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">//MUtils API</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"># ifdef MUTILS_DLL_EXPORT</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"># define MUTILS_API __declspec(dllexport)</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor"># ifndef MUTILS_STATIC_LIB</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"># define MUTILS_API __declspec(dllimport)</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor"># define MUTILS_API </span><span class="comment">/*static lib*/</span><span class="preprocessor"></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor"># define MUTILS_API</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#define MUTILS_MAKE_STRING_HELPER(X) #X</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#define MUTILS_MAKE_STRING(X) MUTILS_MAKE_STRING_HELPER(X)</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#define MUTILS_COMPILER_WARNING(TXT) __pragma(message(__FILE__ "(" MUTILS_MAKE_STRING(__LINE__) ") : warning: " TXT))</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">//Check Debug Flags</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#if defined(_DEBUG) || defined(DEBUG) || (!defined(NDEBUG))</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor"># define MUTILS_DEBUG (1)</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor"># if defined(NDEBUG) || defined(QT_NO_DEBUG) || (!defined(QT_DEBUG))</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor"># error Inconsistent DEBUG flags have been detected!</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"># define MUTILS_DEBUG (0)</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor"># if (!defined(NDEBUG)) || (!defined(QT_NO_DEBUG)) || defined(QT_DEBUG)</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor"># error Inconsistent DEBUG flags have been detected!</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">//Check CPU options</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#if defined(_MSC_VER) && (!defined(__INTELLISENSE__)) && (!defined(_M_X64)) && defined(_M_IX86_FP)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"> #if (_M_IX86_FP != 0)</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"> #error We should not enabled SSE or SSE2 in release builds!</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"> #endif</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">namespace </span><a class="code" href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  MUTILS_API <span class="keyword">const</span> QString& <a class="code" href="../../d3/da6/namespace_m_utils.html#a3f198156e8be91f3e74dd9ed69ffaa34">temp_folder</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  MUTILS_API <span class="keywordtype">void</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a0ecb5d72f33a7b6feadd7deb8ed46cc3">init_process</a>(QProcess &process, <span class="keyword">const</span> QString &wokringDir, <span class="keyword">const</span> <span class="keywordtype">bool</span> bReplaceTempDir = <span class="keyword">true</span>, <span class="keyword">const</span> QStringList *<span class="keyword">const</span> extraPaths = NULL);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  MUTILS_API quint32 <a class="code" href="../../d3/da6/namespace_m_utils.html#a1c9832c1d645a2c90e9bd52d57d843b3">next_rand_u32</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  MUTILS_API quint64 <a class="code" href="../../d3/da6/namespace_m_utils.html#ad7edd4aece64faf3aa16c9509243608c">next_rand_u64</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#ac583617546d5ae100ce7436546d9662c">next_rand_str</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> &bLong = <span class="keyword">false</span>);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a29461116550863e8730f3f4ec479bbcb">make_temp_file</a>(<span class="keyword">const</span> QString &basePath, <span class="keyword">const</span> QString &extension, <span class="keyword">const</span> <span class="keywordtype">bool</span> placeholder = <span class="keyword">false</span>);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#af9afe3821ae9bef7bdf56a4183fdea0d">make_unique_file</a>(<span class="keyword">const</span> QString &basePath, <span class="keyword">const</span> QString &baseName, <span class="keyword">const</span> QString &extension, <span class="keyword">const</span> <span class="keywordtype">bool</span> fancy = <span class="keyword">false</span>);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#aea4a212153b09b24b04f30ef5159f29b">parity</a>(quint32 value);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a5a14e75627eebd09efc37898d74c5ac6">remove_file</a>(<span class="keyword">const</span> QString &fileName);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a4d451ddc82668d1298f2922f62474b5d">remove_directory</a>(<span class="keyword">const</span> QString &folderPath, <span class="keyword">const</span> <span class="keywordtype">bool</span> &recursive);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  MUTILS_API QString& <a class="code" href="../../d3/da6/namespace_m_utils.html#a6118cf23d2b771fae1ad159c7ea6686a">trim_right</a>(QString &str);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  MUTILS_API QString& <a class="code" href="../../d3/da6/namespace_m_utils.html#a20b8fc56856ee904caaded756399e705">trim_left</a>(QString &str);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a6118cf23d2b771fae1ad159c7ea6686a">trim_right</a>(<span class="keyword">const</span> QString &str);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a20b8fc56856ee904caaded756399e705">trim_left</a>(<span class="keyword">const</span> QString &str);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  MUTILS_API <span class="keywordtype">void</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a4d4c545ea06892f6487f15a48808564f">natural_string_sort</a>(QStringList &list, <span class="keyword">const</span> <span class="keywordtype">bool</span> bIgnoreCase);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385">clean_file_name</a>(<span class="keyword">const</span> QString &name);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88">clean_file_path</a>(<span class="keyword">const</span> QString &path);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#ad2a851b289ee66873d3a1ec86f5f34eb">regexp_parse_uint32</a>(<span class="keyword">const</span> QRegExp &regexp, quint32 &value);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#ad2a851b289ee66873d3a1ec86f5f34eb">regexp_parse_uint32</a>(<span class="keyword">const</span> QRegExp &regexp, quint32 *values, <span class="keyword">const</span> <span class="keywordtype">size_t</span> &count);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  MUTILS_API QStringList <a class="code" href="../../d3/da6/namespace_m_utils.html#a2275e64c3c74dea855c39b66be67f705">available_codepages</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> &noAliases = <span class="keyword">true</span>);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="comment">//Internal</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keyword">namespace </span>Internal</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  MUTILS_API <span class="keywordtype">int</span> selfTest(<span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keyword">const</span> buildKey, <span class="keyword">const</span> <span class="keywordtype">bool</span> debug);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> s_selfTest = selfTest(__DATE__ <span class="stringliteral">"@"</span> __TIME__, MUTILS_DEBUG);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#ad42b1946a83df3bd76734d5ab691fd0d"> 334</a></span> <span class="preprocessor">#define MUTILS_DELETE(PTR) do { if((PTR)) { delete (PTR); (PTR) = NULL; } } while(0)</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#aa544a37b80f1ab9d86f439a7666e9aa8"> 338</a></span> <span class="preprocessor">#define MUTILS_DELETE_ARRAY(PTR) do { if((PTR)) { delete [] (PTR); (PTR) = NULL; } } while(0)</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a1fe39de37351efa3ca46bdc8653e1f25"> 342</a></span> <span class="preprocessor">#define MUTILS_ZERO_MEMORY(PTR) memset(&(PTR), 0, sizeof((PTR)))</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#af55d43b39d3f41cf090c138ed190ee6e"> 346</a></span> <span class="preprocessor">#define MUTILS_WCHR(STR) (reinterpret_cast<const wchar_t*>((STR).utf16()))</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> </div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a88b0902153ea537b12d86267af20eb3f"> 350</a></span> <span class="preprocessor">#define MUTILS_UTF8(STR) ((STR).toUtf8().constData())</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a04d63f6f60c90f8e3c4029824a7352b0"> 354</a></span> <span class="preprocessor">#define MUTILS_QSTR(STR) (QString::fromUtf16(reinterpret_cast<const unsigned short*>((STR))))</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a177ecbfe7701c2ac04bb8bdeb208773a"> 358</a></span> <span class="preprocessor">#define MUTILS_BOOL2STR(X) ((X) ? "1" : "0")</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8"> 362</a></span> <span class="preprocessor">#define MUTILS_NO_COPY(CLASS) \</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="preprocessor"> CLASS(const CLASS &) { throw "Copy constructor is disabled!"; } \</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="preprocessor"> CLASS &operator=(const CLASS &) { throw "Assignment operator is disabled!"; }</span></div><div class="ttc" id="namespace_m_utils_html_a2275e64c3c74dea855c39b66be67f705"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#a2275e64c3c74dea855c39b66be67f705">MUtils::available_codepages</a></div><div class="ttdeci">MUTILS_API QStringList available_codepages(const bool &noAliases=true)</div><div class="ttdoc">Retrieve a list of all available codepages. </div></div>
+<a href="../../d5/d3b/_global_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// MuldeR's Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright (C) 2004-2017 LoRd_MuldeR <MuldeR2@GMX.de></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// This library is free software; you can redistribute it and/or</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// modify it under the terms of the GNU Lesser General Public</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// License as published by the Free Software Foundation; either</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// version 2.1 of the License, or (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// This library is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// You should have received a copy of the GNU Lesser General Public</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// License along with this library; if not, write to the Free Software</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// http://www.gnu.org/licenses/lgpl-2.1.txt</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <QString></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">//Forward Declarations</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span>QProcess;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">//MUtils API</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"># ifdef MUTILS_DLL_EXPORT</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"># define MUTILS_API __declspec(dllexport)</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor"># ifndef MUTILS_STATIC_LIB</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"># define MUTILS_API __declspec(dllimport)</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor"># define MUTILS_API </span><span class="comment">/*static lib*/</span><span class="preprocessor"></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor"># define MUTILS_API</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#define MUTILS_MAKE_STRING_HELPER(X) #X</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#define MUTILS_MAKE_STRING(X) MUTILS_MAKE_STRING_HELPER(X)</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#define MUTILS_COMPILER_WARNING(TXT) __pragma(message(__FILE__ "(" MUTILS_MAKE_STRING(__LINE__) ") : warning: " TXT))</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">//Check Debug Flags</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#if defined(_DEBUG) || defined(DEBUG) || (!defined(NDEBUG))</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor"># define MUTILS_DEBUG (1)</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor"># if defined(NDEBUG) || defined(QT_NO_DEBUG) || (!defined(QT_DEBUG))</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor"># error Inconsistent DEBUG flags have been detected!</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"># define MUTILS_DEBUG (0)</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor"># if (!defined(NDEBUG)) || (!defined(QT_NO_DEBUG)) || defined(QT_DEBUG)</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor"># error Inconsistent DEBUG flags have been detected!</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">//Check CPU options</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#if defined(_MSC_VER) && (!defined(__INTELLISENSE__)) && (!defined(_M_X64)) && defined(_M_IX86_FP)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"> #if (_M_IX86_FP != 0)</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"> #error We should not enabled SSE or SSE2 in release builds!</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"> #endif</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">namespace </span><a class="code" href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  MUTILS_API <span class="keyword">const</span> QString& <a class="code" href="../../d3/da6/namespace_m_utils.html#a3f198156e8be91f3e74dd9ed69ffaa34">temp_folder</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  MUTILS_API <span class="keywordtype">void</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a0ecb5d72f33a7b6feadd7deb8ed46cc3">init_process</a>(QProcess &process, <span class="keyword">const</span> QString &wokringDir, <span class="keyword">const</span> <span class="keywordtype">bool</span> bReplaceTempDir = <span class="keyword">true</span>, <span class="keyword">const</span> QStringList *<span class="keyword">const</span> extraPaths = NULL);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  MUTILS_API quint32 <a class="code" href="../../d3/da6/namespace_m_utils.html#a1c9832c1d645a2c90e9bd52d57d843b3">next_rand_u32</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  MUTILS_API quint64 <a class="code" href="../../d3/da6/namespace_m_utils.html#ad7edd4aece64faf3aa16c9509243608c">next_rand_u64</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#ac583617546d5ae100ce7436546d9662c">next_rand_str</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> &bLong = <span class="keyword">false</span>);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a29461116550863e8730f3f4ec479bbcb">make_temp_file</a>(<span class="keyword">const</span> QString &basePath, <span class="keyword">const</span> QString &extension, <span class="keyword">const</span> <span class="keywordtype">bool</span> placeholder = <span class="keyword">false</span>);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#af9afe3821ae9bef7bdf56a4183fdea0d">make_unique_file</a>(<span class="keyword">const</span> QString &basePath, <span class="keyword">const</span> QString &baseName, <span class="keyword">const</span> QString &extension, <span class="keyword">const</span> <span class="keywordtype">bool</span> fancy = <span class="keyword">false</span>);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#aea4a212153b09b24b04f30ef5159f29b">parity</a>(quint32 value);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a5a14e75627eebd09efc37898d74c5ac6">remove_file</a>(<span class="keyword">const</span> QString &fileName);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a4d451ddc82668d1298f2922f62474b5d">remove_directory</a>(<span class="keyword">const</span> QString &folderPath, <span class="keyword">const</span> <span class="keywordtype">bool</span> &recursive);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  MUTILS_API QString& <a class="code" href="../../d3/da6/namespace_m_utils.html#a6118cf23d2b771fae1ad159c7ea6686a">trim_right</a>(QString &str);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  MUTILS_API QString& <a class="code" href="../../d3/da6/namespace_m_utils.html#a20b8fc56856ee904caaded756399e705">trim_left</a>(QString &str);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a6118cf23d2b771fae1ad159c7ea6686a">trim_right</a>(<span class="keyword">const</span> QString &str);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a20b8fc56856ee904caaded756399e705">trim_left</a>(<span class="keyword">const</span> QString &str);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  MUTILS_API <span class="keywordtype">void</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a4d4c545ea06892f6487f15a48808564f">natural_string_sort</a>(QStringList &list, <span class="keyword">const</span> <span class="keywordtype">bool</span> bIgnoreCase);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#aeb7783b8ecbe163501ce60dce8b6709f">clean_file_name</a>(<span class="keyword">const</span> QString &name, <span class="keyword">const</span> <span class="keywordtype">bool</span> &pretty);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#adb5da6435b27e10443060dd2550784f3">clean_file_path</a>(<span class="keyword">const</span> QString &path, <span class="keyword">const</span> <span class="keywordtype">bool</span> &pretty);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#ad2a851b289ee66873d3a1ec86f5f34eb">regexp_parse_uint32</a>(<span class="keyword">const</span> QRegExp &regexp, quint32 &value);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  MUTILS_API <span class="keywordtype">bool</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#ad2a851b289ee66873d3a1ec86f5f34eb">regexp_parse_uint32</a>(<span class="keyword">const</span> QRegExp &regexp, quint32 *values, <span class="keyword">const</span> <span class="keywordtype">size_t</span> &count);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  MUTILS_API QStringList <a class="code" href="../../d3/da6/namespace_m_utils.html#a2275e64c3c74dea855c39b66be67f705">available_codepages</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> &noAliases = <span class="keyword">true</span>);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="comment">//Internal</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keyword">namespace </span>Internal</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  MUTILS_API <span class="keywordtype">int</span> selfTest(<span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keyword">const</span> buildKey, <span class="keyword">const</span> <span class="keywordtype">bool</span> debug);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> s_selfTest = selfTest(__DATE__ <span class="stringliteral">"@"</span> __TIME__, MUTILS_DEBUG);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#ad42b1946a83df3bd76734d5ab691fd0d"> 338</a></span> <span class="preprocessor">#define MUTILS_DELETE(PTR) do { if((PTR)) { delete (PTR); (PTR) = NULL; } } while(0)</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#aa544a37b80f1ab9d86f439a7666e9aa8"> 342</a></span> <span class="preprocessor">#define MUTILS_DELETE_ARRAY(PTR) do { if((PTR)) { delete [] (PTR); (PTR) = NULL; } } while(0)</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a1fe39de37351efa3ca46bdc8653e1f25"> 346</a></span> <span class="preprocessor">#define MUTILS_ZERO_MEMORY(PTR) memset(&(PTR), 0, sizeof((PTR)))</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> </div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#af55d43b39d3f41cf090c138ed190ee6e"> 350</a></span> <span class="preprocessor">#define MUTILS_WCHR(STR) (reinterpret_cast<const wchar_t*>((STR).utf16()))</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a88b0902153ea537b12d86267af20eb3f"> 354</a></span> <span class="preprocessor">#define MUTILS_UTF8(STR) ((STR).toUtf8().constData())</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a04d63f6f60c90f8e3c4029824a7352b0"> 358</a></span> <span class="preprocessor">#define MUTILS_QSTR(STR) (QString::fromUtf16(reinterpret_cast<const unsigned short*>((STR))))</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a177ecbfe7701c2ac04bb8bdeb208773a"> 362</a></span> <span class="preprocessor">#define MUTILS_BOOL2STR(X) ((X) ? "1" : "0")</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8"> 366</a></span> <span class="preprocessor">#define MUTILS_NO_COPY(CLASS) \</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="preprocessor"> CLASS(const CLASS &) { throw "Copy constructor is disabled!"; } \</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> <span class="preprocessor"> CLASS &operator=(const CLASS &) { throw "Assignment operator is disabled!"; }</span></div><div class="ttc" id="namespace_m_utils_html_a2275e64c3c74dea855c39b66be67f705"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#a2275e64c3c74dea855c39b66be67f705">MUtils::available_codepages</a></div><div class="ttdeci">MUTILS_API QStringList available_codepages(const bool &noAliases=true)</div><div class="ttdoc">Retrieve a list of all available codepages. </div></div>
<div class="ttc" id="namespace_m_utils_html_ac583617546d5ae100ce7436546d9662c"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#ac583617546d5ae100ce7436546d9662c">MUtils::next_rand_str</a></div><div class="ttdeci">MUTILS_API QString next_rand_str(const bool &bLong=false)</div><div class="ttdoc">Generates a random string. </div></div>
<div class="ttc" id="namespace_m_utils_html_a5a14e75627eebd09efc37898d74c5ac6"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#a5a14e75627eebd09efc37898d74c5ac6">MUtils::remove_file</a></div><div class="ttdeci">MUTILS_API bool remove_file(const QString &fileName)</div><div class="ttdoc">Deletes the specified file. </div></div>
+<div class="ttc" id="namespace_m_utils_html_adb5da6435b27e10443060dd2550784f3"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#adb5da6435b27e10443060dd2550784f3">MUtils::clean_file_path</a></div><div class="ttdeci">MUTILS_API QString clean_file_path(const QString &path, const bool &pretty)</div><div class="ttdoc">Clean up a file path string. </div></div>
<div class="ttc" id="namespace_m_utils_html_a4d4c545ea06892f6487f15a48808564f"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#a4d4c545ea06892f6487f15a48808564f">MUtils::natural_string_sort</a></div><div class="ttdeci">MUTILS_API void natural_string_sort(QStringList &list, const bool bIgnoreCase)</div><div class="ttdoc">Sort a list of strings using "natural ordering" algorithm. </div></div>
<div class="ttc" id="namespace_m_utils_html_ad2a851b289ee66873d3a1ec86f5f34eb"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#ad2a851b289ee66873d3a1ec86f5f34eb">MUtils::regexp_parse_uint32</a></div><div class="ttdeci">MUTILS_API bool regexp_parse_uint32(const QRegExp &regexp, quint32 &value)</div><div class="ttdoc">Parse regular expression results. </div></div>
-<div class="ttc" id="namespace_m_utils_html_afd8eb699de88edd73e47fe2e41873385"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385">MUtils::clean_file_name</a></div><div class="ttdeci">MUTILS_API QString clean_file_name(const QString &name)</div><div class="ttdoc">Clean up a file name string. </div></div>
<div class="ttc" id="namespace_m_utils_html_aea4a212153b09b24b04f30ef5159f29b"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#aea4a212153b09b24b04f30ef5159f29b">MUtils::parity</a></div><div class="ttdeci">MUTILS_API bool parity(quint32 value)</div><div class="ttdoc">Computes the parity of the given unsigned 32-Bit value. </div></div>
<div class="ttc" id="namespace_m_utils_html_ad7edd4aece64faf3aa16c9509243608c"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#ad7edd4aece64faf3aa16c9509243608c">MUtils::next_rand_u64</a></div><div class="ttdeci">MUTILS_API quint64 next_rand_u64(void)</div><div class="ttdoc">Generates a random unsigned 64-Bit value. </div></div>
<div class="ttc" id="namespace_m_utils_html_a0ecb5d72f33a7b6feadd7deb8ed46cc3"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#a0ecb5d72f33a7b6feadd7deb8ed46cc3">MUtils::init_process</a></div><div class="ttdeci">MUTILS_API void init_process(QProcess &process, const QString &wokringDir, const bool bReplaceTempDir=true, const QStringList *const extraPaths=NULL)</div><div class="ttdoc">Initialize a given QProcess object. </div></div>
<div class="ttc" id="namespace_m_utils_html_a6118cf23d2b771fae1ad159c7ea6686a"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#a6118cf23d2b771fae1ad159c7ea6686a">MUtils::trim_right</a></div><div class="ttdeci">MUTILS_API QString & trim_right(QString &str)</div><div class="ttdoc">Remove trailing white-space characters. </div></div>
<div class="ttc" id="namespace_m_utils_html_a3f198156e8be91f3e74dd9ed69ffaa34"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#a3f198156e8be91f3e74dd9ed69ffaa34">MUtils::temp_folder</a></div><div class="ttdeci">MUTILS_API const QString & temp_folder(void)</div><div class="ttdoc">Rerieves the full path of the application&#39;s Temp folder. </div></div>
<div class="ttc" id="namespace_m_utils_html"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="ttdoc">Global MUtils namespace. </div><div class="ttdef"><b>Definition:</b> CPUFeatures.h:37</div></div>
+<div class="ttc" id="namespace_m_utils_html_aeb7783b8ecbe163501ce60dce8b6709f"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#aeb7783b8ecbe163501ce60dce8b6709f">MUtils::clean_file_name</a></div><div class="ttdeci">MUTILS_API QString clean_file_name(const QString &name, const bool &pretty)</div><div class="ttdoc">Clean up a file name string. </div></div>
<div class="ttc" id="namespace_m_utils_html_a1c9832c1d645a2c90e9bd52d57d843b3"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#a1c9832c1d645a2c90e9bd52d57d843b3">MUtils::next_rand_u32</a></div><div class="ttdeci">MUTILS_API quint32 next_rand_u32(void)</div><div class="ttdoc">Generates a random unsigned 32-Bit value. </div></div>
<div class="ttc" id="namespace_m_utils_html_af9afe3821ae9bef7bdf56a4183fdea0d"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#af9afe3821ae9bef7bdf56a4183fdea0d">MUtils::make_unique_file</a></div><div class="ttdeci">MUTILS_API QString make_unique_file(const QString &basePath, const QString &baseName, const QString &extension, const bool fancy=false)</div><div class="ttdoc">Generates a unique file name. </div></div>
<div class="ttc" id="namespace_m_utils_html_a4d451ddc82668d1298f2922f62474b5d"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#a4d451ddc82668d1298f2922f62474b5d">MUtils::remove_directory</a></div><div class="ttdeci">MUTILS_API bool remove_directory(const QString &folderPath, const bool &recursive)</div><div class="ttdoc">Recursively deletes the specified directory. </div></div>
<div class="ttc" id="namespace_m_utils_html_a29461116550863e8730f3f4ec479bbcb"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#a29461116550863e8730f3f4ec479bbcb">MUtils::make_temp_file</a></div><div class="ttdeci">MUTILS_API QString make_temp_file(const QString &basePath, const QString &extension, const bool placeholder=false)</div><div class="ttdoc">Generates a temporary file name. </div></div>
<div class="ttc" id="namespace_m_utils_html_a20b8fc56856ee904caaded756399e705"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#a20b8fc56856ee904caaded756399e705">MUtils::trim_left</a></div><div class="ttdeci">MUTILS_API QString & trim_left(QString &str)</div><div class="ttdoc">Remove leading white-space characters. </div></div>
-<div class="ttc" id="namespace_m_utils_html_ad801fab93087c31d764ad15295fe3a88"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88">MUtils::clean_file_path</a></div><div class="ttdeci">MUTILS_API QString clean_file_path(const QString &path)</div><div class="ttdoc">Clean up a file path string. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
<div class="title">UpdateChecker.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// MuldeR's Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright (C) 2004-2017 LoRd_MuldeR <MuldeR2@GMX.de></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// This library is free software; you can redistribute it and/or</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// modify it under the terms of the GNU Lesser General Public</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// License as published by the Free Software Foundation; either</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// version 2.1 of the License, or (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// This library is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// You should have received a copy of the GNU Lesser General Public</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// License along with this library; if not, write to the Free Software</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// http://www.gnu.org/licenses/lgpl-2.1.txt</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">//MUtils</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="../../d5/d3b/_global_8h.html">MUtils/Global.h</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//Qt</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <QThread></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <QDate></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="../../d1/d0d/class_m_utils_1_1_update_checker_info.html"> 35</a></span>  <span class="keyword">class </span>MUTILS_API <a class="code" href="../../d1/d0d/class_m_utils_1_1_update_checker_info.html">UpdateCheckerInfo</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">UpdateChecker</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="../../d1/d0d/class_m_utils_1_1_update_checker_info.html">UpdateCheckerInfo</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">void</span> resetInfo(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">bool</span> isComplete(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">const</span> quint32 &getBuildNo(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_buildNo; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> QDate &getBuildDate(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_buildDate; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> QString &getDownloadSite(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_downloadSite; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">const</span> QString &getDownloadAddress(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_downloadAddress; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">const</span> QString &getDownloadFilename(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_downloadFilename; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">const</span> QString &getDownloadFilecode(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_downloadFilecode; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">const</span> QString &getDownloadChecksum(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_downloadChecksum; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  quint32 m_buildNo;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  QDate m_buildDate;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  QString m_downloadSite;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  QString m_downloadAddress;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  QString m_downloadFilename;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  QString m_downloadFilecode;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  QString m_downloadChecksum;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// ----------------------------------------------------------------</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="../../d0/d8a/class_m_utils_1_1_update_checker.html"> 64</a></span>  <span class="keyword">class </span>MUTILS_API <a class="code" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">UpdateChecker</a> : <span class="keyword">public</span> QThread</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  Q_OBJECT</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">enum</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  UpdateStatus_NotStartedYet = 0,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  UpdateStatus_CheckingConnection = 1,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  UpdateStatus_FetchingUpdates = 2,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  UpdateStatus_CompletedUpdateAvailable = 3,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  UpdateStatus_CompletedNoUpdates = 4,</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  UpdateStatus_CompletedNewVersionOlder = 5,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  UpdateStatus_ErrorNoConnection = 6,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  UpdateStatus_ErrorConnectionTestFailed = 7,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  UpdateStatus_ErrorFetchUpdateInfo = 8</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  update_status_t;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">UpdateChecker</a>(<span class="keyword">const</span> QString &binWGet, <span class="keyword">const</span> QString &binNC, <span class="keyword">const</span> QString &binGnuPG, <span class="keyword">const</span> QString &binKeys, <span class="keyword">const</span> QString &applicationId, <span class="keyword">const</span> quint32 &installedBuildNo, <span class="keyword">const</span> <span class="keywordtype">bool</span> betaUpdates, <span class="keyword">const</span> <span class="keywordtype">bool</span> testMode = <span class="keyword">false</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  ~<a class="code" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">UpdateChecker</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> getUpdateStatus(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_status; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> getSuccess(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_success; };</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> getMaximumProgress(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_maxProgress; };</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> getCurrentProgress(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_progress; };</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">const</span> <a class="code" href="../../d1/d0d/class_m_utils_1_1_update_checker_info.html">UpdateCheckerInfo</a> *getUpdateInfo(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_updateInfo.data(); }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">void</span> run(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">void</span> checkForUpdates(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">void</span> testKnownHosts(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  signals:</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">void</span> statusChanged(<span class="keyword">const</span> <span class="keywordtype">int</span> status);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">void</span> progressChanged(<span class="keyword">const</span> <span class="keywordtype">int</span> progress);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">void</span> messageLogged(<span class="keyword">const</span> QString &text);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> m_maxProgress;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  QScopedPointer<UpdateCheckerInfo> m_updateInfo;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> m_betaUpdates;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> m_testMode;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">const</span> QString m_applicationId;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">const</span> quint32 m_installedBuildNo;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">const</span> QString m_binaryWGet;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">const</span> QString m_binaryNC;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">const</span> QString m_binaryGnuPG;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">const</span> QString m_binaryKeys;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keyword">volatile</span> <span class="keywordtype">bool</span> m_success;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">int</span> m_status;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordtype">int</span> m_progress;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> setStatus(<span class="keyword">const</span> <span class="keywordtype">int</span> status);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> setProgress(<span class="keyword">const</span> <span class="keywordtype">int</span> progress);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> log(<span class="keyword">const</span> QString &str1, <span class="keyword">const</span> QString &str2 = QString(), <span class="keyword">const</span> QString &str3 = QString(), <span class="keyword">const</span> QString &str4 = QString());</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordtype">bool</span> getUpdateInfo(<span class="keyword">const</span> QString &url, <span class="keyword">const</span> QString &outFileVers, <span class="keyword">const</span> QString &outFileSign);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordtype">bool</span> tryContactHost(<span class="keyword">const</span> QString &hostname);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordtype">bool</span> parseVersionInfo(<span class="keyword">const</span> QString &file, <a class="code" href="../../d1/d0d/class_m_utils_1_1_update_checker_info.html">UpdateCheckerInfo</a> *updateInfo);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordtype">bool</span> getFile(<span class="keyword">const</span> QString &url, <span class="keyword">const</span> QString &outFile, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxRedir = 5U, <span class="keywordtype">bool</span> *httpOk = NULL);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordtype">bool</span> getFile(<span class="keyword">const</span> QString &url, <span class="keyword">const</span> <span class="keywordtype">bool</span> forceIp4, <span class="keyword">const</span> QString &outFile, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxRedir = 5U, <span class="keywordtype">bool</span> *httpOk = NULL);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordtype">bool</span> checkSignature(<span class="keyword">const</span> QString &file, <span class="keyword">const</span> QString &signature);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordtype">bool</span> tryUpdateMirror(<a class="code" href="../../d1/d0d/class_m_utils_1_1_update_checker_info.html">UpdateCheckerInfo</a> *updateInfo, <span class="keyword">const</span> QString &url);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  };</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> }</div><div class="ttc" id="_global_8h_html"><div class="ttname"><a href="../../d5/d3b/_global_8h.html">Global.h</a></div><div class="ttdoc">This file contains miscellaneous functions that are generally useful for Qt-based applications...</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// MuldeR's Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright (C) 2004-2017 LoRd_MuldeR <MuldeR2@GMX.de></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// This library is free software; you can redistribute it and/or</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// modify it under the terms of the GNU Lesser General Public</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// License as published by the Free Software Foundation; either</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// version 2.1 of the License, or (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// This library is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// You should have received a copy of the GNU Lesser General Public</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// License along with this library; if not, write to the Free Software</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// http://www.gnu.org/licenses/lgpl-2.1.txt</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">//MUtils</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="../../d5/d3b/_global_8h.html">MUtils/Global.h</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//Qt</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <QThread></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <QDate></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="../../d1/d0d/class_m_utils_1_1_update_checker_info.html"> 35</a></span>  <span class="keyword">class </span>MUTILS_API <a class="code" href="../../d1/d0d/class_m_utils_1_1_update_checker_info.html">UpdateCheckerInfo</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">UpdateChecker</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="../../d1/d0d/class_m_utils_1_1_update_checker_info.html">UpdateCheckerInfo</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">void</span> resetInfo(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">bool</span> isComplete(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">const</span> quint32 &getBuildNo(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_buildNo; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> QDate &getBuildDate(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_buildDate; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> QString &getDownloadSite(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_downloadSite; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">const</span> QString &getDownloadAddress(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_downloadAddress; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">const</span> QString &getDownloadFilename(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_downloadFilename; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">const</span> QString &getDownloadFilecode(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_downloadFilecode; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">const</span> QString &getDownloadChecksum(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_downloadChecksum; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  quint32 m_buildNo;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  QDate m_buildDate;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  QString m_downloadSite;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  QString m_downloadAddress;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  QString m_downloadFilename;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  QString m_downloadFilecode;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  QString m_downloadChecksum;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// ----------------------------------------------------------------</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="../../d0/d8a/class_m_utils_1_1_update_checker.html"> 64</a></span>  <span class="keyword">class </span>MUTILS_API <a class="code" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">UpdateChecker</a> : <span class="keyword">public</span> QThread</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  Q_OBJECT</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">enum</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  UpdateStatus_NotStartedYet = 0,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  UpdateStatus_CheckingConnection = 1,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  UpdateStatus_FetchingUpdates = 2,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  UpdateStatus_CompletedUpdateAvailable = 3,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  UpdateStatus_CompletedNoUpdates = 4,</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  UpdateStatus_CompletedNewVersionOlder = 5,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  UpdateStatus_ErrorNoConnection = 6,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  UpdateStatus_ErrorConnectionTestFailed = 7,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  UpdateStatus_ErrorFetchUpdateInfo = 8,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  UpdateStatus_CancelledByUser = 9</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  update_status_t;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">UpdateChecker</a>(<span class="keyword">const</span> QString &binWGet, <span class="keyword">const</span> QString &binMCat, <span class="keyword">const</span> QString &binGnuPG, <span class="keyword">const</span> QString &binKeys, <span class="keyword">const</span> QString &applicationId, <span class="keyword">const</span> quint32 &installedBuildNo, <span class="keyword">const</span> <span class="keywordtype">bool</span> betaUpdates, <span class="keyword">const</span> <span class="keywordtype">bool</span> testMode = <span class="keyword">false</span>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  ~<a class="code" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">UpdateChecker</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> getUpdateStatus(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_status; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> getSuccess(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_success; };</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> getMaximumProgress(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_maxProgress; };</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> getCurrentProgress(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_progress; };</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">const</span> <a class="code" href="../../d1/d0d/class_m_utils_1_1_update_checker_info.html">UpdateCheckerInfo</a> *getUpdateInfo(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_updateInfo.data(); }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">void</span> cancel(<span class="keywordtype">void</span>) { m_cancelled = <span class="keyword">true</span>; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">public</span> slots:</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordtype">void</span> start(Priority = InheritPriority);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">void</span> run(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">void</span> checkForUpdates(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">void</span> testKnownHosts(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  signals:</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">void</span> statusChanged(<span class="keyword">const</span> <span class="keywordtype">int</span> status);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">void</span> progressChanged(<span class="keyword">const</span> <span class="keywordtype">int</span> progress);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">void</span> messageLogged(<span class="keyword">const</span> QString &text);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> m_maxProgress;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  QScopedPointer<UpdateCheckerInfo> m_updateInfo;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> m_betaUpdates;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> m_testMode;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">const</span> QString m_applicationId;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">const</span> quint32 m_installedBuildNo;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">const</span> QString m_binaryWGet;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">const</span> QString m_binaryMCat;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">const</span> QString m_binaryGnuPG;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">const</span> QString m_binaryKeys;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">volatile</span> <span class="keywordtype">bool</span> m_success;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">volatile</span> <span class="keywordtype">bool</span> m_cancelled;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordtype">int</span> m_status;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordtype">int</span> m_progress;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> setStatus(<span class="keyword">const</span> <span class="keywordtype">int</span> status);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> setProgress(<span class="keyword">const</span> <span class="keywordtype">int</span> progress);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> log(<span class="keyword">const</span> QString &str1, <span class="keyword">const</span> QString &str2 = QString(), <span class="keyword">const</span> QString &str3 = QString(), <span class="keyword">const</span> QString &str4 = QString());</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordtype">bool</span> getUpdateInfo(<span class="keyword">const</span> QString &url, <span class="keyword">const</span> QString &outFileVers, <span class="keyword">const</span> QString &outFileSign);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordtype">bool</span> tryContactHost(<span class="keyword">const</span> QString &hostname, <span class="keyword">const</span> <span class="keywordtype">int</span> &timeoutMsec);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordtype">bool</span> parseVersionInfo(<span class="keyword">const</span> QString &file, <a class="code" href="../../d1/d0d/class_m_utils_1_1_update_checker_info.html">UpdateCheckerInfo</a> *updateInfo);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordtype">bool</span> getFile(<span class="keyword">const</span> QString &url, <span class="keyword">const</span> QString &outFile, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxRedir = 5U);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordtype">bool</span> getFile(<span class="keyword">const</span> QString &url, <span class="keyword">const</span> <span class="keywordtype">bool</span> forceIp4, <span class="keyword">const</span> QString &outFile, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxRedir = 5U);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordtype">bool</span> checkSignature(<span class="keyword">const</span> QString &file, <span class="keyword">const</span> QString &signature);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordtype">bool</span> tryUpdateMirror(<a class="code" href="../../d1/d0d/class_m_utils_1_1_update_checker_info.html">UpdateCheckerInfo</a> *updateInfo, <span class="keyword">const</span> QString &url, <span class="keyword">const</span> <span class="keywordtype">bool</span> &quick);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  };</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> }</div><div class="ttc" id="_global_8h_html"><div class="ttname"><a href="../../d5/d3b/_global_8h.html">Global.h</a></div><div class="ttdoc">This file contains miscellaneous functions that are generally useful for Qt-based applications...</div></div>
<div class="ttc" id="class_m_utils_1_1_update_checker_info_html"><div class="ttname"><a href="../../d1/d0d/class_m_utils_1_1_update_checker_info.html">MUtils::UpdateCheckerInfo</a></div><div class="ttdef"><b>Definition:</b> UpdateChecker.h:35</div></div>
<div class="ttc" id="namespace_m_utils_html"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="ttdoc">Global MUtils namespace. </div><div class="ttdef"><b>Definition:</b> CPUFeatures.h:37</div></div>
<div class="ttc" id="class_m_utils_1_1_update_checker_html"><div class="ttname"><a href="../../d0/d8a/class_m_utils_1_1_update_checker.html">MUtils::UpdateChecker</a></div><div class="ttdef"><b>Definition:</b> UpdateChecker.h:64</div></div>
<div class="title">GUI.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// MuldeR's Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright (C) 2004-2017 LoRd_MuldeR <MuldeR2@GMX.de></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// This library is free software; you can redistribute it and/or</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// modify it under the terms of the GNU Lesser General Public</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// License as published by the Free Software Foundation; either</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// version 2.1 of the License, or (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// This library is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// You should have received a copy of the GNU Lesser General Public</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// License along with this library; if not, write to the Free Software</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// http://www.gnu.org/licenses/lgpl-2.1.txt</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">//MUtils</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="../../d5/d3b/_global_8h.html">MUtils/Global.h</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//Qt</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <QColor></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">//Forward Declaration</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>QIcon;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span>QWidget;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">namespace </span>GUI</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">typedef</span> <span class="keyword">enum</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  USER_EVENT = 1000, <span class="comment">/*QEvent::User*/</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  USER_EVENT_QUERYENDSESSION = USER_EVENT + 666,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  USER_EVENT_ENDSESSION = USER_EVENT + 667</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  user_events_t;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">typedef</span> <span class="keyword">enum</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  SYSCOLOR_TEXT = 1,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  SYSCOLOR_BACKGROUND = 2,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  SYSCOLOR_CAPTION = 3</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  system_color_t;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">//Broadcast message</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  MUTILS_API <span class="keywordtype">bool</span> broadcast(<span class="keywordtype">int</span> eventType, <span class="keyword">const</span> <span class="keywordtype">bool</span> &onlyToVisible);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">//Window icon</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  MUTILS_API <span class="keywordtype">bool</span> set_window_icon(QWidget *<span class="keyword">const</span> window, <span class="keyword">const</span> QIcon &icon, <span class="keyword">const</span> <span class="keywordtype">bool</span> bIsBigIcon);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">//Theme support</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  MUTILS_API <span class="keywordtype">bool</span> themes_enabled(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">//System menu</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  MUTILS_API <span class="keywordtype">bool</span> sysmenu_append(<span class="keyword">const</span> QWidget *<span class="keyword">const</span> win, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> identifier, <span class="keyword">const</span> QString &text);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  MUTILS_API <span class="keywordtype">bool</span> sysmenu_update(<span class="keyword">const</span> QWidget *<span class="keyword">const</span> win, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> identifier, <span class="keyword">const</span> QString &text);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  MUTILS_API <span class="keywordtype">bool</span> sysmenu_check_msg(<span class="keywordtype">void</span> *<span class="keyword">const</span> message, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &identifier);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">//Close button</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  MUTILS_API <span class="keywordtype">bool</span> enable_close_button(<span class="keyword">const</span> QWidget *<span class="keyword">const</span> win, <span class="keyword">const</span> <span class="keywordtype">bool</span> &bEnable);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">//Bring to front</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  MUTILS_API <span class="keywordtype">bool</span> bring_to_front(<span class="keyword">const</span> QWidget *<span class="keyword">const</span> window);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  MUTILS_API <span class="keywordtype">bool</span> bring_to_front(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> pid);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">//Sheet of glass</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  MUTILS_API <span class="keywordtype">bool</span> sheet_of_glass(QWidget *<span class="keyword">const</span> window);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  MUTILS_API <span class="keywordtype">bool</span> sheet_of_glass_update(QWidget *<span class="keyword">const</span> window);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">//System colors</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  MUTILS_API QColor system_color(<span class="keyword">const</span> <span class="keywordtype">int</span> &color_id);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">//Blink window</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  MUTILS_API <span class="keywordtype">void</span> blink_window(QWidget *<span class="keyword">const</span> poWindow, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &count = 10, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &delay = 150);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">//Force quit application</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  MUTILS_API <span class="keywordtype">void</span> force_quit(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="ttc" id="_global_8h_html"><div class="ttname"><a href="../../d5/d3b/_global_8h.html">Global.h</a></div><div class="ttdoc">This file contains miscellaneous functions that are generally useful for Qt-based applications...</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// MuldeR's Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright (C) 2004-2017 LoRd_MuldeR <MuldeR2@GMX.de></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// This library is free software; you can redistribute it and/or</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// modify it under the terms of the GNU Lesser General Public</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// License as published by the Free Software Foundation; either</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// version 2.1 of the License, or (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// This library is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// You should have received a copy of the GNU Lesser General Public</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// License along with this library; if not, write to the Free Software</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// http://www.gnu.org/licenses/lgpl-2.1.txt</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">//MUtils</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="../../d5/d3b/_global_8h.html">MUtils/Global.h</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//Qt</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <QColor></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">//Forward Declaration</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>QIcon;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span>QWidget;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">namespace </span>GUI</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">typedef</span> <span class="keyword">enum</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  USER_EVENT = 1000, <span class="comment">/*QEvent::User*/</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  USER_EVENT_QUERYENDSESSION = USER_EVENT + 666,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  USER_EVENT_ENDSESSION = USER_EVENT + 667</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  user_events_t;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">typedef</span> <span class="keyword">enum</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  SYSCOLOR_TEXT = 1,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  SYSCOLOR_BACKGROUND = 2,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  SYSCOLOR_CAPTION = 3</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  system_color_t;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">//Broadcast message</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  MUTILS_API <span class="keywordtype">bool</span> broadcast(<span class="keywordtype">int</span> eventType, <span class="keyword">const</span> <span class="keywordtype">bool</span> &onlyToVisible);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">//Window icon</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  MUTILS_API <span class="keywordtype">bool</span> set_window_icon(QWidget *<span class="keyword">const</span> window, <span class="keyword">const</span> QIcon &icon, <span class="keyword">const</span> <span class="keywordtype">bool</span> bIsBigIcon);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">//Theme support</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  MUTILS_API <span class="keywordtype">bool</span> themes_enabled(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">//DPI information</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  MUTILS_API <span class="keywordtype">double</span> dpi_scale(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  MUTILS_API <span class="keywordtype">bool</span> scale_widget(QWidget *<span class="keyword">const</span> widget, <span class="keyword">const</span> <span class="keywordtype">bool</span> recenter = <span class="keyword">true</span>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  MUTILS_API <span class="keywordtype">bool</span> center_widget(QWidget *<span class="keyword">const</span> widget);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">//System menu</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  MUTILS_API <span class="keywordtype">bool</span> sysmenu_append(<span class="keyword">const</span> QWidget *<span class="keyword">const</span> win, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> identifier, <span class="keyword">const</span> QString &text);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  MUTILS_API <span class="keywordtype">bool</span> sysmenu_update(<span class="keyword">const</span> QWidget *<span class="keyword">const</span> win, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> identifier, <span class="keyword">const</span> QString &text);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  MUTILS_API <span class="keywordtype">bool</span> sysmenu_check_msg(<span class="keywordtype">void</span> *<span class="keyword">const</span> message, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &identifier);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">//Close button</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  MUTILS_API <span class="keywordtype">bool</span> enable_close_button(<span class="keyword">const</span> QWidget *<span class="keyword">const</span> win, <span class="keyword">const</span> <span class="keywordtype">bool</span> &bEnable);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">//Bring to front</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  MUTILS_API <span class="keywordtype">bool</span> bring_to_front(<span class="keyword">const</span> QWidget *<span class="keyword">const</span> window);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  MUTILS_API <span class="keywordtype">bool</span> bring_to_front(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> pid);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">//Sheet of glass</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  MUTILS_API <span class="keywordtype">bool</span> sheet_of_glass(QWidget *<span class="keyword">const</span> window);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  MUTILS_API <span class="keywordtype">bool</span> sheet_of_glass_update(QWidget *<span class="keyword">const</span> window);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">//System colors</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  MUTILS_API QColor system_color(<span class="keyword">const</span> <span class="keywordtype">int</span> &color_id);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">//Blink window</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  MUTILS_API <span class="keywordtype">void</span> blink_window(QWidget *<span class="keyword">const</span> poWindow, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &count = 10, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &delay = 150);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">//Force quit application</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  MUTILS_API <span class="keywordtype">void</span> force_quit(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="ttc" id="_global_8h_html"><div class="ttname"><a href="../../d5/d3b/_global_8h.html">Global.h</a></div><div class="ttdoc">This file contains miscellaneous functions that are generally useful for Qt-based applications...</div></div>
<div class="ttc" id="namespace_m_utils_html"><div class="ttname"><a href="../../d3/da6/namespace_m_utils.html">MUtils</a></div><div class="ttdoc">Global MUtils namespace. </div><div class="ttdef"><b>Definition:</b> CPUFeatures.h:37</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<h3><a id="index_c"></a>- c -</h3><ul>
<li>clean_file_name()
-: <a class="el" href="d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385">MUtils</a>
+: <a class="el" href="d3/da6/namespace_m_utils.html#aeb7783b8ecbe163501ce60dce8b6709f">MUtils</a>
</li>
<li>clean_file_path()
-: <a class="el" href="d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88">MUtils</a>
+: <a class="el" href="d3/da6/namespace_m_utils.html#adb5da6435b27e10443060dd2550784f3">MUtils</a>
</li>
<li>cpu_info_t
: <a class="el" href="d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#a8b80fb34713dbc70a63ae5cd48b0630e">MUtils::CPUFetaures</a>
: <a class="el" href="d3/da6/namespace_m_utils.html#a2275e64c3c74dea855c39b66be67f705">MUtils</a>
</li>
<li>clean_file_name()
-: <a class="el" href="d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385">MUtils</a>
+: <a class="el" href="d3/da6/namespace_m_utils.html#aeb7783b8ecbe163501ce60dce8b6709f">MUtils</a>
</li>
<li>clean_file_path()
-: <a class="el" href="d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88">MUtils</a>
+: <a class="el" href="d3/da6/namespace_m_utils.html#adb5da6435b27e10443060dd2550784f3">MUtils</a>
</li>
<li>detect()
: <a class="el" href="d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#a5f26f530b11eee62845fb45fba6a32fc">MUtils::CPUFetaures</a>
var searchData=
[
- ['clean_5ffile_5fname',['clean_file_name',['../d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385',1,'MUtils']]],
- ['clean_5ffile_5fpath',['clean_file_path',['../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88',1,'MUtils']]],
+ ['clean_5ffile_5fname',['clean_file_name',['../d3/da6/namespace_m_utils.html#aeb7783b8ecbe163501ce60dce8b6709f',1,'MUtils']]],
+ ['clean_5ffile_5fpath',['clean_file_path',['../d3/da6/namespace_m_utils.html#adb5da6435b27e10443060dd2550784f3',1,'MUtils']]],
['count',['count',['../dd/de2/struct_m_utils_1_1_c_p_u_fetaures_1_1__cpu__info__t.html#a7861529c47568141daa37810ebb499ea',1,'MUtils::CPUFetaures::_cpu_info_t']]],
['cpu_5finfo_5ft',['cpu_info_t',['../d3/d02/namespace_m_utils_1_1_c_p_u_fetaures.html#a8b80fb34713dbc70a63ae5cd48b0630e',1,'MUtils::CPUFetaures']]],
['cpufeatures_2eh',['CPUFeatures.h',['../d2/db5/_c_p_u_features_8h.html',1,'']]],
var searchData=
[
- ['clean_5ffile_5fname',['clean_file_name',['../d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385',1,'MUtils']]],
- ['clean_5ffile_5fpath',['clean_file_path',['../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88',1,'MUtils']]],
+ ['clean_5ffile_5fname',['clean_file_name',['../d3/da6/namespace_m_utils.html#aeb7783b8ecbe163501ce60dce8b6709f',1,'MUtils']]],
+ ['clean_5ffile_5fpath',['clean_file_path',['../d3/da6/namespace_m_utils.html#adb5da6435b27e10443060dd2550784f3',1,'MUtils']]],
['create',['create',['../d2/dad/_hash_8h.html#a330b73d6927d6cd95892712f9396f40e',1,'MUtils::Hash']]]
];
*
* This function ensures that the given string is a valid file (or directory) name. It does so by replacing any illegal characters, i.e. any characters *not* allowed in file names (which explicitly *includes* directory separators). Furthermore, the function will trim/remove specific characters that are *not* allowed directly at the beginning or end of a file name. Finally, the function takes care of special "reserved" file names that are forbidden by the file system. You can use this function to convert user inputs into a valid file name.
*
- * \param list A read-only reference to the QString holding the original, potentially invalid file name.
+ * \param name A read-only reference to the QString holding the original, potentially invalid file name.
+ *
+ * \param pretty If set to `true`, the function tries to generate a "pretty" file name from the given file name. Otherwise, the function simply replaces each forbidden file name character by an underscore character.
*
* \return The function returns a QString holding a valid file name. If, however, the input string was empty or contained only white-space characters, the returned sting can be empty.
*/
- MUTILS_API QString clean_file_name(const QString &name);
+ MUTILS_API QString clean_file_name(const QString &name, const bool &pretty);
/**
* \brief Clean up a file path string
*
* This function ensures that the given string is a valid file (or directory) path. It does so by replacing any illegal characters, i.e. any characters *not* allowed in file paths. Directory separators are preserved, but they will be "canonicalized". Furthermore, in each path component, the function will trim/remove specific characters that are *not* allowed directly at the beginning or end of a path component. Finally, the function takes care of special "reserved" file names that are forbidden by the file system. You can use this function to convert user inputs into a valid file path.
*
- * \param list A read-only reference to the QString holding the original, potentially invalid file path.
+ * \param path A read-only reference to the QString holding the original, potentially invalid file path.
+ *
+ * \param pretty If set to `true`, the function tries to generate "pretty" file names from the given file names. Otherwise, the function simply replaces each forbidden file name character by an underscore character.
*
* \return The function returns a QString holding a valid file path. If, however, the input string was empty or contained only white-space characters, the returned sting can be empty.
*/
- MUTILS_API QString clean_file_path(const QString &path);
+ MUTILS_API QString clean_file_path(const QString &path, const bool &pretty);
/**
* \brief Parse regular expression results
// CLEAN FILE PATH
///////////////////////////////////////////////////////////////////////////////
-QString MUtils::clean_file_name(const QString &name)
+static QMutex g_clean_file_name_mutex;
+static QScopedPointer<const QList<QPair<QRegExp,QString>>> g_clean_file_name_regex;
+
+static void clean_file_name_make_pretty(QString &str)
+{
+ static const struct { const char *p; const char *r; } PATTERN[] =
+ {
+ { "^\\s*\"([^\"]*)\"\\s*$", "\\1" }, //Remove straight double quotes around the whole string
+ { "\"([^\"]*)\"", "\xE2\x80\x9C\\1\xE2\x80\x9D" }, //Replace remaining pairs of straight double quotes with opening/closing double quote
+ { "^[\\\\/:]+([^\\\\/:]+.*)$", "\\1" }, //Remove leading slash, backslash and colon characters
+ { "^(.*[^\\\\/:]+)[\\\\/:]+$", "\\1" }, //Remove trailing slash, backslash and colon characters
+ { "(\\s*[\\\\/:]\\s*)+", " - " }, //Replace any slash, backslash or colon character that appears in the middle
+ { NULL, NULL }
+ };
+
+ QMutexLocker locker(&g_clean_file_name_mutex);
+
+ if (g_clean_file_name_regex.isNull())
+ {
+ QScopedPointer<QList<QPair<QRegExp, QString>>> list(new QList<QPair<QRegExp, QString>>());
+ for (size_t i = 0; PATTERN[i].p; ++i)
+ {
+ list->append(qMakePair(QRegExp(QString::fromUtf8(PATTERN[i].p), Qt::CaseInsensitive), PATTERN[i].r ? QString::fromUtf8(PATTERN[i].r) : QString()));
+ }
+ g_clean_file_name_regex.reset(list.take());
+ }
+
+ bool keepOnGoing = !str.isEmpty();
+ while(keepOnGoing)
+ {
+ const QString prev = str;
+ keepOnGoing = false;
+ for (QList<QPair<QRegExp, QString>>::ConstIterator iter = g_clean_file_name_regex->constBegin(); iter != g_clean_file_name_regex->constEnd(); ++iter)
+ {
+ str.replace(iter->first, iter->second);
+ if (str.compare(prev))
+ {
+ keepOnGoing = !str.isEmpty();
+ break;
+ }
+ }
+ str = str.simplified();
+ }
+}
+
+QString MUtils::clean_file_name(const QString &name, const bool &pretty)
{
static const QLatin1Char REPLACEMENT_CHAR('_');
static const char FILENAME_ILLEGAL_CHARS[] = "<>:\"/\\|?*";
};
QString result(name);
- if (result.contains(QLatin1Char('"')))
+ if (pretty)
{
- QRegExp quoted("\"(.+)\"");
- quoted.setMinimal(true);
- result.replace(quoted, "``\\1ยดยด");
+ clean_file_name_make_pretty(result);
}
for(QString::Iterator iter = result.begin(); iter != result.end(); iter++)
return qMakePair(QString(), posixPath);
}
-QString MUtils::clean_file_path(const QString &path)
+QString MUtils::clean_file_path(const QString &path, const bool &pretty)
{
const QPair<QString, QString> prefix = clean_file_path_get_prefix(path);
{
continue; //handle case "c:\"
}
- parts[i] = MUtils::clean_file_name(parts[i]);
+ parts[i] = MUtils::clean_file_name(parts[i], pretty);
}
const QString cleanPath = parts.join(QLatin1String("/"));