Compare commits

...

14 Commits

74 changed files with 1171 additions and 246 deletions

View File

@ -38,7 +38,7 @@ PROJECT_NAME = "Boxing Timer"
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 1.0
PROJECT_NUMBER = 0.1a
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
@ -51,7 +51,7 @@ PROJECT_BRIEF =
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
# the logo to the output directory.
PROJECT_LOGO =
PROJECT_LOGO = /home/penguyman/Progetti/harbour-boxing-timer/icons/256x256/harbour-boxing-timer.png
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is
@ -238,7 +238,7 @@ TAB_SIZE = 4
# "Side Effects:". You can put \n's in the value part of an alias to insert
# newlines.
ALIASES = "accessors=\par Accessors:\n"
ALIASES = "accessors=\par Accessors:\n"
# This tag can be used to specify a number of word-keyword mappings (TCL only).
# A mapping has the form "name=value". For example adding "class=itcl::class"

View File

@ -6,6 +6,15 @@ Maintainers
-----------
- Claudio Maradonna (claudio@unitoo.pw)
Designers
---------
- Stefano Amandonico (info@grafixprint.it)
Externals
---------
A grateful thanks to [jgibbon/slumber](https://github.com/jgibbon/slumber) for SleepBlank.qml to help fix ScreenBlanking issue.
License
-------
Licensed under GPLv3 (see COPYING).
Logo is licensed under CC BY-NC-SA 4.0

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>
@ -69,6 +70,7 @@ $(function() {
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="boxingsettings_8h_source.html">boxingsettings.h</a>&quot;</code><br />
<code>#include &lt;QString&gt;</code><br />
<code>#include &lt;QVariant&gt;</code><br />
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>
@ -72,6 +73,7 @@ $(function() {
<div class="textblock"><code>#include &lt;QString&gt;</code><br />
<code>#include &lt;QStringList&gt;</code><br />
<code>#include &lt;QSettings&gt;</code><br />
<code>#include &lt;QList&gt;</code><br />
</div>
<p><a href="boxingsettings_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">

File diff suppressed because one or more lines are too long

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>
@ -70,6 +71,7 @@ $(function() {
<div class="textblock"><code>#include &lt;QObject&gt;</code><br />
<code>#include &lt;QTime&gt;</code><br />
<code>#include &lt;QSettings&gt;</code><br />
<code>#include &lt;QSound&gt;</code><br />
<code>#include &quot;<a class="el" href="boxingtimer_8h_source.html">boxingtimer.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="boxingsettings_8h_source.html">boxingsettings.h</a>&quot;</code><br />
</div></div><!-- contents -->

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>

File diff suppressed because one or more lines are too long

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>
@ -69,6 +70,8 @@ $(function() {
<tr class="even"><td class="entry"><a class="el" href="class_boxing_settings.html#a62af206ef42670b751e0cec59c206896">BoxingSettings</a>()</td><td class="entry"><a class="el" href="class_boxing_settings.html">BoxingSettings</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_boxing_settings.html#a6dc7071565573dbd59d3eb94613b2433">BoxingSettings</a>(const int &amp;rounds, const int &amp;roundMilliseconds, const int &amp;restMilliseconds)</td><td class="entry"><a class="el" href="class_boxing_settings.html">BoxingSettings</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_boxing_settings.html#a6475be7b9b7eacc3b4a9ca853311b5a9">deletePreset</a>(const QString &amp;name)</td><td class="entry"><a class="el" href="class_boxing_settings.html">BoxingSettings</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_boxing_settings.html#a7ddc31fa4c9bea682674cb938d2d9e24">getInnerTimer</a>(const int &amp;index)</td><td class="entry"><a class="el" href="class_boxing_settings.html">BoxingSettings</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_boxing_settings.html#abdabae9cd200706c2d207ada15b1c04c">getInnerTimers</a>()</td><td class="entry"><a class="el" href="class_boxing_settings.html">BoxingSettings</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="class_boxing_settings.html#a2d03c793ed7ad6e97894e21b1f85105b">getPreset</a>()</td><td class="entry"><a class="el" href="class_boxing_settings.html">BoxingSettings</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_boxing_settings.html#ac0641004a9f244dcce8056c722685065">getPresetName</a>()</td><td class="entry"><a class="el" href="class_boxing_settings.html">BoxingSettings</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="class_boxing_settings.html#a84fd6052ef19488b015638c68fa2be72">getRestMilliseconds</a>()</td><td class="entry"><a class="el" href="class_boxing_settings.html">BoxingSettings</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
@ -76,7 +79,7 @@ $(function() {
<tr><td class="entry"><a class="el" href="class_boxing_settings.html#ae57079ed791d793bfb310712063b1dab">getRounds</a>()</td><td class="entry"><a class="el" href="class_boxing_settings.html">BoxingSettings</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_boxing_settings.html#a811dbd6c80f86ad219bbb9166571a2e9">presetChanged</a>()</td><td class="entry"><a class="el" href="class_boxing_settings.html">BoxingSettings</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
<tr><td class="entry"><a class="el" href="class_boxing_settings.html#a507b3038f2851cff0d17fffc027019de">presetsList</a>()</td><td class="entry"><a class="el" href="class_boxing_settings.html">BoxingSettings</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_boxing_settings.html#a24906b544896052c08f0b93ded92823b">savePreset</a>(const QString &amp;name, const int &amp;rounds, const int &amp;roundMilliseconds, const int &amp;restMilliseconds)</td><td class="entry"><a class="el" href="class_boxing_settings.html">BoxingSettings</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_boxing_settings.html#a8402eca09f44d4b3773ac1fd12e8dcda">savePreset</a>(const QString &amp;name, const int &amp;rounds, const int &amp;roundMilliseconds, const int &amp;restMilliseconds, const QList&lt; int &gt; &amp;innerTimers)</td><td class="entry"><a class="el" href="class_boxing_settings.html">BoxingSettings</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_boxing_settings.html#a71e6d017856266fa95b07ed0030ed05b">setPreset</a>(const QString &amp;preset)</td><td class="entry"><a class="el" href="class_boxing_settings.html">BoxingSettings</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_boxing_settings.html#ad7c283d2b4ebe1333c1680a0fd19cb0c">setRestMilliseconds</a>(const int &amp;restMilliseconds)</td><td class="entry"><a class="el" href="class_boxing_settings.html">BoxingSettings</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="class_boxing_settings.html#aaa691ab3a2fa5d1812975207b7e9f9ed">setRoundMilliseconds</a>(const int &amp;roundMilliseconds)</td><td class="entry"><a class="el" href="class_boxing_settings.html">BoxingSettings</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>
@ -90,12 +91,15 @@ Signals</h2></td></tr>
Public Member Functions</h2></td></tr>
<tr class="memitem:a507b3038f2851cff0d17fffc027019de"><td class="memItemLeft" align="right" valign="top">Q_INVOKABLE const QStringList&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_boxing_settings.html#a507b3038f2851cff0d17fffc027019de">presetsList</a> ()</td></tr>
<tr class="separator:a507b3038f2851cff0d17fffc027019de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24906b544896052c08f0b93ded92823b"><td class="memItemLeft" align="right" valign="top">Q_INVOKABLE void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_boxing_settings.html#a24906b544896052c08f0b93ded92823b">savePreset</a> (const QString &amp;name, const int &amp;rounds, const int &amp;roundMilliseconds, const int &amp;restMilliseconds)</td></tr>
<tr class="memdesc:a24906b544896052c08f0b93ded92823b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Save or override settings about specific preset. <a href="#a24906b544896052c08f0b93ded92823b">More...</a><br /></td></tr>
<tr class="separator:a24906b544896052c08f0b93ded92823b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8402eca09f44d4b3773ac1fd12e8dcda"><td class="memItemLeft" align="right" valign="top">Q_INVOKABLE void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_boxing_settings.html#a8402eca09f44d4b3773ac1fd12e8dcda">savePreset</a> (const QString &amp;name, const int &amp;rounds, const int &amp;roundMilliseconds, const int &amp;restMilliseconds, const QList&lt; int &gt; &amp;innerTimers)</td></tr>
<tr class="memdesc:a8402eca09f44d4b3773ac1fd12e8dcda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Save or override settings about specific preset. <a href="#a8402eca09f44d4b3773ac1fd12e8dcda">More...</a><br /></td></tr>
<tr class="separator:a8402eca09f44d4b3773ac1fd12e8dcda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6475be7b9b7eacc3b4a9ca853311b5a9"><td class="memItemLeft" align="right" valign="top">Q_INVOKABLE void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_boxing_settings.html#a6475be7b9b7eacc3b4a9ca853311b5a9">deletePreset</a> (const QString &amp;name)</td></tr>
<tr class="memdesc:a6475be7b9b7eacc3b4a9ca853311b5a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete a specified preset. <a href="#a6475be7b9b7eacc3b4a9ca853311b5a9">More...</a><br /></td></tr>
<tr class="separator:a6475be7b9b7eacc3b4a9ca853311b5a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ddc31fa4c9bea682674cb938d2d9e24"><td class="memItemLeft" align="right" valign="top">Q_INVOKABLE int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_boxing_settings.html#a7ddc31fa4c9bea682674cb938d2d9e24">getInnerTimer</a> (const int &amp;index)</td></tr>
<tr class="memdesc:a7ddc31fa4c9bea682674cb938d2d9e24"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="class_boxing_settings.html#a7ddc31fa4c9bea682674cb938d2d9e24" title="getInnerTimer(const int &amp;index) ">getInnerTimer(const int &amp;index)</a> <a href="#a7ddc31fa4c9bea682674cb938d2d9e24">More...</a><br /></td></tr>
<tr class="separator:a7ddc31fa4c9bea682674cb938d2d9e24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62af206ef42670b751e0cec59c206896"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_boxing_settings.html#a62af206ef42670b751e0cec59c206896">BoxingSettings</a> ()</td></tr>
<tr class="separator:a62af206ef42670b751e0cec59c206896"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6dc7071565573dbd59d3eb94613b2433"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_boxing_settings.html#a6dc7071565573dbd59d3eb94613b2433">BoxingSettings</a> (const int &amp;rounds, const int &amp;roundMilliseconds, const int &amp;restMilliseconds)</td></tr>
@ -106,6 +110,9 @@ Public Member Functions</h2></td></tr>
<tr class="separator:a2b9ff4ab1dbd14f5e8f37b88677e73f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84fd6052ef19488b015638c68fa2be72"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_boxing_settings.html#a84fd6052ef19488b015638c68fa2be72">getRestMilliseconds</a> ()</td></tr>
<tr class="separator:a84fd6052ef19488b015638c68fa2be72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdabae9cd200706c2d207ada15b1c04c"><td class="memItemLeft" align="right" valign="top">QList&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_boxing_settings.html#abdabae9cd200706c2d207ada15b1c04c">getInnerTimers</a> ()</td></tr>
<tr class="memdesc:abdabae9cd200706c2d207ada15b1c04c"><td class="mdescLeft">&#160;</td><td class="mdescRight">gerInnerTimers() <a href="#abdabae9cd200706c2d207ada15b1c04c">More...</a><br /></td></tr>
<tr class="separator:abdabae9cd200706c2d207ada15b1c04c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d03c793ed7ad6e97894e21b1f85105b"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_boxing_settings.html#a2d03c793ed7ad6e97894e21b1f85105b">getPreset</a> ()</td></tr>
<tr class="separator:a2d03c793ed7ad6e97894e21b1f85105b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0641004a9f244dcce8056c722685065"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_boxing_settings.html#ac0641004a9f244dcce8056c722685065">getPresetName</a> ()</td></tr>
@ -204,6 +211,55 @@ Public Member Functions</h2></td></tr>
</dl>
<dl class="section author"><dt>Author</dt><dd>Claudio Maradonna <a href="#" onclick="location.href='mai'+'lto:'+'cla'+'ud'+'io@'+'un'+'ito'+'o.'+'pw'; return false;">claud<span style="display: none;">.nosp@m.</span>io@u<span style="display: none;">.nosp@m.</span>nitoo<span style="display: none;">.nosp@m.</span>.pw</a> </dd></dl>
</div>
</div>
<a id="a7ddc31fa4c9bea682674cb938d2d9e24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7ddc31fa4c9bea682674cb938d2d9e24">&#9670;&nbsp;</a></span>getInnerTimer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int BoxingSettings::getInnerTimer </td>
<td>(</td>
<td class="paramtype">const int &amp;&#160;</td>
<td class="paramname"><em>index</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="class_boxing_settings.html#a7ddc31fa4c9bea682674cb938d2d9e24" title="getInnerTimer(const int &amp;index) ">getInnerTimer(const int &amp;index)</a> </p>
<dl class="section return"><dt>Returns</dt><dd>the specific timer in milliseconds </dd></dl>
</div>
</div>
<a id="abdabae9cd200706c2d207ada15b1c04c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abdabae9cd200706c2d207ada15b1c04c">&#9670;&nbsp;</a></span>getInnerTimers()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">QList&lt;int&gt; BoxingSettings::getInnerTimers </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>gerInnerTimers() </p>
<dl class="section return"><dt>Returns</dt><dd>the list of inner timers </dd></dl>
</div>
</div>
<a id="a2d03c793ed7ad6e97894e21b1f85105b"></a>
@ -380,8 +436,8 @@ Public Member Functions</h2></td></tr>
</div>
</div>
<a id="a24906b544896052c08f0b93ded92823b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a24906b544896052c08f0b93ded92823b">&#9670;&nbsp;</a></span>savePreset()</h2>
<a id="a8402eca09f44d4b3773ac1fd12e8dcda"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8402eca09f44d4b3773ac1fd12e8dcda">&#9670;&nbsp;</a></span>savePreset()</h2>
<div class="memitem">
<div class="memproto">
@ -408,7 +464,13 @@ Public Member Functions</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int &amp;&#160;</td>
<td class="paramname"><em>restMilliseconds</em>&#160;</td>
<td class="paramname"><em>restMilliseconds</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const QList&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>innerTimers</em>&#160;</td>
</tr>
<tr>
<td></td>

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>
@ -89,6 +90,12 @@ $(function() {
<h3><a id="index_g"></a>- g -</h3><ul>
<li>getInnerTimer()
: <a class="el" href="class_boxing_settings.html#a7ddc31fa4c9bea682674cb938d2d9e24">BoxingSettings</a>
</li>
<li>getInnerTimers()
: <a class="el" href="class_boxing_settings.html#abdabae9cd200706c2d207ada15b1c04c">BoxingSettings</a>
</li>
<li>getPreset()
: <a class="el" href="class_boxing_settings.html#a2d03c793ed7ad6e97894e21b1f85105b">BoxingSettings</a>
, <a class="el" href="class_boxing_timer.html#aae9b18b16d38e1dd98a33ff0d0bed959">BoxingTimer</a>
@ -150,7 +157,7 @@ $(function() {
<h3><a id="index_s"></a>- s -</h3><ul>
<li>savePreset()
: <a class="el" href="class_boxing_settings.html#a24906b544896052c08f0b93ded92823b">BoxingSettings</a>
: <a class="el" href="class_boxing_settings.html#a8402eca09f44d4b3773ac1fd12e8dcda">BoxingSettings</a>
</li>
<li>setPreset()
: <a class="el" href="class_boxing_settings.html#a71e6d017856266fa95b07ed0030ed05b">BoxingSettings</a>

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>
@ -89,6 +90,12 @@ $(function() {
<h3><a id="index_g"></a>- g -</h3><ul>
<li>getInnerTimer()
: <a class="el" href="class_boxing_settings.html#a7ddc31fa4c9bea682674cb938d2d9e24">BoxingSettings</a>
</li>
<li>getInnerTimers()
: <a class="el" href="class_boxing_settings.html#abdabae9cd200706c2d207ada15b1c04c">BoxingSettings</a>
</li>
<li>getPreset()
: <a class="el" href="class_boxing_settings.html#a2d03c793ed7ad6e97894e21b1f85105b">BoxingSettings</a>
, <a class="el" href="class_boxing_timer.html#aae9b18b16d38e1dd98a33ff0d0bed959">BoxingTimer</a>
@ -150,7 +157,7 @@ $(function() {
<h3><a id="index_s"></a>- s -</h3><ul>
<li>savePreset()
: <a class="el" href="class_boxing_settings.html#a24906b544896052c08f0b93ded92823b">BoxingSettings</a>
: <a class="el" href="class_boxing_settings.html#a8402eca09f44d4b3773ac1fd12e8dcda">BoxingSettings</a>
</li>
<li>setPreset()
: <a class="el" href="class_boxing_settings.html#a71e6d017856266fa95b07ed0030ed05b">BoxingSettings</a>

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>
@ -70,6 +71,7 @@ $(function() {
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;QtQuick&gt;</code><br />
<code>#include &lt;QList&gt;</code><br />
<code>#include &lt;sailfishapp.h&gt;</code><br />
<code>#include &quot;<a class="el" href="boxingtimer_8h_source.html">boxingtimer.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="boxingsettings_8h_source.html">boxingsettings.h</a>&quot;</code><br />

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>

View File

@ -20,9 +20,10 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="harbour-boxing-timer.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Boxing Timer
&#160;<span id="projectnumber">1.0</span>
&#160;<span id="projectnumber">0.1a</span>
</div>
</td>
</tr>

View File

@ -1,5 +1,7 @@
var searchData=
[
['getinnertimer',['getInnerTimer',['../class_boxing_settings.html#a7ddc31fa4c9bea682674cb938d2d9e24',1,'BoxingSettings']]],
['getinnertimers',['getInnerTimers',['../class_boxing_settings.html#abdabae9cd200706c2d207ada15b1c04c',1,'BoxingSettings']]],
['getpreset',['getPreset',['../class_boxing_settings.html#a2d03c793ed7ad6e97894e21b1f85105b',1,'BoxingSettings::getPreset()'],['../class_boxing_timer.html#aae9b18b16d38e1dd98a33ff0d0bed959',1,'BoxingTimer::getPreset()']]],
['getpresetname',['getPresetName',['../class_boxing_settings.html#ac0641004a9f244dcce8056c722685065',1,'BoxingSettings']]],
['getrestmilliseconds',['getRestMilliseconds',['../class_boxing_settings.html#a84fd6052ef19488b015638c68fa2be72',1,'BoxingSettings']]],

View File

@ -1,6 +1,6 @@
var searchData=
[
['savepreset',['savePreset',['../class_boxing_settings.html#a24906b544896052c08f0b93ded92823b',1,'BoxingSettings']]],
['savepreset',['savePreset',['../class_boxing_settings.html#a8402eca09f44d4b3773ac1fd12e8dcda',1,'BoxingSettings']]],
['setpreset',['setPreset',['../class_boxing_settings.html#a71e6d017856266fa95b07ed0030ed05b',1,'BoxingSettings']]],
['setrestmilliseconds',['setRestMilliseconds',['../class_boxing_settings.html#ad7c283d2b4ebe1333c1680a0fd19cb0c',1,'BoxingSettings']]],
['setroundmilliseconds',['setRoundMilliseconds',['../class_boxing_settings.html#aaa691ab3a2fa5d1812975207b7e9f9ed',1,'BoxingSettings']]],
@ -9,5 +9,5 @@ var searchData=
['start',['start',['../class_boxing_timer.html#a64ae1d3a8bfe52b225658bf4121dcdfa',1,'BoxingTimer::start(const int &amp;milliseconds)'],['../class_boxing_timer.html#af2a4f0a0658b3685b2e0bcd965dca558aa6122a65eaa676f700ae68d393054a37',1,'BoxingTimer::Start()']]],
['status',['Status',['../class_boxing_timer.html#af2a4f0a0658b3685b2e0bcd965dca558',1,'BoxingTimer']]],
['statuschanged',['statusChanged',['../class_boxing_timer.html#ab3d16c454a2fac620bb84721c105485a',1,'BoxingTimer']]],
['stop',['Stop',['../class_boxing_timer.html#af2a4f0a0658b3685b2e0bcd965dca558a11a755d598c0c417f9a36758c3da7481',1,'BoxingTimer::Stop()'],['../class_boxing_timer.html#aa294afc288608f91eb00d1680db67738',1,'BoxingTimer::stop()']]]
['stop',['stop',['../class_boxing_timer.html#aa294afc288608f91eb00d1680db67738',1,'BoxingTimer::stop()'],['../class_boxing_timer.html#af2a4f0a0658b3685b2e0bcd965dca558a11a755d598c0c417f9a36758c3da7481',1,'BoxingTimer::Stop()']]]
];

View File

@ -1,5 +1,7 @@
var searchData=
[
['getinnertimer',['getInnerTimer',['../class_boxing_settings.html#a7ddc31fa4c9bea682674cb938d2d9e24',1,'BoxingSettings']]],
['getinnertimers',['getInnerTimers',['../class_boxing_settings.html#abdabae9cd200706c2d207ada15b1c04c',1,'BoxingSettings']]],
['getpreset',['getPreset',['../class_boxing_settings.html#a2d03c793ed7ad6e97894e21b1f85105b',1,'BoxingSettings::getPreset()'],['../class_boxing_timer.html#aae9b18b16d38e1dd98a33ff0d0bed959',1,'BoxingTimer::getPreset()']]],
['getpresetname',['getPresetName',['../class_boxing_settings.html#ac0641004a9f244dcce8056c722685065',1,'BoxingSettings']]],
['getrestmilliseconds',['getRestMilliseconds',['../class_boxing_settings.html#a84fd6052ef19488b015638c68fa2be72',1,'BoxingSettings']]],

View File

@ -1,6 +1,6 @@
var searchData=
[
['savepreset',['savePreset',['../class_boxing_settings.html#a24906b544896052c08f0b93ded92823b',1,'BoxingSettings']]],
['savepreset',['savePreset',['../class_boxing_settings.html#a8402eca09f44d4b3773ac1fd12e8dcda',1,'BoxingSettings']]],
['setpreset',['setPreset',['../class_boxing_settings.html#a71e6d017856266fa95b07ed0030ed05b',1,'BoxingSettings']]],
['setrestmilliseconds',['setRestMilliseconds',['../class_boxing_settings.html#ad7c283d2b4ebe1333c1680a0fd19cb0c',1,'BoxingSettings']]],
['setroundmilliseconds',['setRoundMilliseconds',['../class_boxing_settings.html#aaa691ab3a2fa5d1812975207b7e9f9ed',1,'BoxingSettings']]],

View File

@ -2,3 +2,4 @@
\label{boxingsettings_8cpp}\index{src/boxingsettings.\+cpp@{src/boxingsettings.\+cpp}}
{\ttfamily \#include \char`\"{}boxingsettings.\+h\char`\"{}}\newline
{\ttfamily \#include $<$Q\+String$>$}\newline
{\ttfamily \#include $<$Q\+Variant$>$}\newline

View File

@ -3,6 +3,7 @@
{\ttfamily \#include $<$Q\+String$>$}\newline
{\ttfamily \#include $<$Q\+String\+List$>$}\newline
{\ttfamily \#include $<$Q\+Settings$>$}\newline
{\ttfamily \#include $<$Q\+List$>$}\newline
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item

View File

@ -3,5 +3,6 @@
{\ttfamily \#include $<$Q\+Object$>$}\newline
{\ttfamily \#include $<$Q\+Time$>$}\newline
{\ttfamily \#include $<$Q\+Settings$>$}\newline
{\ttfamily \#include $<$Q\+Sound$>$}\newline
{\ttfamily \#include \char`\"{}boxingtimer.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}boxingsettings.\+h\char`\"{}}\newline

View File

@ -25,10 +25,12 @@ void \hyperlink{class_boxing_settings_a811dbd6c80f86ad219bbb9166571a2e9}{preset\
\item
Q\+\_\+\+I\+N\+V\+O\+K\+A\+B\+LE const Q\+String\+List \hyperlink{class_boxing_settings_a507b3038f2851cff0d17fffc027019de}{presets\+List} ()
\item
Q\+\_\+\+I\+N\+V\+O\+K\+A\+B\+LE void \hyperlink{class_boxing_settings_a24906b544896052c08f0b93ded92823b}{save\+Preset} (const Q\+String \&name, const int \&rounds, const int \&round\+Milliseconds, const int \&rest\+Milliseconds)
Q\+\_\+\+I\+N\+V\+O\+K\+A\+B\+LE void \hyperlink{class_boxing_settings_a8402eca09f44d4b3773ac1fd12e8dcda}{save\+Preset} (const Q\+String \&name, const int \&rounds, const int \&round\+Milliseconds, const int \&rest\+Milliseconds, const Q\+List$<$ int $>$ \&inner\+Timers)
\begin{DoxyCompactList}\small\item\em Save or override settings about specific preset. \end{DoxyCompactList}\item
Q\+\_\+\+I\+N\+V\+O\+K\+A\+B\+LE void \hyperlink{class_boxing_settings_a6475be7b9b7eacc3b4a9ca853311b5a9}{delete\+Preset} (const Q\+String \&name)
\begin{DoxyCompactList}\small\item\em Delete a specified preset. \end{DoxyCompactList}\item
Q\+\_\+\+I\+N\+V\+O\+K\+A\+B\+LE int \hyperlink{class_boxing_settings_a7ddc31fa4c9bea682674cb938d2d9e24}{get\+Inner\+Timer} (const int \&index)
\begin{DoxyCompactList}\small\item\em \hyperlink{class_boxing_settings_a7ddc31fa4c9bea682674cb938d2d9e24}{get\+Inner\+Timer(const int \&index)} \end{DoxyCompactList}\item
\hyperlink{class_boxing_settings_a62af206ef42670b751e0cec59c206896}{Boxing\+Settings} ()
\item
\hyperlink{class_boxing_settings_a6dc7071565573dbd59d3eb94613b2433}{Boxing\+Settings} (const int \&rounds, const int \&round\+Milliseconds, const int \&rest\+Milliseconds)
@ -39,6 +41,8 @@ int \hyperlink{class_boxing_settings_a2b9ff4ab1dbd14f5e8f37b88677e73f4}{get\+Rou
\item
int \hyperlink{class_boxing_settings_a84fd6052ef19488b015638c68fa2be72}{get\+Rest\+Milliseconds} ()
\item
Q\+List$<$ int $>$ \hyperlink{class_boxing_settings_abdabae9cd200706c2d207ada15b1c04c}{get\+Inner\+Timers} ()
\begin{DoxyCompactList}\small\item\em ger\+Inner\+Timers() \end{DoxyCompactList}\item
Q\+String \hyperlink{class_boxing_settings_a2d03c793ed7ad6e97894e21b1f85105b}{get\+Preset} ()
\item
Q\+String \hyperlink{class_boxing_settings_ac0641004a9f244dcce8056c722685065}{get\+Preset\+Name} ()
@ -92,6 +96,32 @@ Delete a specified preset.
\begin{DoxyAuthor}{Author}
Claudio Maradonna \href{mailto:claudio@unitoo.pw}{\tt claudio@unitoo.\+pw}
\end{DoxyAuthor}
\mbox{\Hypertarget{class_boxing_settings_a7ddc31fa4c9bea682674cb938d2d9e24}\label{class_boxing_settings_a7ddc31fa4c9bea682674cb938d2d9e24}}
\index{Boxing\+Settings@{Boxing\+Settings}!get\+Inner\+Timer@{get\+Inner\+Timer}}
\index{get\+Inner\+Timer@{get\+Inner\+Timer}!Boxing\+Settings@{Boxing\+Settings}}
\subsubsection{\texorpdfstring{get\+Inner\+Timer()}{getInnerTimer()}}
{\footnotesize\ttfamily int Boxing\+Settings\+::get\+Inner\+Timer (\begin{DoxyParamCaption}\item[{const int \&}]{index }\end{DoxyParamCaption})}
\hyperlink{class_boxing_settings_a7ddc31fa4c9bea682674cb938d2d9e24}{get\+Inner\+Timer(const int \&index)}
\begin{DoxyReturn}{Returns}
the specific timer in milliseconds
\end{DoxyReturn}
\mbox{\Hypertarget{class_boxing_settings_abdabae9cd200706c2d207ada15b1c04c}\label{class_boxing_settings_abdabae9cd200706c2d207ada15b1c04c}}
\index{Boxing\+Settings@{Boxing\+Settings}!get\+Inner\+Timers@{get\+Inner\+Timers}}
\index{get\+Inner\+Timers@{get\+Inner\+Timers}!Boxing\+Settings@{Boxing\+Settings}}
\subsubsection{\texorpdfstring{get\+Inner\+Timers()}{getInnerTimers()}}
{\footnotesize\ttfamily Q\+List$<$int$>$ Boxing\+Settings\+::get\+Inner\+Timers (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
ger\+Inner\+Timers()
\begin{DoxyReturn}{Returns}
the list of inner timers
\end{DoxyReturn}
\mbox{\Hypertarget{class_boxing_settings_a2d03c793ed7ad6e97894e21b1f85105b}\label{class_boxing_settings_a2d03c793ed7ad6e97894e21b1f85105b}}
\index{Boxing\+Settings@{Boxing\+Settings}!get\+Preset@{get\+Preset}}
\index{get\+Preset@{get\+Preset}!Boxing\+Settings@{Boxing\+Settings}}
@ -155,11 +185,11 @@ Claudio Maradonna \href{mailto:claudio@unitoo.pw}{\tt claudio@unitoo.\+pw}
\begin{DoxyReturn}{Returns}
a list with available (probably saved) presets
\end{DoxyReturn}
\mbox{\Hypertarget{class_boxing_settings_a24906b544896052c08f0b93ded92823b}\label{class_boxing_settings_a24906b544896052c08f0b93ded92823b}}
\mbox{\Hypertarget{class_boxing_settings_a8402eca09f44d4b3773ac1fd12e8dcda}\label{class_boxing_settings_a8402eca09f44d4b3773ac1fd12e8dcda}}
\index{Boxing\+Settings@{Boxing\+Settings}!save\+Preset@{save\+Preset}}
\index{save\+Preset@{save\+Preset}!Boxing\+Settings@{Boxing\+Settings}}
\subsubsection{\texorpdfstring{save\+Preset()}{savePreset()}}
{\footnotesize\ttfamily void Boxing\+Settings\+::save\+Preset (\begin{DoxyParamCaption}\item[{const Q\+String \&}]{name, }\item[{const int \&}]{rounds, }\item[{const int \&}]{round\+Milliseconds, }\item[{const int \&}]{rest\+Milliseconds }\end{DoxyParamCaption})}
{\footnotesize\ttfamily void Boxing\+Settings\+::save\+Preset (\begin{DoxyParamCaption}\item[{const Q\+String \&}]{name, }\item[{const int \&}]{rounds, }\item[{const int \&}]{round\+Milliseconds, }\item[{const int \&}]{rest\+Milliseconds, }\item[{const Q\+List$<$ int $>$ \&}]{inner\+Timers }\end{DoxyParamCaption})}

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,6 +1,7 @@
\hypertarget{harbour-boxing-timer_8cpp}{}\section{src/harbour-\/boxing-\/timer.cpp File Reference}
\label{harbour-boxing-timer_8cpp}\index{src/harbour-\/boxing-\/timer.\+cpp@{src/harbour-\/boxing-\/timer.\+cpp}}
{\ttfamily \#include $<$Qt\+Quick$>$}\newline
{\ttfamily \#include $<$Q\+List$>$}\newline
{\ttfamily \#include $<$sailfishapp.\+h$>$}\newline
{\ttfamily \#include \char`\"{}boxingtimer.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}boxingsettings.\+h\char`\"{}}\newline

View File

@ -125,7 +125,7 @@
\begin{titlepage}
\vspace*{7cm}
\begin{center}%
{\Large Boxing Timer \\[1ex]\large 1.\+0 }\\
{\Large Boxing Timer \\[1ex]\large 0.\+1a }\\
\vspace*{1cm}
{\large Generated by Doxygen 1.8.13}\\
\end{center}

View File

@ -4,8 +4,14 @@ DEFINES += APP_VERSION=\\\"$$VERSION\\\"
DEFINES += APP_RELEASE=\\\"$$RELEASE\\\"
CONFIG += sailfishapp
CONFIG += sailfishapp_i18n
QT += multimedia
QT += core qml multimedia dbus
QMAKE_TARGET_COMPANY = Unitoo
QMAKE_TARGET_PRODUCT = Boxing Timer
QMAKE_TARGET_DESCRIPTION = A customizable timer for fighting sports like boxe
QMAKE_TARGET_COPYRIGHT = Copyright © 2017-2019 Claudio Maradonna <claudio[at]unitoo[dot]name>
SOURCES += src/harbour-boxing-timer.cpp \
src/boxingtimer.cpp \
@ -15,22 +21,13 @@ OTHER_FILES += qml/harbour-boxing-timer.qml \
qml/cover/CoverPage.qml \
rpm/harbour-boxing-timer.spec \
rpm/harbour-boxing-timer.yaml \
translations/*.ts \
harbour-boxing-timer.desktop
harbour-boxing-timer.desktop \
translations/*.ts
SAILFISHAPP_ICONS = 86x86 108x108 128x128 256x256
# to disable building translations every time, comment out the
# following CONFIG line
# CONFIG += sailfishapp_i18n
# German translation is enabled as an example. If you aren't
# planning to localize your app, remember to comment out the
# following TRANSLATIONS line. And also do not forget to
# modify the localized app name in the the .desktop file.
# TRANSLATIONS += translations/harbour-boxing-timer-de.ts
SAILFISHAPP_ICONS += 86x86 108x108 128x128 172x172 256x256
DISTFILES += \
qml/ScreenBlank.qml \
qml/pages/TimerPage.qml \
qml/pages/SettingsPage.qml \
qml/pages/js/converter.js \
@ -39,7 +36,12 @@ DISTFILES += \
COPYING \
rpm/harbour-boxing-timer.changes \
qml/pages/js/helpers.js \
README.md
README.md \
icons/86x86/harbour-boxing-timer.png \
icons/108x108/harbour-boxing-timer.png \
icons/128x128/harbour-boxing-timer.png \
icons/172x172/harbour-boxing-timer.png \
icons/256x256/harbour-boxing-timer.png
HEADERS += \
src/boxingtimer.h \
@ -47,3 +49,15 @@ HEADERS += \
RESOURCES += \
harbour-boxing-timer.qrc
TRANSLATIONS += \
translations/harbour-boxing-timer-en_US.ts \
translations/harbour-boxing-timer-it_IT.ts
translations.name = Translations
translations.input = TRANSLATIONS
translations.output = $$_PRO_FILE_PWD_/translations/${QMAKE_FILE_BASE}.qm
translations.commands = $$[QT_INSTALL_BINS]/lrelease ${QMAKE_FILE_IN}
translations.CONFIG = no_link
QMAKE_EXTRA_COMPILERS += translations
PRE_TARGETDEPS += compiler_translations_make_all

View File

@ -3,5 +3,10 @@
<file>resources/play.wav</file>
<file>resources/rest.wav</file>
<file>resources/stop.wav</file>
<file>resources/inner.wav</file>
</qresource>
<qresource prefix="/">
<file>translations/harbour-boxing-timer-en_US.qm</file>
<file>translations/harbour-boxing-timer-it_IT.qm</file>
</qresource>
</RCC>

BIN
icons/108x108/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 14 KiB

BIN
icons/128x128/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
icons/256x256/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 43 KiB

BIN
icons/86x86/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

41
qml/ScreenBlank.qml Normal file
View File

@ -0,0 +1,41 @@
import QtQuick 2.0
import Nemo.DBus 2.0
Item {
property bool enabled: false
function request(){
var method = "req_display"+(enabled?"":"_cancel")+"_blanking_pause";
console.log('screen blank:', enabled, method);
dbif.call(method, [])
}
onEnabledChanged: {
request();
}
DBusInterface {
id: dbif
service: "com.nokia.mce"
path: "/com/nokia/mce/request"
iface: "com.nokia.mce.request"
bus: DBusInterface.SystemBus
}
Timer { //request seems to time out after a while:
running: parent.enabled
interval: 15000 //minimum setting for blank display is 15s
repeat: true
onTriggered: {
if(parent.enabled) {
parent.request()
}
}
}
Component.onDestruction: {
if(enabled){
enabled=false
}
}
}

View File

@ -48,7 +48,9 @@ CoverBackground {
font.pixelSize: Theme.fontSizeHuge
text: boxingTimer.remainingTimeToString
color: boxingTimer.status === BoxingTimer.Rest ? Theme.secondaryColor : Theme.primaryColor
color: boxingTimer.status === BoxingTimer.Rest ?
Theme.secondaryColor :
Theme.primaryColor
}
Item { width: 25; height: 25 }

View File

@ -31,9 +31,14 @@
import QtQuick 2.0
import Sailfish.Silica 1.0
import Pw.Unitoo.Backend 1.0
import "pages"
ApplicationWindow {
ScreenBlank {
enabled: boxingTimer.isActive
}
BoxingTimer {
id: boxingTimer
}

View File

@ -5,10 +5,14 @@ Page {
id: aboutPage
SilicaFlickable {
id: aboutFlickable
anchors.fill: parent
contentHeight: column.height
VerticalScrollDecorator { flickable: aboutFlickable }
Column {
id: column
@ -34,13 +38,14 @@ Page {
\"Boxing Timer\" is a customizable timer for fighting sports like boxe.
You can set duration, rest and number of rounds. If you set 0 rounds, timer loops and count number of rounds.
You can add inner timers too.
You can save, load and delete your settings giving a name to them.
")
}
SectionHeader { text: qsTr("Developers") }
Label {
SectionHeader { text: qsTr("Developers and sources") }
LinkedLabel {
anchors {
left: parent.left
right: parent.right
@ -51,16 +56,24 @@ You can save, load and delete your settings giving a name to them.
wrapMode: Text.Wrap
color: Theme.primaryColor
linkColor: Theme.highlightColor
font.pixelSize: Theme.fontSizeSmall
text: qsTr("
Copyright (C) 2017 Claudio Maradonna
plainText: qsTr("
Copyright (C) 2017-2019 Claudio Maradonna
Unitoo Team, Italy
Sources at: https://gitlab.com/unitoo/harbour-boxing-timer
")
textFormat: Text.RichText
}
Repeater {
model: ListModel {
ListElement { label: "Email" ; value: "claudio@unitoo.pw" }
ListElement { label: "Github"; value: "UnitooTeam" }
ListElement { label: "Diaspora" ; value: "claudiounitoo@framasphere.org" }
ListElement { label: "Mastodon" ; value: "@unitoo" }
ListElement { label: "XMPP" ; value: "unitoo@fysh.in" }
@ -81,6 +94,8 @@ Unitoo Team, Italy
verticalAlignment: Text.AlignVCenter
color: Theme.secondaryColor
textFormat: Text.RichText
}
Label {
@ -94,8 +109,8 @@ Unitoo Team, Italy
}
}
SectionHeader { text: qsTr("License") }
Label {
SectionHeader { text: qsTr("Artists") }
LinkedLabel {
anchors {
left: parent.left
right: parent.right
@ -106,21 +121,56 @@ Unitoo Team, Italy
wrapMode: Text.Wrap
color: Theme.primaryColor
linkColor: Theme.highlightColor
font.pixelSize: Theme.fontSizeSmall
plainText: qsTr("
Stefano Amandonico
GrafixPrint, Italy
info@grafixprint.it
http://www.grafixprint.it
")
textFormat: Text.RichText
}
SectionHeader { text: qsTr("License") }
LinkedLabel {
anchors {
left: parent.left
right: parent.right
leftMargin: Theme.paddingLarge
rightMargin: Theme.paddingLarge
}
wrapMode: Text.Wrap
color: Theme.primaryColor
linkColor: Theme.highlightColor
font.pixelSize: Theme.fontSizeSmall
text: qsTr("
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
(at your option) any later version.<br><br>
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
GNU General Public License for more details.<br><br>
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
along with this program. If not, see <a href=\"http://www.gnu.org/licenses\">http://www.gnu.org/licenses</a>.<br><br><br>
All artworks are licensed under a <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">Creative Commons Attribution-ShareAlike 4.0 International</a>
")
textFormat: Text.RichText
}
}
}

View File

@ -25,11 +25,27 @@ Page {
width: parent.width; height: parent.height
model: listModel
VerticalScrollDecorator { flickable: presetsList }
model: listModel
delegate: ListItem {
id: listItem
width: parent.width
ListView.onRemove: animateRemoval(listItem)
function remove() {
remorseAction(qsTr("Deleting"), function() {
settings.deletePreset(presetsList.model.get(index).name)
if (settings.presetsList().length < 1) {
pageStack.popAttached()
} else {
presetsList.model.remove(index)
}
})
}
onClicked: {
settings.preset = presetsList.model.get(index).name
@ -40,20 +56,16 @@ Page {
MenuItem {
text: qsTr("Delete")
onClicked: {
settings.deletePreset(presetsList.model.get(index).name)
if (settings.presetsList().length < 1) {
pageStack.popAttached()
}
}
onClicked: remove()
}
}
Label {
text: name
color: highlighted ? Theme.highlightColor : Theme.primaryColor
color: highlighted ?
Theme.highlightColor :
Theme.primaryColor
anchors {
left: parent.left

View File

@ -47,13 +47,18 @@ Page {
property int mRoundMs: settings.roundsMs
property int mRestMs: settings.restMs
property var mListOfInnerTimers: settings.innerTimers
onStatusChanged: {
if (status === PageStatus.Active) {
Helper.pushPresetListPage();
Helper.pushPresetListPage()
Helper.generateSlidersForInnerTimers()
}
}
SilicaFlickable {
id: flickable
anchors.fill: parent
PullDownMenu {
@ -65,7 +70,8 @@ Page {
presetName.text,
roundsSlider.value,
roundsTimeSlider.value,
Converter.sToMs(restSlider.value)
Converter.sToMs(restSlider.value),
Helper.getListOfInnerTimers()
)
boxingTimer.loadPreset(presetName.text)
@ -75,8 +81,24 @@ Page {
}
}
PushUpMenu {
MenuItem {
text: qsTr("Add inner time")
onClicked: Helper.addSliderForInnerTime()
}
MenuItem {
text: qsTr("Remove last inner time")
onClicked: Helper.removeLastSliderFromInnerTimers()
visible: mListOfInnerTimers.length
}
}
contentHeight: settingsColumn.height
VerticalScrollDecorator { flickable: flickable }
Column {
id: settingsColumn
@ -101,7 +123,9 @@ Page {
width: parent.width
minimumValue: Converter.sToMs(30); maximumValue: Converter.sToMs(300); stepSize: Converter.sToMs(10)
minimumValue: Converter.sToMs(30)
maximumValue: Converter.sToMs(300)
stepSize: Converter.sToMs(10)
value: mRoundMs
valueText: Converter.msToTime(value)
@ -134,6 +158,12 @@ Page {
label: qsTr("Total rounds")
}
SectionHeader {
text: qsTr("Inner timers")
visible: mListOfInnerTimers.length
}
}
}
}

View File

@ -31,6 +31,7 @@
import QtQuick 2.0
import Sailfish.Silica 1.0
import Pw.Unitoo.Backend 1.0
import "js/helpers.js" as Helper
Page {
@ -44,7 +45,11 @@ Page {
PullDownMenu {
MenuItem {
text: qsTr("About")
onClicked: pageStack.push(Qt.resolvedUrl("AboutPage.qml"))
onClicked: {
boxingTimer.status = BoxingTimer.Pause
pageStack.push(Qt.resolvedUrl("AboutPage.qml"))
}
}
MenuItem {
@ -85,7 +90,9 @@ Page {
font.pixelSize: Theme.fontSizeHuge * 3.3
text: boxingTimer.remainingTimeToString
color: boxingTimer.status == BoxingTimer.Rest ? Theme.secondaryColor : Theme.primaryColor
color: boxingTimer.status == BoxingTimer.Rest ?
Theme.secondaryColor :
Theme.primaryColor
}
Button {

View File

@ -11,3 +11,96 @@ function playPauseTimer() {
boxingTimer.restore()
}
}
function addSliderForInnerTime() {
var newArray = settingsPage.mListOfInnerTimers
newArray.push(5)
settingsPage.mListOfInnerTimers = newArray
generateSlidersForInnerTimers()
}
function removeLastSliderFromInnerTimers() {
var newArray = settingsPage.mListOfInnerTimers
newArray.pop()
settingsPage.mListOfInnerTimers = newArray
generateSlidersForInnerTimers()
}
function getListOfInnerTimers() {
var list = []
var timers = settingsPage.mListOfInnerTimers.length
for (var i = 0; i < timers; i++) {
list.push(settingsPage.mListOfInnerTimers[i])
}
return list;
}
function updateValueInnerTimer(i, value) {
var newArray = settingsPage.mListOfInnerTimers
newArray[i] = value
settingsPage.mListOfInnerTimers = newArray
}
function generateSlidersForInnerTimers() {
for (var i = 0; i < settingsColumn.children.length; i++) {
if (settingsColumn.children[i].objectName === 'innerSlider') {
settingsColumn.children[i].destroy()
}
}
var value = 5
var remainingTimeForInner = settingsPage.mRoundMs
var numberOfInnerTimers = settingsPage.mListOfInnerTimers.length
var newArray = []
for (i = 0; i < numberOfInnerTimers; i++) {
value = settingsPage.mListOfInnerTimers[i]
if (value === undefined) {
value = 5
}
remainingTimeForInner -= value
var enabled = "true"
if ((i + 1) < numberOfInnerTimers) {
enabled = "false"
}
var newSlider = Qt.createQmlObject(
"import QtQuick 2.2;" +
"import Sailfish.Silica 1.0;" +
"import 'converter.js' as Converter;" +
"import 'helpers.js' as Helper;" +
"Slider {" +
"objectName: 'innerSlider';" +
"enabled: "+ enabled +"; "+
"width: parent.width;" +
"minimumValue: Converter.sToMs(5);" +
"maximumValue: "+ remainingTimeForInner +";" +
"stepSize: Converter.sToMs(5);" +
"value: "+ parseInt(value) +";" +
"valueText: Converter.msToTime(value);" +
"label: qsTr('"+ (i + 1) +"° inner time');" +
"onValueChanged: Helper.updateValueInnerTimer("+ i +", value);" +
"}",
settingsColumn,
"dynamicInnerTimerSlider"
);
newArray.push(value);
}
settingsPage.mListOfInnerTimers = newArray;
}

BIN
resources/inner.wav Normal file

Binary file not shown.

View File

@ -8,5 +8,27 @@
# * date Author's Name <author's email> version-release
# - Summary of changes
* Thu Jul 17 2017 Claudio Maradonna <claudio@unitoo.pw> 0.1a
* Thu Aug 28 2019 Claudio Maradonna <claudio@unitoo.pw> 1.3.0-1
- Update for Sailfish X (Tested on Xperia XA2 Plus)
- Adding translations (actually only it_IT - Italian)
* Fri Sep 08 2017 Claudio Maradonna <claudio@unitoo.pw> 1.2.3-4
- Fixed bug when saving multiple inner timers
- Fixed bug when change presets and rounds done > 0
- Fixed changes file
* Thu Sep 07 2017 Claudio Maradonna <claudio@unitoo.pw> 1.2.1-3
- Fixed bug with inner timer adjust and new inner timer
- Fixed link bug in about page
* Wed Sep 06 2017 Claudio Maradonna <claudio@unitoo.pw> 1.1-1
- Fixed bug with preset's deleting
- Fixed license in about page (cutted by html tag)
* Wed Aug 30 2017 Claudio Maradonna <claudio@unitoo.pw> 1.0-1
- Now you can add inner timers for rounds
- New icon
- Various bug fixes
* Thu Aug 24 2017 Claudio Maradonna <claudio@unitoo.pw> 0.1a-1
- Initial release

View File

@ -13,11 +13,11 @@ Name: harbour-boxing-timer
%{!?qtc_make:%define qtc_make make}
%{?qtc_builddir:%define _builddir %qtc_builddir}
Summary: Boxing timer
Version: 0.1a
Version: 1.3.0
Release: 1
Group: Applications/Multimedia
Group: Applications/Utilities
License: GPLv3
URL: http://example.org/
URL: https://github.com/UnitooTeam/harbour-boxing-timer
Source0: %{name}-%{version}.tar.bz2
Source100: harbour-boxing-timer.yaml
Requires: sailfishsilica-qt5 >= 0.10.9
@ -66,6 +66,10 @@ desktop-file-install --delete-original \
%{_bindir}
%{_datadir}/%{name}
%{_datadir}/applications/%{name}.desktop
%{_datadir}/icons/hicolor/*/apps/%{name}.png
%{_datadir}/icons/hicolor/86x86/apps/%{name}.png
%{_datadir}/icons/hicolor/108x108/apps/%{name}.png
%{_datadir}/icons/hicolor/128x128/apps/%{name}.png
%{_datadir}/icons/hicolor/172x172/apps/%{name}.png
%{_datadir}/icons/hicolor/256x256/apps/%{name}.png
# >> files
# << files

View File

@ -1,11 +1,11 @@
Name: harbour-boxing-timer
Summary: Boxing timer
Version: 0.1a
Version: 1.3.0
Release: 1
# The contents of the Group field should be one of the groups listed here:
# http://gitorious.org/meego-developer-tools/spectacle/blobs/master/data/GROUPS
Group: Applications/Multimedia
URL: http://example.org/
Group: Applications/Utilities
URL: https://github.com/UnitooTeam/harbour-boxing-timer
License: GPLv3
# This must be generated before uploading a package to a remote build service.
# Usually this line does not need to be modified.
@ -39,7 +39,11 @@ Files:
- '%{_bindir}'
- '%{_datadir}/%{name}'
- '%{_datadir}/applications/%{name}.desktop'
- '%{_datadir}/icons/hicolor/*/apps/%{name}.png'
- '%{_datadir}/icons/hicolor/86x86/apps/%{name}.png'
- '%{_datadir}/icons/hicolor/108x108/apps/%{name}.png'
- '%{_datadir}/icons/hicolor/128x128/apps/%{name}.png'
- '%{_datadir}/icons/hicolor/172x172/apps/%{name}.png'
- '%{_datadir}/icons/hicolor/256x256/apps/%{name}.png'
# For more information about yaml and what's supported in Sailfish OS
# build system, please see https://wiki.merproject.org/wiki/Spectacle

View File

@ -1,6 +1,7 @@
#include "boxingsettings.h"
#include <QString>
#include <QVariant>
BoxingSettings::BoxingSettings() :
mRounds(DefaultRounds),
@ -46,17 +47,21 @@ void BoxingSettings::loadPreset() {
this->mRounds = DefaultRounds;
this->mRoundMilliseconds = DefaultRoundMilliseconds;
this->mRestMilliseconds = DefaultRestMilliseconds;
this->mInnerTimers.clear();
} else {
this->beginGroup(this->mPreset);
this->mPresetName = this->value("name").toString();
this->mRounds = this->value("rounds").toInt();
this->mRoundMilliseconds = this->value("roundmilliseconds").toInt();
this->mRestMilliseconds = this->value("restmilliseconds").toInt();
this->mInnerTimers = this->value("innerTimers").value<QList<int>>();
this->endGroup();
}
}
void BoxingSettings::savePreset(const QString &name, const int &rounds, const int &roundMilliseconds, const int &restMilliseconds) {
void BoxingSettings::savePreset(const QString &name, const int &rounds, const int &roundMilliseconds, const int &restMilliseconds, const QList<int> &innerTimers) {
QString strippedName = this->convertRichNameToGroup(name);
this->beginGroup(strippedName);
@ -64,6 +69,7 @@ void BoxingSettings::savePreset(const QString &name, const int &rounds, const in
this->setValue("rounds", rounds);
this->setValue("roundmilliseconds", roundMilliseconds);
this->setValue("restmilliseconds", restMilliseconds);
this->setValue("innerTimers", QVariant::fromValue(innerTimers));
this->endGroup();
this->setPreset(strippedName);
@ -90,3 +96,7 @@ const QStringList BoxingSettings::presetsList() {
return presets;
}
int BoxingSettings::getInnerTimer(const int &index) {
return this->mInnerTimers.value(index);
}

View File

@ -4,6 +4,7 @@
#include <QString>
#include <QStringList>
#include <QSettings>
#include <QList>
#ifdef QT_DEBUG
#include <QDebug>
@ -25,6 +26,7 @@ class BoxingSettings : public QSettings {
Q_PROPERTY(int rounds READ getRounds WRITE setRounds NOTIFY presetChanged)
Q_PROPERTY(int roundsMs READ getRoundMilliseconds WRITE setRoundMilliseconds NOTIFY presetChanged)
Q_PROPERTY(int restMs READ getRestMilliseconds WRITE setRestMilliseconds NOTIFY presetChanged)
Q_PROPERTY(QList<int> innerTimers READ getInnerTimers NOTIFY presetChanged)
/** @endcond */
/**
@ -78,7 +80,7 @@ class BoxingSettings : public QSettings {
*
* @brief Save or override settings about specific preset
*/
Q_INVOKABLE void savePreset(const QString &name, const int &rounds, const int &roundMilliseconds, const int &restMilliseconds);
Q_INVOKABLE void savePreset(const QString &name, const int &rounds, const int &roundMilliseconds, const int &restMilliseconds, const QList<int> &innerTimers);
/**
* @addtogroup QML
@ -91,6 +93,13 @@ class BoxingSettings : public QSettings {
*/
Q_INVOKABLE void deletePreset(const QString &name);
/**
* @brief getInnerTimer(const int &index)
*
* @return the specific timer in milliseconds
*/
Q_INVOKABLE int getInnerTimer(const int &index);
BoxingSettings();
BoxingSettings(const int &rounds, const int &roundMilliseconds, const int &restMilliseconds);
@ -115,6 +124,13 @@ class BoxingSettings : public QSettings {
*/
inline int getRestMilliseconds() { return this->mRestMilliseconds; }
/**
* @brief gerInnerTimers()
*
* @return the list of inner timers
*/
inline QList<int> getInnerTimers() { return this->mInnerTimers; }
/**
* @fn QString getPreset()
*
@ -166,6 +182,8 @@ class BoxingSettings : public QSettings {
int mRoundMilliseconds;
int mRestMilliseconds;
QList<int> mInnerTimers;
QString mPreset;
QString mPresetName;

View File

@ -8,16 +8,20 @@
BoxingTimer::BoxingTimer() :
mRound(0),
mInnerRemainingMilliseconds(0),
mStatus(Status::Stop),
mOldStatus(Status::Default) {
this->setTimerType(Qt::VeryCoarseTimer);
this->settings = new BoxingSettings();
this->mRemainingMilliseconds = settings->getRoundMilliseconds();
this->mRemainingMilliseconds = this->settings->getRoundMilliseconds();
this->setInnerTimers();
this->playBell = new QSound(":/audio/resources/play.wav");
this->restBell = new QSound(":/audio/resources/rest.wav");
this->stopBell = new QSound(":/audio/resources/stop.wav");
this->innerBell = new QSound(":/audio/resources/inner.wav");
QObject::connect(this, SIGNAL(statusChanged()), this, SLOT(applyStatus()));
QObject::connect(this, SIGNAL(timeout()), this, SLOT(updateRemainingMilliseconds()));
@ -68,8 +72,10 @@ void BoxingTimer::applyStatus() {
case Status::Reset:
if (this->mOldStatus == Status::Start) {
this->setRemainingMilliseconds(this->settings->getRoundMilliseconds());
this->setInnerTimers();
} else if (this->mOldStatus == Status::Rest) {
this->setRemainingMilliseconds(this->settings->getRestMilliseconds());
this->setInnerTimers();
}
if (this->isActive()) {
@ -109,11 +115,41 @@ void BoxingTimer::updateRemainingMilliseconds() {
this->mStatus = Status::Start;
this->setRemainingMilliseconds(this->settings->getRoundMilliseconds());
this->setInnerTimers();
this->nextRound();
}
this->songsBell();
}
this->updateInnerRemainingMilliseconds();
}
void BoxingTimer::updateInnerRemainingMilliseconds() {
if (this->mInnerTime >= 0 && this->mStatus == Status::Start) {
this->mInnerRemainingMilliseconds -= 1000;
if (this->mInnerRemainingMilliseconds <= 0) {
if (++this->mInnerTime >= this->mNumberOfInnerTimers) {
this->mInnerTime = 0;
}
this->mInnerRemainingMilliseconds = this->settings->getInnerTimer(this->mInnerTime);
this->innerBell->play();
}
}
}
void BoxingTimer::setInnerTimers() {
this->mNumberOfInnerTimers = this->settings->getInnerTimers().size();
this->mInnerTime = -1;
if (this->mNumberOfInnerTimers > 0) {
this->mInnerTime = 0;
this->mInnerRemainingMilliseconds = this->settings->getInnerTimer(this->mInnerTime);
}
}
const QString BoxingTimer::remainingTimeToString() {
@ -153,9 +189,12 @@ const QString BoxingTimer::roundsToString() {
void BoxingTimer::loadPreset(const QString &preset) {
this->settings->setPreset(preset);
this->mRound = 0;
this->mRemainingMilliseconds = settings->getRoundMilliseconds();
this->mStatus = Status::Stop;
this->setInnerTimers();
emit presetChanged();
emit roundsToStringChanged();
emit remainingTimeToStringChanged();

View File

@ -155,13 +155,23 @@ class BoxingTimer : public QTimer {
int mRoundsMilliseconds;
int mRemainingMilliseconds;
int mInnerTime;
int mNumberOfInnerTimers;
int mInnerRemainingMilliseconds;
void setRemainingMilliseconds(const int &milliseconds);
void setRound(const int &round);
QSound *playBell;
QSound *restBell;
QSound *stopBell;
QSound *innerBell;
/**
* @fn void songsBell()
*
* @brief Play the bell if status changes
*/
void songsBell();
Status mStatus;
@ -176,6 +186,20 @@ class BoxingTimer : public QTimer {
*/
void nextRound();
/**
* @fn void updateInnerRemainingMilliseconds()
*
* @brief Update remaining milliseconds of inner timer
*/
void updateInnerRemainingMilliseconds();
/**
* @fn void setInnerTimers()
*
* @brief Setup inner timers from settings
*/
void setInnerTimers();
signals:
void remainingTimeToStringChanged();
void roundsToStringChanged();

View File

@ -28,7 +28,10 @@
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <QtGlobal>
#include <QGuiApplication>
#include <QtQuick>
#include <QList>
#include <sailfishapp.h>
@ -37,17 +40,27 @@
int main(int argc, char *argv[])
{
// SailfishApp::main() will display "qml/template.qml", if you need more
// control over initialization, you can use:
//
// - SailfishApp::application(int, char *[]) to get the QGuiApplication *
// - SailfishApp::createView() to get a new QQuickView * instance
// - SailfishApp::pathTo(QString) to get a QUrl to a resource file
//
// To display the view, call "show()" (will show fullscreen on device).
QGuiApplication::setApplicationDisplayName("Boxing Timer");
QCoreApplication::setApplicationName("harbour-boxing-timer");
QCoreApplication::setOrganizationName("Unitoo");
QCoreApplication::setOrganizationDomain("unitoo.it");
QScopedPointer<QGuiApplication> app(SailfishApp::application(argc, argv));
QString lc = QLocale().name();
QTranslator tr;
if (tr.load("harbour-boxing-timer-" + lc, ":/translations"))
app->installTranslator(&tr);
qRegisterMetaTypeStreamOperators<QList<int>>("QList<int>");
qmlRegisterType<BoxingTimer>("Pw.Unitoo.Backend", 1, 0, "BoxingTimer");
qmlRegisterType<BoxingSettings>("Pw.Unitoo.Backend", 1, 0, "BoxingSettings");
return SailfishApp::main(argc, argv);
QScopedPointer<QQuickView> viewer(SailfishApp::createView());
QObject::connect(viewer->engine(), SIGNAL(quit()), app.data(), SLOT(quit()));
viewer->setSource(SailfishApp::pathTo("qml/harbour-boxing-timer.qml"));
viewer->show();
return app->exec();
}

View File

@ -1,88 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1">
<context>
<name>CoverPage</name>
<message>
<source>My Cover</source>
<translation>Mein Cover</translation>
</message>
</context>
<context>
<name>PresetList</name>
<message>
<source>Saved presets</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsPage</name>
<message>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Round&apos;s settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Preset name</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Duration</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rest</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Total rounds</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TimerPage</name>
<message>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Stop</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Reset</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Round</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Boxing timer</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

Binary file not shown.

View File

@ -0,0 +1,188 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en" sourcelanguage="en">
<context>
<name>AboutPage</name>
<message>
<source>About</source>
<translation>About</translation>
</message>
<message>
<source>
&quot;Boxing Timer&quot; is a customizable timer for fighting sports like boxe.
You can set duration, rest and number of rounds. If you set 0 rounds, timer loops and count number of rounds.
You can add inner timers too.
You can save, load and delete your settings giving a name to them.
</source>
<translation>
&quot;Boxing Timer&quot; is a customizable timer for fighting sports like boxe.
You can set duration, rest and number of rounds. If you set 0 rounds, timer loops and count number of rounds.
You can add inner timers too.
You can save, load and delete your settings giving a name to them.
</translation>
</message>
<message>
<source>Developers and sources</source>
<translation>Developers and sources</translation>
</message>
<message>
<source>Artists</source>
<translation>Artists</translation>
</message>
<message>
<source>
Stefano Amandonico
GrafixPrint, Italy
info@grafixprint.it
http://www.grafixprint.it
</source>
<translation>
Stefano Amandonico
GrafixPrint, Italy
info@grafixprint.it
http://www.grafixprint.it
</translation>
</message>
<message>
<source>License</source>
<translation>License</translation>
</message>
<message>
<source>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.&lt;br&gt;&lt;br&gt;
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.&lt;br&gt;&lt;br&gt;
You should have received a copy of the GNU General Public License
along with this program. If not, see &lt;a href=&quot;http://www.gnu.org/licenses&quot;&gt;http://www.gnu.org/licenses&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;br&gt;
All artworks are licensed under a &lt;a href=&quot;https://creativecommons.org/licenses/by-sa/4.0/&quot;&gt;Creative Commons Attribution-ShareAlike 4.0 International&lt;/a&gt;
</source>
<translation>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.&lt;br&gt;&lt;br&gt;
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.&lt;br&gt;&lt;br&gt;
You should have received a copy of the GNU General Public License
along with this program. If not, see &lt;a href=&quot;http://www.gnu.org/licenses&quot;&gt;http://www.gnu.org/licenses&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;br&gt;
All artworks are licensed under a &lt;a href=&quot;https://creativecommons.org/licenses/by-sa/4.0/&quot;&gt;Creative Commons Attribution-ShareAlike 4.0 International&lt;/a&gt;
</translation>
</message>
<message>
<source>
Copyright (C) 2017-2019 Claudio Maradonna
Unitoo Team, Italy
Sources at: https://gitlab.com/unitoo/harbour-boxing-timer
</source>
<translation>
Copyright (C) 2017-2019 Claudio Maradonna
Unitoo Team, Italy
Sources at: https://gitlab.com/unitoo/harbour-boxing-timer
</translation>
</message>
</context>
<context>
<name>PresetList</name>
<message>
<source>Saved presets</source>
<translation>Saved presets</translation>
</message>
<message>
<source>Deleting</source>
<translation>Deleting</translation>
</message>
<message>
<source>Delete</source>
<translation>Delete</translation>
</message>
</context>
<context>
<name>SettingsPage</name>
<message>
<source>Save</source>
<translation>Save</translation>
</message>
<message>
<source>Add inner time</source>
<translation>Add inner time</translation>
</message>
<message>
<source>Remove last inner time</source>
<translation>Remove last inner time</translation>
</message>
<message>
<source>Settings</source>
<translation>Settings</translation>
</message>
<message>
<source>Round&apos;s settings</source>
<translation>Round&apos;s settings</translation>
</message>
<message>
<source>Preset name</source>
<translation>Preset name</translation>
</message>
<message>
<source>Duration</source>
<translation>Duration</translation>
</message>
<message>
<source>Rest</source>
<translation>Rest</translation>
</message>
<message>
<source>Total rounds</source>
<translation>Total rounds</translation>
</message>
<message>
<source>Inner timers</source>
<translation>Inner timers</translation>
</message>
</context>
<context>
<name>TimerPage</name>
<message>
<source>About</source>
<translation>About</translation>
</message>
<message>
<source>Settings</source>
<translation>Settings</translation>
</message>
<message>
<source>Stop</source>
<translation>Stop</translation>
</message>
<message>
<source>Reset</source>
<translation>Reset</translation>
</message>
<message>
<source>Boxing timer</source>
<translation>Boxing timer</translation>
</message>
</context>
</TS>

Binary file not shown.

View File

@ -0,0 +1,188 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="it_IT" sourcelanguage="en">
<context>
<name>AboutPage</name>
<message>
<source>About</source>
<translation>Chi siamo</translation>
</message>
<message>
<source>
&quot;Boxing Timer&quot; is a customizable timer for fighting sports like boxe.
You can set duration, rest and number of rounds. If you set 0 rounds, timer loops and count number of rounds.
You can add inner timers too.
You can save, load and delete your settings giving a name to them.
</source>
<translation>
&quot;Boxing Timer&quot; è un timer personalizzabile per gli sport da combattimento come la boxe.
Puoi personalizzare la durata, il riposo e il numero di round. Se imposti 0 round, il timer va in loop e conta il numero di round effettuati.
Puoi creare anche dei round intermedi.
Puoi salvare, caricare e cancellare le tue impostazioni impostando un nome a esse.
</translation>
</message>
<message>
<source>Developers and sources</source>
<translation>Sviluppatori e sorgenti</translation>
</message>
<message>
<source>Artists</source>
<translation>Artisti</translation>
</message>
<message>
<source>
Stefano Amandonico
GrafixPrint, Italy
info@grafixprint.it
http://www.grafixprint.it
</source>
<translation>
Stefano Amandonico
GrafixPrint, Italia
info@grafixprint.it
http://www.grafixprint.it
</translation>
</message>
<message>
<source>License</source>
<translation>Licenza</translation>
</message>
<message>
<source>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.&lt;br&gt;&lt;br&gt;
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.&lt;br&gt;&lt;br&gt;
You should have received a copy of the GNU General Public License
along with this program. If not, see &lt;a href=&quot;http://www.gnu.org/licenses&quot;&gt;http://www.gnu.org/licenses&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;br&gt;
All artworks are licensed under a &lt;a href=&quot;https://creativecommons.org/licenses/by-sa/4.0/&quot;&gt;Creative Commons Attribution-ShareAlike 4.0 International&lt;/a&gt;
</source>
<translation>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.&lt;br&gt;&lt;br&gt;
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.&lt;br&gt;&lt;br&gt;
You should have received a copy of the GNU General Public License
along with this program. If not, see &lt;a href=&quot;http://www.gnu.org/licenses&quot;&gt;http://www.gnu.org/licenses&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;br&gt;
All artworks are licensed under a &lt;a href=&quot;https://creativecommons.org/licenses/by-sa/4.0/&quot;&gt;Creative Commons Attribution-ShareAlike 4.0 International&lt;/a&gt;
</translation>
</message>
<message>
<source>
Copyright (C) 2017-2019 Claudio Maradonna
Unitoo Team, Italy
Sources at: https://gitlab.com/unitoo/harbour-boxing-timer
</source>
<translation>
Copyright (C) 2017-2019 Claudio Maradonna
Unitoo Team, Italia
Sorgenti: https://gitlab.com/unitoo/harbour-boxing-timer
</translation>
</message>
</context>
<context>
<name>PresetList</name>
<message>
<source>Saved presets</source>
<translation>Presets salvati</translation>
</message>
<message>
<source>Deleting</source>
<translation>Sto eliminando</translation>
</message>
<message>
<source>Delete</source>
<translation>Elimina</translation>
</message>
</context>
<context>
<name>SettingsPage</name>
<message>
<source>Save</source>
<translation>Salva</translation>
</message>
<message>
<source>Add inner time</source>
<translation>Aggiungi tempo intermedio</translation>
</message>
<message>
<source>Remove last inner time</source>
<translation>Rimuovi ultimo tempo intermedio</translation>
</message>
<message>
<source>Settings</source>
<translation>Impostazioni</translation>
</message>
<message>
<source>Round&apos;s settings</source>
<translation>Impostazioni del round</translation>
</message>
<message>
<source>Preset name</source>
<translation>Nome del preset</translation>
</message>
<message>
<source>Duration</source>
<translation>Durata</translation>
</message>
<message>
<source>Rest</source>
<translation>Riposo</translation>
</message>
<message>
<source>Total rounds</source>
<translation>Totale round</translation>
</message>
<message>
<source>Inner timers</source>
<translation>Tempi intermedi</translation>
</message>
</context>
<context>
<name>TimerPage</name>
<message>
<source>About</source>
<translation>Chi siamo</translation>
</message>
<message>
<source>Settings</source>
<translation>Impostazioni</translation>
</message>
<message>
<source>Stop</source>
<translation>Stop</translation>
</message>
<message>
<source>Reset</source>
<translation>Resetta</translation>
</message>
<message>
<source>Boxing timer</source>
<translation>Boxing timer</translation>
</message>
</context>
</TS>

View File

@ -2,85 +2,177 @@
<!DOCTYPE TS>
<TS version="2.1">
<context>
<name>CoverPage</name>
<name>AboutPage</name>
<message>
<source>My Cover</source>
<location filename="../qml/pages/AboutPage.qml" line="23"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AboutPage.qml" line="37"/>
<source>
&quot;Boxing Timer&quot; is a customizable timer for fighting sports like boxe.
You can set duration, rest and number of rounds. If you set 0 rounds, timer loops and count number of rounds.
You can add inner timers too.
You can save, load and delete your settings giving a name to them.
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AboutPage.qml" line="47"/>
<source>Developers and sources</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AboutPage.qml" line="63"/>
<source>
Copyright (C) 2017-2019 Claudio Maradonna
Unitoo Team, Italy
Sources at: https://gitlab.com/unitoo/harbour-boxing-timer
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AboutPage.qml" line="112"/>
<source>Artists</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AboutPage.qml" line="128"/>
<source>
Stefano Amandonico
GrafixPrint, Italy
info@grafixprint.it
http://www.grafixprint.it
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AboutPage.qml" line="139"/>
<source>License</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AboutPage.qml" line="155"/>
<source>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.&lt;br&gt;&lt;br&gt;
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.&lt;br&gt;&lt;br&gt;
You should have received a copy of the GNU General Public License
along with this program. If not, see &lt;a href=&quot;http://www.gnu.org/licenses&quot;&gt;http://www.gnu.org/licenses&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;br&gt;
All artworks are licensed under a &lt;a href=&quot;https://creativecommons.org/licenses/by-sa/4.0/&quot;&gt;Creative Commons Attribution-ShareAlike 4.0 International&lt;/a&gt;
</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PresetList</name>
<message>
<location filename="../qml/pages/PresetList.qml" line="17"/>
<source>Saved presets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/PresetList.qml" line="38"/>
<source>Deleting</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/PresetList.qml" line="57"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsPage</name>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="66"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Delete</source>
<location filename="../qml/pages/SettingsPage.qml" line="86"/>
<source>Add inner time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="91"/>
<source>Remove last inner time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="108"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="110"/>
<source>Round&apos;s settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="117"/>
<source>Preset name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="133"/>
<source>Duration</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="146"/>
<source>Rest</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="159"/>
<source>Total rounds</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Settings</source>
<location filename="../qml/pages/SettingsPage.qml" line="163"/>
<source>Inner timers</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TimerPage</name>
<message>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Stop</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Reset</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Round</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/TimerPage.qml" line="47"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause</source>
<location filename="../qml/pages/TimerPage.qml" line="56"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/TimerPage.qml" line="67"/>
<source>Stop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/TimerPage.qml" line="71"/>
<source>Reset</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/TimerPage.qml" line="84"/>
<source>Boxing timer</source>
<translation type="unfinished"></translation>
</message>