OSDN Git Service

Added option for creating "pretty" file names to clean_file_name_make_pretty() function.
authorLoRd_MuldeR <mulder2@gmx.de>
Sun, 9 Apr 2017 17:09:16 +0000 (19:09 +0200)
committerLoRd_MuldeR <mulder2@gmx.de>
Sun, 9 Apr 2017 17:09:16 +0000 (19:09 +0200)
15 files changed:
docs/d0/d8a/class_m_utils_1_1_update_checker.html
docs/d2/d7d/class_m_utils_1_1_update_checker-members.html
docs/d2/dad/_hash_8h_source.html
docs/d3/da6/namespace_m_utils.html
docs/d4/d85/_job_object_8h_source.html
docs/d5/d3b/_global_8h.html
docs/d5/d3b/_global_8h_source.html
docs/d6/d83/_update_checker_8h_source.html
docs/da/d5d/_g_u_i_8h_source.html
docs/namespacemembers.html
docs/namespacemembers_func.html
docs/search/all_3.js
docs/search/functions_1.js
include/MUtils/Global.h
src/Global.cpp

index c2c9734..0153c64 100644 (file)
@@ -65,6 +65,7 @@ $(function() {
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> &#124;
+<a href="#pub-slots">Public Slots</a> &#124;
 <a href="#signals">Signals</a> &#124;
 <a href="#pub-methods">Public Member Functions</a> &#124;
 <a href="#pub-attribs">Public Attributes</a> &#124;
@@ -96,11 +97,18 @@ Public Types</h2></td></tr>
 <b>UpdateStatus_ErrorNoConnection</b> = 6, 
 <b>UpdateStatus_ErrorConnectionTestFailed</b> = 7, 
 <br />
-&#160;&#160;<b>UpdateStatus_ErrorFetchUpdateInfo</b> = 8
+&#160;&#160;<b>UpdateStatus_ErrorFetchUpdateInfo</b> = 8, 
+<b>UpdateStatus_CancelledByUser</b> = 9
 <br />
  }</td></tr>
 <tr class="separator:aff186e28bb0b6050d9a9224657d0c6a3"><td class="memSeparator" colspan="2">&#160;</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&#160;</td><td class="memItemRight" valign="bottom"><b>start</b> (Priority=InheritPriority)</td></tr>
+<tr class="separator:add6f1f5bd1dada7fc989c84e597ac4d7"><td class="memSeparator" colspan="2">&#160;</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>
@@ -115,9 +123,9 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>messageLogged</b> (co
 </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>
-&#160;</td><td class="memItemRight" valign="bottom"><b>UpdateChecker</b> (const QString &amp;binWGet, const QString &amp;binNC, const QString &amp;binGnuPG, const QString &amp;binKeys, const QString &amp;applicationId, const quint32 &amp;installedBuildNo, const bool betaUpdates, const bool testMode=false)</td></tr>
-<tr class="separator:a31feb1a3987f97b62217701ac4f5bc46"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4514c18f67d6b800a6102f251255cef5"><td class="memItemLeft" align="right" valign="top"><a id="a4514c18f67d6b800a6102f251255cef5"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>UpdateChecker</b> (const QString &amp;binWGet, const QString &amp;binMCat, const QString &amp;binGnuPG, const QString &amp;binKeys, const QString &amp;applicationId, const quint32 &amp;installedBuildNo, const bool betaUpdates, const bool testMode=false)</td></tr>
+<tr class="separator:a4514c18f67d6b800a6102f251255cef5"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a50f6b68b977f213cdc812d3634519cb1"><td class="memItemLeft" align="right" valign="top"><a id="a50f6b68b977f213cdc812d3634519cb1"></a>
 const int&#160;</td><td class="memItemRight" valign="bottom"><b>getUpdateStatus</b> (void) const</td></tr>
 <tr class="separator:a50f6b68b977f213cdc812d3634519cb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -133,6 +141,9 @@ const int&#160;</td><td class="memItemRight" valign="bottom"><b>getCurrentProgre
 <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> *&#160;</td><td class="memItemRight" valign="bottom"><b>getUpdateInfo</b> (void) const</td></tr>
 <tr class="separator:afd219fb3d8223dae6a6b80765683e5b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a166ded79a9b92116db7d22cef73850fc"><td class="memItemLeft" align="right" valign="top"><a id="a166ded79a9b92116db7d22cef73850fc"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>cancel</b> (void)</td></tr>
+<tr class="separator:a166ded79a9b92116db7d22cef73850fc"><td class="memSeparator" colspan="2">&#160;</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>
index b9bf2fa..2a308e4 100644 (file)
@@ -70,29 +70,32 @@ $(function() {
 
 <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 &amp;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 &amp;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 &amp;binWGet, const QString &amp;binNC, const QString &amp;binGnuPG, const QString &amp;binKeys, const QString &amp;applicationId, const quint32 &amp;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 &amp;binWGet, const QString &amp;binMCat, const QString &amp;binGnuPG, const QString &amp;binKeys, const QString &amp;applicationId, const quint32 &amp;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>
index f7580e5..5fb4967 100644 (file)
@@ -73,7 +73,7 @@ $(function() {
 <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 &amp;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>
index 1972cfe..a2e94cf 100644 (file)
@@ -144,12 +144,12 @@ Functions</h2></td></tr>
 <tr class="memitem:a4d4c545ea06892f6487f15a48808564f"><td class="memItemLeft" align="right" valign="top">MUTILS_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#a4d4c545ea06892f6487f15a48808564f">natural_string_sort</a> (QStringList &amp;list, const bool bIgnoreCase)</td></tr>
 <tr class="memdesc:a4d4c545ea06892f6487f15a48808564f"><td class="mdescLeft">&#160;</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">&#160;</td></tr>
-<tr class="memitem:afd8eb699de88edd73e47fe2e41873385"><td class="memItemLeft" align="right" valign="top">MUTILS_API QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385">clean_file_name</a> (const QString &amp;name)</td></tr>
-<tr class="memdesc:afd8eb699de88edd73e47fe2e41873385"><td class="mdescLeft">&#160;</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">&#160;</td></tr>
-<tr class="memitem:ad801fab93087c31d764ad15295fe3a88"><td class="memItemLeft" align="right" valign="top">MUTILS_API QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88">clean_file_path</a> (const QString &amp;path)</td></tr>
-<tr class="memdesc:ad801fab93087c31d764ad15295fe3a88"><td class="mdescLeft">&#160;</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">&#160;</td></tr>
+<tr class="memitem:aeb7783b8ecbe163501ce60dce8b6709f"><td class="memItemLeft" align="right" valign="top">MUTILS_API QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#aeb7783b8ecbe163501ce60dce8b6709f">clean_file_name</a> (const QString &amp;name, const bool &amp;pretty)</td></tr>
+<tr class="memdesc:aeb7783b8ecbe163501ce60dce8b6709f"><td class="mdescLeft">&#160;</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">&#160;</td></tr>
+<tr class="memitem:adb5da6435b27e10443060dd2550784f3"><td class="memItemLeft" align="right" valign="top">MUTILS_API QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#adb5da6435b27e10443060dd2550784f3">clean_file_path</a> (const QString &amp;path, const bool &amp;pretty)</td></tr>
+<tr class="memdesc:adb5da6435b27e10443060dd2550784f3"><td class="mdescLeft">&#160;</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">&#160;</td></tr>
 <tr class="memitem:ad2a851b289ee66873d3a1ec86f5f34eb"><td class="memItemLeft" align="right" valign="top">MUTILS_API bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#ad2a851b289ee66873d3a1ec86f5f34eb">regexp_parse_uint32</a> (const QRegExp &amp;regexp, quint32 &amp;value)</td></tr>
 <tr class="memdesc:ad2a851b289ee66873d3a1ec86f5f34eb"><td class="mdescLeft">&#160;</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">&#160;</td></tr>
@@ -201,8 +201,8 @@ class MUTILS_API&#160;</td><td class="memItemRight" valign="bottom"><b>Taskbar7_
 
 </div>
 </div>
-<a id="afd8eb699de88edd73e47fe2e41873385"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#afd8eb699de88edd73e47fe2e41873385">&sect;&nbsp;</a></span>clean_file_name()</h2>
+<a id="aeb7783b8ecbe163501ce60dce8b6709f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aeb7783b8ecbe163501ce60dce8b6709f">&sect;&nbsp;</a></span>clean_file_name()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -211,8 +211,18 @@ class MUTILS_API&#160;</td><td class="memItemRight" valign="bottom"><b>Taskbar7_
           <td class="memname">MUTILS_API QString MUtils::clean_file_name </td>
           <td>(</td>
           <td class="paramtype">const QString &amp;&#160;</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 &amp;&#160;</td>
+          <td class="paramname"><em>pretty</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
         </tr>
       </table>
 </div><div class="memdoc">
@@ -221,7 +231,8 @@ class MUTILS_API&#160;</td><td class="memItemRight" valign="bottom"><b>Taskbar7_
 <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>
@@ -229,8 +240,8 @@ class MUTILS_API&#160;</td><td class="memItemRight" valign="bottom"><b>Taskbar7_
 
 </div>
 </div>
-<a id="ad801fab93087c31d764ad15295fe3a88"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ad801fab93087c31d764ad15295fe3a88">&sect;&nbsp;</a></span>clean_file_path()</h2>
+<a id="adb5da6435b27e10443060dd2550784f3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adb5da6435b27e10443060dd2550784f3">&sect;&nbsp;</a></span>clean_file_path()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -239,8 +250,18 @@ class MUTILS_API&#160;</td><td class="memItemRight" valign="bottom"><b>Taskbar7_
           <td class="memname">MUTILS_API QString MUtils::clean_file_path </td>
           <td>(</td>
           <td class="paramtype">const QString &amp;&#160;</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 &amp;&#160;</td>
+          <td class="paramname"><em>pretty</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
         </tr>
       </table>
 </div><div class="memdoc">
@@ -249,7 +270,8 @@ class MUTILS_API&#160;</td><td class="memItemRight" valign="bottom"><b>Taskbar7_
 <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>
index 680e9bf..254f51e 100644 (file)
@@ -70,7 +70,7 @@ $(function() {
 <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>&#160;<span class="comment">// MuldeR&#39;s Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// Copyright (C) 2004-2017 LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<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>&#160;<span class="comment"></span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d5/d3b/_global_8h.html">MUtils/Global.h</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="keyword">class </span>QProcess;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<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>&#160;{</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>&#160;    <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>&#160;    {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        <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>&#160;        </div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;        ~<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>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;        <span class="keywordtype">bool</span> isObjectCreated(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;        </div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        <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>&#160;        </div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        <span class="keywordtype">bool</span> terminateJob(<span class="keyword">const</span> quint32 &amp;exitCode);</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;        uintptr_t m_jobPtr;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        <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>&#160;    };</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;}</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>
index a24e410..b2ad6be 100644 (file)
@@ -165,12 +165,12 @@ Functions</h2></td></tr>
 <tr class="memitem:a4d4c545ea06892f6487f15a48808564f"><td class="memItemLeft" align="right" valign="top">MUTILS_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#a4d4c545ea06892f6487f15a48808564f">MUtils::natural_string_sort</a> (QStringList &amp;list, const bool bIgnoreCase)</td></tr>
 <tr class="memdesc:a4d4c545ea06892f6487f15a48808564f"><td class="mdescLeft">&#160;</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">&#160;</td></tr>
-<tr class="memitem:afd8eb699de88edd73e47fe2e41873385"><td class="memItemLeft" align="right" valign="top">MUTILS_API QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385">MUtils::clean_file_name</a> (const QString &amp;name)</td></tr>
-<tr class="memdesc:afd8eb699de88edd73e47fe2e41873385"><td class="mdescLeft">&#160;</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">&#160;</td></tr>
-<tr class="memitem:ad801fab93087c31d764ad15295fe3a88"><td class="memItemLeft" align="right" valign="top">MUTILS_API QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88">MUtils::clean_file_path</a> (const QString &amp;path)</td></tr>
-<tr class="memdesc:ad801fab93087c31d764ad15295fe3a88"><td class="mdescLeft">&#160;</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">&#160;</td></tr>
+<tr class="memitem:aeb7783b8ecbe163501ce60dce8b6709f"><td class="memItemLeft" align="right" valign="top">MUTILS_API QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#aeb7783b8ecbe163501ce60dce8b6709f">MUtils::clean_file_name</a> (const QString &amp;name, const bool &amp;pretty)</td></tr>
+<tr class="memdesc:aeb7783b8ecbe163501ce60dce8b6709f"><td class="mdescLeft">&#160;</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">&#160;</td></tr>
+<tr class="memitem:adb5da6435b27e10443060dd2550784f3"><td class="memItemLeft" align="right" valign="top">MUTILS_API QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#adb5da6435b27e10443060dd2550784f3">MUtils::clean_file_path</a> (const QString &amp;path, const bool &amp;pretty)</td></tr>
+<tr class="memdesc:adb5da6435b27e10443060dd2550784f3"><td class="mdescLeft">&#160;</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">&#160;</td></tr>
 <tr class="memitem:ad2a851b289ee66873d3a1ec86f5f34eb"><td class="memItemLeft" align="right" valign="top">MUTILS_API bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da6/namespace_m_utils.html#ad2a851b289ee66873d3a1ec86f5f34eb">MUtils::regexp_parse_uint32</a> (const QRegExp &amp;regexp, quint32 &amp;value)</td></tr>
 <tr class="memdesc:ad2a851b289ee66873d3a1ec86f5f34eb"><td class="mdescLeft">&#160;</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">&#160;</td></tr>
index c12cf9e..84321cf 100644 (file)
@@ -67,24 +67,24 @@ $(function() {
 <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>&#160;<span class="comment">// MuldeR&#39;s Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// Copyright (C) 2004-2017 LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<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>&#160;<span class="comment"></span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;QString&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">//Forward Declarations</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="keyword">class </span>QProcess;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">//MUtils API</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#   ifdef MUTILS_DLL_EXPORT</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#       define MUTILS_API __declspec(dllexport)</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#   else</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#       ifndef MUTILS_STATIC_LIB</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#           define MUTILS_API __declspec(dllimport)</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#       else</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<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>&#160;<span class="preprocessor">#       endif</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#   endif</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#   define MUTILS_API</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#define MUTILS_MAKE_STRING_HELPER(X) #X</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<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>&#160;<span class="preprocessor">#define MUTILS_COMPILER_WARNING(TXT) __pragma(message(__FILE__ &quot;(&quot; MUTILS_MAKE_STRING(__LINE__) &quot;) : warning: &quot; TXT))</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment">//Check Debug Flags</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#if defined(_DEBUG) || defined(DEBUG) || (!defined(NDEBUG))</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">#   define MUTILS_DEBUG (1)</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<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>&#160;<span class="preprocessor">#       error Inconsistent DEBUG flags have been detected!</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">#   endif</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor">#   define MUTILS_DEBUG (0)</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<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>&#160;<span class="preprocessor">#       error Inconsistent DEBUG flags have been detected!</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="preprocessor">#   endif</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="comment">//Check CPU options</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; (!defined(__INTELLISENSE__)) &amp;&amp; (!defined(_M_X64)) &amp;&amp; defined(_M_IX86_FP)</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">    #if (_M_IX86_FP != 0)</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<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>&#160;<span class="preprocessor">    #endif</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<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>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    MUTILS_API <span class="keyword">const</span> QString&amp; <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>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    MUTILS_API <span class="keywordtype">void</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a0ecb5d72f33a7b6feadd7deb8ed46cc3">init_process</a>(QProcess &amp;process, <span class="keyword">const</span> QString &amp;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>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    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>&#160;    </div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    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>&#160;    </div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    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> &amp;bLong = <span class="keyword">false</span>);</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a29461116550863e8730f3f4ec479bbcb">make_temp_file</a>(<span class="keyword">const</span> QString &amp;basePath, <span class="keyword">const</span> QString &amp;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>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#af9afe3821ae9bef7bdf56a4183fdea0d">make_unique_file</a>(<span class="keyword">const</span> QString &amp;basePath, <span class="keyword">const</span> QString &amp;baseName, <span class="keyword">const</span> QString &amp;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>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    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>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    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 &amp;fileName);</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    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 &amp;folderPath, <span class="keyword">const</span> <span class="keywordtype">bool</span> &amp;recursive);</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    MUTILS_API QString&amp; <a class="code" href="../../d3/da6/namespace_m_utils.html#a6118cf23d2b771fae1ad159c7ea6686a">trim_right</a>(QString &amp;str);</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    MUTILS_API QString&amp; <a class="code" href="../../d3/da6/namespace_m_utils.html#a20b8fc56856ee904caaded756399e705">trim_left</a>(QString &amp;str);</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a6118cf23d2b771fae1ad159c7ea6686a">trim_right</a>(<span class="keyword">const</span> QString &amp;str);</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a20b8fc56856ee904caaded756399e705">trim_left</a>(<span class="keyword">const</span> QString &amp;str);</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    MUTILS_API <span class="keywordtype">void</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a4d4c545ea06892f6487f15a48808564f">natural_string_sort</a>(QStringList &amp;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>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#afd8eb699de88edd73e47fe2e41873385">clean_file_name</a>(<span class="keyword">const</span> QString &amp;name);</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#ad801fab93087c31d764ad15295fe3a88">clean_file_path</a>(<span class="keyword">const</span> QString &amp;path);</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;    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 &amp;regexp, quint32 &amp;value);</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    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 &amp;regexp, quint32 *values, <span class="keyword">const</span> <span class="keywordtype">size_t</span> &amp;count);</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;    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> &amp;noAliases = <span class="keyword">true</span>);</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    <span class="comment">//Internal</span></div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    <span class="keyword">namespace </span>Internal</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    {</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;        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>&#160;        <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> s_selfTest = selfTest(__DATE__ <span class="stringliteral">&quot;@&quot;</span> __TIME__, MUTILS_DEBUG);</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    }</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;}</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#ad42b1946a83df3bd76734d5ab691fd0d">  334</a></span>&#160;<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>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#aa544a37b80f1ab9d86f439a7666e9aa8">  338</a></span>&#160;<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>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a1fe39de37351efa3ca46bdc8653e1f25">  342</a></span>&#160;<span class="preprocessor">#define MUTILS_ZERO_MEMORY(PTR) memset(&amp;(PTR), 0, sizeof((PTR)))</span></div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#af55d43b39d3f41cf090c138ed190ee6e">  346</a></span>&#160;<span class="preprocessor">#define MUTILS_WCHR(STR) (reinterpret_cast&lt;const wchar_t*&gt;((STR).utf16()))</span></div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a88b0902153ea537b12d86267af20eb3f">  350</a></span>&#160;<span class="preprocessor">#define MUTILS_UTF8(STR) ((STR).toUtf8().constData())</span></div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a04d63f6f60c90f8e3c4029824a7352b0">  354</a></span>&#160;<span class="preprocessor">#define MUTILS_QSTR(STR) (QString::fromUtf16(reinterpret_cast&lt;const unsigned short*&gt;((STR))))</span></div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a177ecbfe7701c2ac04bb8bdeb208773a">  358</a></span>&#160;<span class="preprocessor">#define MUTILS_BOOL2STR(X) ((X) ? &quot;1&quot; : &quot;0&quot;)</span></div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8">  362</a></span>&#160;<span class="preprocessor">#define MUTILS_NO_COPY(CLASS) \</span></div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;<span class="preprocessor">    CLASS(const CLASS &amp;) { throw &quot;Copy constructor is disabled!&quot;; } \</span></div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;<span class="preprocessor">    CLASS &amp;operator=(const CLASS &amp;) { throw &quot;Assignment operator is disabled!&quot;; }</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 &amp;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>&#160;<span class="comment">// MuldeR&#39;s Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// Copyright (C) 2004-2017 LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<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>&#160;<span class="comment"></span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;QString&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">//Forward Declarations</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="keyword">class </span>QProcess;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">//MUtils API</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#   ifdef MUTILS_DLL_EXPORT</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#       define MUTILS_API __declspec(dllexport)</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#   else</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#       ifndef MUTILS_STATIC_LIB</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#           define MUTILS_API __declspec(dllimport)</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#       else</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<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>&#160;<span class="preprocessor">#       endif</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#   endif</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#   define MUTILS_API</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#define MUTILS_MAKE_STRING_HELPER(X) #X</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<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>&#160;<span class="preprocessor">#define MUTILS_COMPILER_WARNING(TXT) __pragma(message(__FILE__ &quot;(&quot; MUTILS_MAKE_STRING(__LINE__) &quot;) : warning: &quot; TXT))</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment">//Check Debug Flags</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#if defined(_DEBUG) || defined(DEBUG) || (!defined(NDEBUG))</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">#   define MUTILS_DEBUG (1)</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<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>&#160;<span class="preprocessor">#       error Inconsistent DEBUG flags have been detected!</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">#   endif</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor">#   define MUTILS_DEBUG (0)</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<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>&#160;<span class="preprocessor">#       error Inconsistent DEBUG flags have been detected!</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="preprocessor">#   endif</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="comment">//Check CPU options</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; (!defined(__INTELLISENSE__)) &amp;&amp; (!defined(_M_X64)) &amp;&amp; defined(_M_IX86_FP)</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">    #if (_M_IX86_FP != 0)</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<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>&#160;<span class="preprocessor">    #endif</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<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>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    MUTILS_API <span class="keyword">const</span> QString&amp; <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>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    MUTILS_API <span class="keywordtype">void</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a0ecb5d72f33a7b6feadd7deb8ed46cc3">init_process</a>(QProcess &amp;process, <span class="keyword">const</span> QString &amp;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>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    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>&#160;    </div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    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>&#160;    </div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    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> &amp;bLong = <span class="keyword">false</span>);</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a29461116550863e8730f3f4ec479bbcb">make_temp_file</a>(<span class="keyword">const</span> QString &amp;basePath, <span class="keyword">const</span> QString &amp;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>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#af9afe3821ae9bef7bdf56a4183fdea0d">make_unique_file</a>(<span class="keyword">const</span> QString &amp;basePath, <span class="keyword">const</span> QString &amp;baseName, <span class="keyword">const</span> QString &amp;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>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    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>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    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 &amp;fileName);</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    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 &amp;folderPath, <span class="keyword">const</span> <span class="keywordtype">bool</span> &amp;recursive);</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    MUTILS_API QString&amp; <a class="code" href="../../d3/da6/namespace_m_utils.html#a6118cf23d2b771fae1ad159c7ea6686a">trim_right</a>(QString &amp;str);</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    MUTILS_API QString&amp; <a class="code" href="../../d3/da6/namespace_m_utils.html#a20b8fc56856ee904caaded756399e705">trim_left</a>(QString &amp;str);</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a6118cf23d2b771fae1ad159c7ea6686a">trim_right</a>(<span class="keyword">const</span> QString &amp;str);</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#a20b8fc56856ee904caaded756399e705">trim_left</a>(<span class="keyword">const</span> QString &amp;str);</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    MUTILS_API <span class="keywordtype">void</span> <a class="code" href="../../d3/da6/namespace_m_utils.html#a4d4c545ea06892f6487f15a48808564f">natural_string_sort</a>(QStringList &amp;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>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#aeb7783b8ecbe163501ce60dce8b6709f">clean_file_name</a>(<span class="keyword">const</span> QString &amp;name, <span class="keyword">const</span> <span class="keywordtype">bool</span> &amp;pretty);</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    MUTILS_API QString <a class="code" href="../../d3/da6/namespace_m_utils.html#adb5da6435b27e10443060dd2550784f3">clean_file_path</a>(<span class="keyword">const</span> QString &amp;path, <span class="keyword">const</span> <span class="keywordtype">bool</span> &amp;pretty);</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    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 &amp;regexp, quint32 &amp;value);</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;    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 &amp;regexp, quint32 *values, <span class="keyword">const</span> <span class="keywordtype">size_t</span> &amp;count);</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    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> &amp;noAliases = <span class="keyword">true</span>);</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;    <span class="comment">//Internal</span></div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    <span class="keyword">namespace </span>Internal</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    {</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;        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>&#160;        <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> s_selfTest = selfTest(__DATE__ <span class="stringliteral">&quot;@&quot;</span> __TIME__, MUTILS_DEBUG);</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    }</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;}</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#ad42b1946a83df3bd76734d5ab691fd0d">  338</a></span>&#160;<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>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#aa544a37b80f1ab9d86f439a7666e9aa8">  342</a></span>&#160;<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>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a1fe39de37351efa3ca46bdc8653e1f25">  346</a></span>&#160;<span class="preprocessor">#define MUTILS_ZERO_MEMORY(PTR) memset(&amp;(PTR), 0, sizeof((PTR)))</span></div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#af55d43b39d3f41cf090c138ed190ee6e">  350</a></span>&#160;<span class="preprocessor">#define MUTILS_WCHR(STR) (reinterpret_cast&lt;const wchar_t*&gt;((STR).utf16()))</span></div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a88b0902153ea537b12d86267af20eb3f">  354</a></span>&#160;<span class="preprocessor">#define MUTILS_UTF8(STR) ((STR).toUtf8().constData())</span></div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a04d63f6f60c90f8e3c4029824a7352b0">  358</a></span>&#160;<span class="preprocessor">#define MUTILS_QSTR(STR) (QString::fromUtf16(reinterpret_cast&lt;const unsigned short*&gt;((STR))))</span></div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a177ecbfe7701c2ac04bb8bdeb208773a">  362</a></span>&#160;<span class="preprocessor">#define MUTILS_BOOL2STR(X) ((X) ? &quot;1&quot; : &quot;0&quot;)</span></div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="../../d5/d3b/_global_8h.html#a8e7b4857b78f9749233e5abc96534ca8">  366</a></span>&#160;<span class="preprocessor">#define MUTILS_NO_COPY(CLASS) \</span></div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;<span class="preprocessor">    CLASS(const CLASS &amp;) { throw &quot;Copy constructor is disabled!&quot;; } \</span></div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;<span class="preprocessor">    CLASS &amp;operator=(const CLASS &amp;) { throw &quot;Assignment operator is disabled!&quot;; }</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 &amp;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 &amp;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 &amp;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 &amp;path, const bool &amp;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 &amp;list, const bool bIgnoreCase)</div><div class="ttdoc">Sort a list of strings using &quot;natural ordering&quot; 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 &amp;regexp, quint32 &amp;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 &amp;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 &amp;process, const QString &amp;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 &amp; trim_right(QString &amp;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 &amp; temp_folder(void)</div><div class="ttdoc">Rerieves the full path of the application&amp;#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 &amp;name, const bool &amp;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 &amp;basePath, const QString &amp;baseName, const QString &amp;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 &amp;folderPath, const bool &amp;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 &amp;basePath, const QString &amp;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 &amp; trim_left(QString &amp;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 &amp;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>
index d22f913..bea46fd 100644 (file)
@@ -67,7 +67,7 @@ $(function() {
 <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>&#160;<span class="comment">// MuldeR&#39;s Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// Copyright (C) 2004-2017 LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<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>&#160;<span class="comment"></span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment">//MUtils</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d5/d3b/_global_8h.html">MUtils/Global.h</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">//Qt</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;QThread&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;QDate&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<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>&#160;{</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>&#160;    <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>&#160;    {</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;        <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>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        <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>&#160;        <span class="keywordtype">void</span> resetInfo(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        <span class="keywordtype">bool</span> isComplete(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;        <span class="keyword">const</span> quint32 &amp;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>&#160;        <span class="keyword">const</span> QDate   &amp;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>&#160;        <span class="keyword">const</span> QString &amp;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>&#160;        <span class="keyword">const</span> QString &amp;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>&#160;        <span class="keyword">const</span> QString &amp;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>&#160;        <span class="keyword">const</span> QString &amp;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>&#160;        <span class="keyword">const</span> QString &amp;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>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;        quint32 m_buildNo;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        QDate m_buildDate;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;        QString m_downloadSite;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        QString m_downloadAddress;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        QString m_downloadFilename;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;        QString m_downloadFilecode;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;        QString m_downloadChecksum;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    };</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="comment">// ----------------------------------------------------------------</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</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>&#160;    <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>&#160;    {</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;        Q_OBJECT</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;        <span class="keyword">enum</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;        {</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;            UpdateStatus_NotStartedYet             = 0,</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;            UpdateStatus_CheckingConnection        = 1,</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;            UpdateStatus_FetchingUpdates           = 2,</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;            UpdateStatus_CompletedUpdateAvailable  = 3,</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;            UpdateStatus_CompletedNoUpdates        = 4,</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;            UpdateStatus_CompletedNewVersionOlder  = 5,</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;            UpdateStatus_ErrorNoConnection         = 6,</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;            UpdateStatus_ErrorConnectionTestFailed = 7,</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;            UpdateStatus_ErrorFetchUpdateInfo      = 8</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        }</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        update_status_t;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;        <a class="code" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">UpdateChecker</a>(<span class="keyword">const</span> QString &amp;binWGet, <span class="keyword">const</span> QString &amp;binNC, <span class="keyword">const</span> QString &amp;binGnuPG, <span class="keyword">const</span> QString &amp;binKeys, <span class="keyword">const</span> QString &amp;applicationId, <span class="keyword">const</span> quint32 &amp;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>&#160;        ~<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>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;        <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>&#160;        <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>&#160;        <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>&#160;        <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>&#160;        <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>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    <span class="keyword">protected</span>:</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;        <span class="keywordtype">void</span> run(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        <span class="keywordtype">void</span> checkForUpdates(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;        <span class="keywordtype">void</span> testKnownHosts(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    signals:</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;        <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>&#160;        <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>&#160;        <span class="keywordtype">void</span> messageLogged(<span class="keyword">const</span> QString &amp;text);</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;        <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>&#160;        QScopedPointer&lt;UpdateCheckerInfo&gt; m_updateInfo;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    </div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;        <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>&#160;        <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>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        <span class="keyword">const</span> QString m_applicationId;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        <span class="keyword">const</span> quint32 m_installedBuildNo;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;        <span class="keyword">const</span> QString m_binaryWGet;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;        <span class="keyword">const</span> QString m_binaryNC;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;        <span class="keyword">const</span> QString m_binaryGnuPG;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;        <span class="keyword">const</span> QString m_binaryKeys;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        <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>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        <span class="keywordtype">int</span> m_status;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        <span class="keywordtype">int</span> m_progress;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        <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>&#160;        <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>&#160;        <span class="keyword">inline</span> <span class="keywordtype">void</span> log(<span class="keyword">const</span> QString &amp;str1, <span class="keyword">const</span> QString &amp;str2 = QString(), <span class="keyword">const</span> QString &amp;str3 = QString(), <span class="keyword">const</span> QString &amp;str4 = QString());</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        <span class="keywordtype">bool</span> getUpdateInfo(<span class="keyword">const</span> QString &amp;url, <span class="keyword">const</span> QString &amp;outFileVers, <span class="keyword">const</span> QString &amp;outFileSign);</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;        <span class="keywordtype">bool</span> tryContactHost(<span class="keyword">const</span> QString &amp;hostname);</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        <span class="keywordtype">bool</span> parseVersionInfo(<span class="keyword">const</span> QString &amp;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>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;        <span class="keywordtype">bool</span> getFile(<span class="keyword">const</span> QString &amp;url, <span class="keyword">const</span> QString &amp;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>&#160;        <span class="keywordtype">bool</span> getFile(<span class="keyword">const</span> QString &amp;url, <span class="keyword">const</span> <span class="keywordtype">bool</span> forceIp4, <span class="keyword">const</span> QString &amp;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>&#160;        <span class="keywordtype">bool</span> checkSignature(<span class="keyword">const</span> QString &amp;file, <span class="keyword">const</span> QString &amp;signature);</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;        <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 &amp;url);</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    };</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;}</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>&#160;<span class="comment">// MuldeR&#39;s Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// Copyright (C) 2004-2017 LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<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>&#160;<span class="comment"></span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment">//MUtils</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d5/d3b/_global_8h.html">MUtils/Global.h</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">//Qt</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;QThread&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;QDate&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<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>&#160;{</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>&#160;    <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>&#160;    {</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;        <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>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        <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>&#160;        <span class="keywordtype">void</span> resetInfo(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        <span class="keywordtype">bool</span> isComplete(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;        <span class="keyword">const</span> quint32 &amp;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>&#160;        <span class="keyword">const</span> QDate   &amp;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>&#160;        <span class="keyword">const</span> QString &amp;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>&#160;        <span class="keyword">const</span> QString &amp;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>&#160;        <span class="keyword">const</span> QString &amp;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>&#160;        <span class="keyword">const</span> QString &amp;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>&#160;        <span class="keyword">const</span> QString &amp;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>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;        quint32 m_buildNo;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        QDate m_buildDate;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;        QString m_downloadSite;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        QString m_downloadAddress;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        QString m_downloadFilename;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;        QString m_downloadFilecode;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;        QString m_downloadChecksum;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    };</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="comment">// ----------------------------------------------------------------</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</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>&#160;    <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>&#160;    {</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;        Q_OBJECT</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;        <span class="keyword">enum</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;        {</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;            UpdateStatus_NotStartedYet             = 0,</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;            UpdateStatus_CheckingConnection        = 1,</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;            UpdateStatus_FetchingUpdates           = 2,</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;            UpdateStatus_CompletedUpdateAvailable  = 3,</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;            UpdateStatus_CompletedNoUpdates        = 4,</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;            UpdateStatus_CompletedNewVersionOlder  = 5,</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;            UpdateStatus_ErrorNoConnection         = 6,</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;            UpdateStatus_ErrorConnectionTestFailed = 7,</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;            UpdateStatus_ErrorFetchUpdateInfo      = 8,</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;            UpdateStatus_CancelledByUser           = 9</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        }</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;        update_status_t;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        <a class="code" href="../../d0/d8a/class_m_utils_1_1_update_checker.html">UpdateChecker</a>(<span class="keyword">const</span> QString &amp;binWGet, <span class="keyword">const</span> QString &amp;binMCat, <span class="keyword">const</span> QString &amp;binGnuPG, <span class="keyword">const</span> QString &amp;binKeys, <span class="keyword">const</span> QString &amp;applicationId, <span class="keyword">const</span> quint32 &amp;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>&#160;        ~<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>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;        <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>&#160;        <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>&#160;        <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>&#160;        <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>&#160;        <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>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;        <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>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <span class="keyword">public</span> slots:</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        <span class="keywordtype">void</span> start(Priority = InheritPriority);</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    <span class="keyword">protected</span>:</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        <span class="keywordtype">void</span> run(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;        <span class="keywordtype">void</span> checkForUpdates(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;        <span class="keywordtype">void</span> testKnownHosts(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    signals:</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;        <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>&#160;        <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>&#160;        <span class="keywordtype">void</span> messageLogged(<span class="keyword">const</span> QString &amp;text);</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        <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>&#160;        QScopedPointer&lt;UpdateCheckerInfo&gt; m_updateInfo;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    </div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;        <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>&#160;        <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>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;        <span class="keyword">const</span> QString m_applicationId;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        <span class="keyword">const</span> quint32 m_installedBuildNo;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        <span class="keyword">const</span> QString m_binaryWGet;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        <span class="keyword">const</span> QString m_binaryMCat;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        <span class="keyword">const</span> QString m_binaryGnuPG;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        <span class="keyword">const</span> QString m_binaryKeys;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        <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>&#160;        <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>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        <span class="keywordtype">int</span> m_status;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;        <span class="keywordtype">int</span> m_progress;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;        <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>&#160;        <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>&#160;        <span class="keyword">inline</span> <span class="keywordtype">void</span> log(<span class="keyword">const</span> QString &amp;str1, <span class="keyword">const</span> QString &amp;str2 = QString(), <span class="keyword">const</span> QString &amp;str3 = QString(), <span class="keyword">const</span> QString &amp;str4 = QString());</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;        <span class="keywordtype">bool</span> getUpdateInfo(<span class="keyword">const</span> QString &amp;url, <span class="keyword">const</span> QString &amp;outFileVers, <span class="keyword">const</span> QString &amp;outFileSign);</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        <span class="keywordtype">bool</span> tryContactHost(<span class="keyword">const</span> QString &amp;hostname, <span class="keyword">const</span> <span class="keywordtype">int</span> &amp;timeoutMsec);</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;        <span class="keywordtype">bool</span> parseVersionInfo(<span class="keyword">const</span> QString &amp;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>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        <span class="keywordtype">bool</span> getFile(<span class="keyword">const</span> QString &amp;url, <span class="keyword">const</span> QString &amp;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>&#160;        <span class="keywordtype">bool</span> getFile(<span class="keyword">const</span> QString &amp;url, <span class="keyword">const</span> <span class="keywordtype">bool</span> forceIp4, <span class="keyword">const</span> QString &amp;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>&#160;        <span class="keywordtype">bool</span> checkSignature(<span class="keyword">const</span> QString &amp;file, <span class="keyword">const</span> QString &amp;signature);</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        <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 &amp;url, <span class="keyword">const</span> <span class="keywordtype">bool</span> &amp;quick);</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    };</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;}</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>
index 03640ae..f26d62b 100644 (file)
@@ -67,7 +67,7 @@ $(function() {
 <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>&#160;<span class="comment">// MuldeR&#39;s Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// Copyright (C) 2004-2017 LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<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>&#160;<span class="comment"></span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment">//MUtils</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d5/d3b/_global_8h.html">MUtils/Global.h</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">//Qt</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;QColor&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">//Forward Declaration</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="keyword">class </span>QIcon;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="keyword">class </span>QWidget;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<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>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    <span class="keyword">namespace </span>GUI</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        <span class="keyword">typedef</span> <span class="keyword">enum</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;        {</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;            USER_EVENT = 1000,           <span class="comment">/*QEvent::User*/</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;            USER_EVENT_QUERYENDSESSION = USER_EVENT + 666,</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;            USER_EVENT_ENDSESSION      = USER_EVENT + 667</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;        }</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;        user_events_t;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;        </div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        <span class="keyword">typedef</span> <span class="keyword">enum</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;        {</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;            SYSCOLOR_TEXT       = 1,</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;            SYSCOLOR_BACKGROUND = 2,</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;            SYSCOLOR_CAPTION    = 3</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;        }</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        system_color_t;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        <span class="comment">//Broadcast message</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        MUTILS_API <span class="keywordtype">bool</span> broadcast(<span class="keywordtype">int</span> eventType, <span class="keyword">const</span> <span class="keywordtype">bool</span> &amp;onlyToVisible);</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;        <span class="comment">//Window icon</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;        MUTILS_API <span class="keywordtype">bool</span> set_window_icon(QWidget *<span class="keyword">const</span> window, <span class="keyword">const</span> QIcon &amp;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>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;        <span class="comment">//Theme support</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;        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>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        <span class="comment">//System menu</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;        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 &amp;text);</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;        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 &amp;text);</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;        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> &amp;identifier);</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;        <span class="comment">//Close button</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;        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> &amp;bEnable);</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;        <span class="comment">//Bring to front</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;        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>&#160;        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>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;        <span class="comment">//Sheet of glass</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        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>&#160;        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>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        <span class="comment">//System colors</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;        MUTILS_API QColor system_color(<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;color_id);</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        <span class="comment">//Blink window</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        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> &amp;count = 10, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;delay = 150);</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;        <span class="comment">//Force quit application</span></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        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>&#160;    }</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;}</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</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>&#160;<span class="comment">// MuldeR&#39;s Utilities for Qt</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// Copyright (C) 2004-2017 LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">// Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<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>&#160;<span class="comment"></span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment">//MUtils</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d5/d3b/_global_8h.html">MUtils/Global.h</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">//Qt</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;QColor&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">//Forward Declaration</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="keyword">class </span>QIcon;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="keyword">class </span>QWidget;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<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>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    <span class="keyword">namespace </span>GUI</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        <span class="keyword">typedef</span> <span class="keyword">enum</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;        {</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;            USER_EVENT = 1000,           <span class="comment">/*QEvent::User*/</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;            USER_EVENT_QUERYENDSESSION = USER_EVENT + 666,</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;            USER_EVENT_ENDSESSION      = USER_EVENT + 667</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;        }</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;        user_events_t;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;        </div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        <span class="keyword">typedef</span> <span class="keyword">enum</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;        {</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;            SYSCOLOR_TEXT       = 1,</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;            SYSCOLOR_BACKGROUND = 2,</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;            SYSCOLOR_CAPTION    = 3</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;        }</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        system_color_t;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        <span class="comment">//Broadcast message</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        MUTILS_API <span class="keywordtype">bool</span> broadcast(<span class="keywordtype">int</span> eventType, <span class="keyword">const</span> <span class="keywordtype">bool</span> &amp;onlyToVisible);</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;        <span class="comment">//Window icon</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;        MUTILS_API <span class="keywordtype">bool</span> set_window_icon(QWidget *<span class="keyword">const</span> window, <span class="keyword">const</span> QIcon &amp;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>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;        <span class="comment">//Theme support</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;        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>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        <span class="comment">//DPI information</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;        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>&#160;        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>&#160;        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>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;        <span class="comment">//System menu</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;        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 &amp;text);</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;        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 &amp;text);</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;        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> &amp;identifier);</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;        <span class="comment">//Close button</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;        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> &amp;bEnable);</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        <span class="comment">//Bring to front</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;        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>&#160;        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>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;        <span class="comment">//Sheet of glass</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;        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>&#160;        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>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;        <span class="comment">//System colors</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;        MUTILS_API QColor system_color(<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;color_id);</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;        <span class="comment">//Blink window</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;        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> &amp;count = 10, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;delay = 150);</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        <span class="comment">//Force quit application</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;        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>&#160;    }</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;}</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</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 -->
index 3b6989e..a03b3db 100644 (file)
@@ -70,10 +70,10 @@ $(function() {
 
 <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>
index adcad69..5a644a3 100644 (file)
@@ -64,10 +64,10 @@ $(function() {
 : <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>
index 53083cf..428ac0e 100644 (file)
@@ -1,7 +1,7 @@
 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,'']]],
index 625c19d..e8c9edd 100644 (file)
@@ -1,6 +1,6 @@
 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']]]
 ];
index b84d9a8..3acb912 100644 (file)
@@ -263,22 +263,26 @@ namespace MUtils
        *
        * 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
index dc48e84..248309a 100644 (file)
@@ -561,7 +561,52 @@ void MUtils::natural_string_sort(QStringList &list, const bool bIgnoreCase)
 // 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[] = "<>:\"/\\|?*";
@@ -573,11 +618,9 @@ QString MUtils::clean_file_name(const QString &name)
        };
 
        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++)
@@ -630,7 +673,7 @@ static QPair<QString,QString> clean_file_path_get_prefix(const QString path)
        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);
 
@@ -641,7 +684,7 @@ QString MUtils::clean_file_path(const QString &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("/"));