Fixed BUG with inner timers.
|
@ -3,5 +3,6 @@
|
||||||
<file>resources/play.wav</file>
|
<file>resources/play.wav</file>
|
||||||
<file>resources/rest.wav</file>
|
<file>resources/rest.wav</file>
|
||||||
<file>resources/stop.wav</file>
|
<file>resources/stop.wav</file>
|
||||||
|
<file>resources/inner.wav</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 8.4 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.5 KiB |
|
@ -47,9 +47,22 @@ Page {
|
||||||
property int mRoundMs: settings.roundsMs
|
property int mRoundMs: settings.roundsMs
|
||||||
property int mRestMs: settings.restMs
|
property int mRestMs: settings.restMs
|
||||||
|
|
||||||
|
property var mListOfInnerTimers: []
|
||||||
|
|
||||||
onStatusChanged: {
|
onStatusChanged: {
|
||||||
if (status === PageStatus.Active) {
|
if (status === PageStatus.Active) {
|
||||||
Helper.pushPresetListPage();
|
Helper.pushPresetListPage()
|
||||||
|
|
||||||
|
var counter = 0
|
||||||
|
for (var i = 0; i < settingsColumn.children.length; i++) {
|
||||||
|
if (settingsColumn.children[i].objectName === 'innerSlider') {
|
||||||
|
// if (counter in mListOfInnerTimers) {
|
||||||
|
// counter++
|
||||||
|
// } else {
|
||||||
|
// settingsColumn.children[i].destroy()
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,7 +78,8 @@ Page {
|
||||||
presetName.text,
|
presetName.text,
|
||||||
roundsSlider.value,
|
roundsSlider.value,
|
||||||
roundsTimeSlider.value,
|
roundsTimeSlider.value,
|
||||||
Converter.sToMs(restSlider.value)
|
Converter.sToMs(restSlider.value),
|
||||||
|
Helper.getListOfInnerTimers()
|
||||||
)
|
)
|
||||||
|
|
||||||
boxingTimer.loadPreset(presetName.text)
|
boxingTimer.loadPreset(presetName.text)
|
||||||
|
@ -75,6 +89,20 @@ 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
|
contentHeight: settingsColumn.height
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
|
@ -136,6 +164,12 @@ Page {
|
||||||
|
|
||||||
label: qsTr("Total rounds")
|
label: qsTr("Total rounds")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SectionHeader {
|
||||||
|
text: qsTr("Inner timers")
|
||||||
|
|
||||||
|
visible: mListOfInnerTimers.length
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,3 +11,64 @@ function playPauseTimer() {
|
||||||
boxingTimer.restore()
|
boxingTimer.restore()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function addSliderForInnerTime(value) {
|
||||||
|
if (value === undefined) value = 5
|
||||||
|
|
||||||
|
var remainingTimeForInner = settingsPage.mRoundMs
|
||||||
|
var numberOfInnerTimers = settingsPage.mListOfInnerTimers.length
|
||||||
|
for (var i = 0; i < numberOfInnerTimers; i++) {
|
||||||
|
remainingTimeForInner -= settingsPage.mListOfInnerTimers[i].value
|
||||||
|
}
|
||||||
|
|
||||||
|
if (remainingTimeForInner > 0) {
|
||||||
|
var number = parseInt(numberOfInnerTimers) + 1
|
||||||
|
var id = "innerTime_" + number
|
||||||
|
var newSlider = Qt.createQmlObject(
|
||||||
|
"import QtQuick 2.2;" +
|
||||||
|
"import Sailfish.Silica 1.0;" +
|
||||||
|
"import 'converter.js' as Converter;" +
|
||||||
|
"Slider {" +
|
||||||
|
"id: " + id + ";" +
|
||||||
|
"objectName: 'innerSlider';" +
|
||||||
|
|
||||||
|
"width: parent.width;" +
|
||||||
|
|
||||||
|
"minimumValue: Converter.sToMs(5);" +
|
||||||
|
"maximumValue: "+ remainingTimeForInner +";" +
|
||||||
|
"stepSize: Converter.sToMs(5);" +
|
||||||
|
|
||||||
|
"value: "+ value +";" +
|
||||||
|
"valueText: Converter.msToTime(value);" +
|
||||||
|
|
||||||
|
"label: qsTr('Inner time "+ number +"');" +
|
||||||
|
"}",
|
||||||
|
settingsColumn,
|
||||||
|
"dynamicInnerTimerSlider"
|
||||||
|
);
|
||||||
|
|
||||||
|
var newArray = settingsPage.mListOfInnerTimers
|
||||||
|
newArray.push(newSlider);
|
||||||
|
settingsPage.mListOfInnerTimers = newArray;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeLastSliderFromInnerTimers() {
|
||||||
|
var newArray = settingsPage.mListOfInnerTimers
|
||||||
|
var slider = newArray.pop()
|
||||||
|
|
||||||
|
slider.destroy()
|
||||||
|
|
||||||
|
settingsPage.mListOfInnerTimers = newArray
|
||||||
|
}
|
||||||
|
|
||||||
|
function getListOfInnerTimers() {
|
||||||
|
var list = []
|
||||||
|
|
||||||
|
var timers = settingsPage.mListOfInnerTimers.length
|
||||||
|
for (var i = 0; i < timers; i++) {
|
||||||
|
list.push(settingsPage.mListOfInnerTimers[i].value)
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
|
@ -66,6 +66,9 @@ desktop-file-install --delete-original \
|
||||||
%{_bindir}
|
%{_bindir}
|
||||||
%{_datadir}/%{name}
|
%{_datadir}/%{name}
|
||||||
%{_datadir}/applications/%{name}.desktop
|
%{_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/256x256/apps/%{name}.png
|
||||||
# >> files
|
# >> files
|
||||||
# << files
|
# << files
|
||||||
|
|
|
@ -39,7 +39,10 @@ Files:
|
||||||
- '%{_bindir}'
|
- '%{_bindir}'
|
||||||
- '%{_datadir}/%{name}'
|
- '%{_datadir}/%{name}'
|
||||||
- '%{_datadir}/applications/%{name}.desktop'
|
- '%{_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/256x256/apps/%{name}.png'
|
||||||
|
|
||||||
# For more information about yaml and what's supported in Sailfish OS
|
# For more information about yaml and what's supported in Sailfish OS
|
||||||
# build system, please see https://wiki.merproject.org/wiki/Spectacle
|
# build system, please see https://wiki.merproject.org/wiki/Spectacle
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include "boxingsettings.h"
|
#include "boxingsettings.h"
|
||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
#include <QVariant>
|
||||||
|
|
||||||
BoxingSettings::BoxingSettings() :
|
BoxingSettings::BoxingSettings() :
|
||||||
mRounds(DefaultRounds),
|
mRounds(DefaultRounds),
|
||||||
|
@ -46,17 +47,30 @@ void BoxingSettings::loadPreset() {
|
||||||
this->mRounds = DefaultRounds;
|
this->mRounds = DefaultRounds;
|
||||||
this->mRoundMilliseconds = DefaultRoundMilliseconds;
|
this->mRoundMilliseconds = DefaultRoundMilliseconds;
|
||||||
this->mRestMilliseconds = DefaultRestMilliseconds;
|
this->mRestMilliseconds = DefaultRestMilliseconds;
|
||||||
|
this->mInnerTimers.clear();
|
||||||
} else {
|
} else {
|
||||||
this->beginGroup(this->mPreset);
|
this->beginGroup(this->mPreset);
|
||||||
this->mPresetName = this->value("name").toString();
|
this->mPresetName = this->value("name").toString();
|
||||||
this->mRounds = this->value("rounds").toInt();
|
this->mRounds = this->value("rounds").toInt();
|
||||||
this->mRoundMilliseconds = this->value("roundmilliseconds").toInt();
|
this->mRoundMilliseconds = this->value("roundmilliseconds").toInt();
|
||||||
this->mRestMilliseconds = this->value("restmilliseconds").toInt();
|
this->mRestMilliseconds = this->value("restmilliseconds").toInt();
|
||||||
|
|
||||||
|
// QList<int> list = this->value("innerTimers").value<QList<int>>();
|
||||||
|
this->mInnerTimers = this->value("innerTimers").value<QList<int>>();
|
||||||
|
|
||||||
|
//#ifdef QT_DEBUG
|
||||||
|
// qDebug() << list;
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
// foreach(QVariant v, list) {
|
||||||
|
// this->mInnerTimers.append(v.toInt());
|
||||||
|
// }
|
||||||
|
|
||||||
this->endGroup();
|
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);
|
QString strippedName = this->convertRichNameToGroup(name);
|
||||||
|
|
||||||
this->beginGroup(strippedName);
|
this->beginGroup(strippedName);
|
||||||
|
@ -64,6 +78,12 @@ void BoxingSettings::savePreset(const QString &name, const int &rounds, const in
|
||||||
this->setValue("rounds", rounds);
|
this->setValue("rounds", rounds);
|
||||||
this->setValue("roundmilliseconds", roundMilliseconds);
|
this->setValue("roundmilliseconds", roundMilliseconds);
|
||||||
this->setValue("restmilliseconds", restMilliseconds);
|
this->setValue("restmilliseconds", restMilliseconds);
|
||||||
|
|
||||||
|
#ifdef QT_DEBUG
|
||||||
|
qDebug() << innerTimers;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
this->setValue("innerTimers", QVariant::fromValue(innerTimers));
|
||||||
this->endGroup();
|
this->endGroup();
|
||||||
|
|
||||||
this->setPreset(strippedName);
|
this->setPreset(strippedName);
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
#include <QList>
|
||||||
|
|
||||||
#ifdef QT_DEBUG
|
#ifdef QT_DEBUG
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
@ -25,6 +26,7 @@ class BoxingSettings : public QSettings {
|
||||||
Q_PROPERTY(int rounds READ getRounds WRITE setRounds NOTIFY presetChanged)
|
Q_PROPERTY(int rounds READ getRounds WRITE setRounds NOTIFY presetChanged)
|
||||||
Q_PROPERTY(int roundsMs READ getRoundMilliseconds WRITE setRoundMilliseconds NOTIFY presetChanged)
|
Q_PROPERTY(int roundsMs READ getRoundMilliseconds WRITE setRoundMilliseconds NOTIFY presetChanged)
|
||||||
Q_PROPERTY(int restMs READ getRestMilliseconds WRITE setRestMilliseconds NOTIFY presetChanged)
|
Q_PROPERTY(int restMs READ getRestMilliseconds WRITE setRestMilliseconds NOTIFY presetChanged)
|
||||||
|
Q_PROPERTY(QList<int> innerTimers READ getInnerTimers NOTIFY presetChanged)
|
||||||
/** @endcond */
|
/** @endcond */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -78,7 +80,7 @@ class BoxingSettings : public QSettings {
|
||||||
*
|
*
|
||||||
* @brief Save or override settings about specific preset
|
* @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
|
* @addtogroup QML
|
||||||
|
@ -115,6 +117,20 @@ class BoxingSettings : public QSettings {
|
||||||
*/
|
*/
|
||||||
inline int getRestMilliseconds() { return this->mRestMilliseconds; }
|
inline int getRestMilliseconds() { return this->mRestMilliseconds; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief gerInnerTimers()
|
||||||
|
*
|
||||||
|
* @return the list of inner timers
|
||||||
|
*/
|
||||||
|
inline QList<int> getInnerTimers() { return this->mInnerTimers; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief getInnerTimer(const int &index)
|
||||||
|
*
|
||||||
|
* @return the specific timer in milliseconds
|
||||||
|
*/
|
||||||
|
inline int getInnerTimer(const int &index) { return this->mInnerTimers.at(index); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @fn QString getPreset()
|
* @fn QString getPreset()
|
||||||
*
|
*
|
||||||
|
@ -166,6 +182,8 @@ class BoxingSettings : public QSettings {
|
||||||
int mRoundMilliseconds;
|
int mRoundMilliseconds;
|
||||||
int mRestMilliseconds;
|
int mRestMilliseconds;
|
||||||
|
|
||||||
|
QList<int> mInnerTimers;
|
||||||
|
|
||||||
QString mPreset;
|
QString mPreset;
|
||||||
QString mPresetName;
|
QString mPresetName;
|
||||||
|
|
||||||
|
|
|
@ -8,16 +8,20 @@
|
||||||
|
|
||||||
BoxingTimer::BoxingTimer() :
|
BoxingTimer::BoxingTimer() :
|
||||||
mRound(0),
|
mRound(0),
|
||||||
|
mInnerRemainingMilliseconds(0),
|
||||||
mStatus(Status::Stop),
|
mStatus(Status::Stop),
|
||||||
mOldStatus(Status::Default) {
|
mOldStatus(Status::Default) {
|
||||||
this->setTimerType(Qt::VeryCoarseTimer);
|
this->setTimerType(Qt::VeryCoarseTimer);
|
||||||
|
|
||||||
this->settings = new BoxingSettings();
|
this->settings = new BoxingSettings();
|
||||||
this->mRemainingMilliseconds = settings->getRoundMilliseconds();
|
this->mRemainingMilliseconds = this->settings->getRoundMilliseconds();
|
||||||
|
|
||||||
|
this->setInnerTimers();
|
||||||
|
|
||||||
this->playBell = new QSound(":/audio/resources/play.wav");
|
this->playBell = new QSound(":/audio/resources/play.wav");
|
||||||
this->restBell = new QSound(":/audio/resources/rest.wav");
|
this->restBell = new QSound(":/audio/resources/rest.wav");
|
||||||
this->stopBell = new QSound(":/audio/resources/stop.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(statusChanged()), this, SLOT(applyStatus()));
|
||||||
QObject::connect(this, SIGNAL(timeout()), this, SLOT(updateRemainingMilliseconds()));
|
QObject::connect(this, SIGNAL(timeout()), this, SLOT(updateRemainingMilliseconds()));
|
||||||
|
@ -68,8 +72,10 @@ void BoxingTimer::applyStatus() {
|
||||||
case Status::Reset:
|
case Status::Reset:
|
||||||
if (this->mOldStatus == Status::Start) {
|
if (this->mOldStatus == Status::Start) {
|
||||||
this->setRemainingMilliseconds(this->settings->getRoundMilliseconds());
|
this->setRemainingMilliseconds(this->settings->getRoundMilliseconds());
|
||||||
|
this->setInnerTimers();
|
||||||
} else if (this->mOldStatus == Status::Rest) {
|
} else if (this->mOldStatus == Status::Rest) {
|
||||||
this->setRemainingMilliseconds(this->settings->getRestMilliseconds());
|
this->setRemainingMilliseconds(this->settings->getRestMilliseconds());
|
||||||
|
this->setInnerTimers();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->isActive()) {
|
if (this->isActive()) {
|
||||||
|
@ -109,11 +115,41 @@ void BoxingTimer::updateRemainingMilliseconds() {
|
||||||
this->mStatus = Status::Start;
|
this->mStatus = Status::Start;
|
||||||
this->setRemainingMilliseconds(this->settings->getRoundMilliseconds());
|
this->setRemainingMilliseconds(this->settings->getRoundMilliseconds());
|
||||||
|
|
||||||
|
this->setInnerTimers();
|
||||||
|
|
||||||
this->nextRound();
|
this->nextRound();
|
||||||
}
|
}
|
||||||
|
|
||||||
this->songsBell();
|
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() {
|
const QString BoxingTimer::remainingTimeToString() {
|
||||||
|
@ -156,6 +192,8 @@ void BoxingTimer::loadPreset(const QString &preset) {
|
||||||
this->mRemainingMilliseconds = settings->getRoundMilliseconds();
|
this->mRemainingMilliseconds = settings->getRoundMilliseconds();
|
||||||
this->mStatus = Status::Stop;
|
this->mStatus = Status::Stop;
|
||||||
|
|
||||||
|
this->setInnerTimers();
|
||||||
|
|
||||||
emit presetChanged();
|
emit presetChanged();
|
||||||
emit roundsToStringChanged();
|
emit roundsToStringChanged();
|
||||||
emit remainingTimeToStringChanged();
|
emit remainingTimeToStringChanged();
|
||||||
|
|
|
@ -155,17 +155,22 @@ class BoxingTimer : public QTimer {
|
||||||
int mRoundsMilliseconds;
|
int mRoundsMilliseconds;
|
||||||
int mRemainingMilliseconds;
|
int mRemainingMilliseconds;
|
||||||
|
|
||||||
|
int mInnerTime;
|
||||||
|
int mNumberOfInnerTimers;
|
||||||
|
int mInnerRemainingMilliseconds;
|
||||||
|
|
||||||
void setRemainingMilliseconds(const int &milliseconds);
|
void setRemainingMilliseconds(const int &milliseconds);
|
||||||
void setRound(const int &round);
|
void setRound(const int &round);
|
||||||
|
|
||||||
QSound *playBell;
|
QSound *playBell;
|
||||||
QSound *restBell;
|
QSound *restBell;
|
||||||
QSound *stopBell;
|
QSound *stopBell;
|
||||||
|
QSound *innerBell;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @fn void songsBell()
|
* @fn void songsBell()
|
||||||
*
|
*
|
||||||
* @brief Play the bell check actual status
|
* @brief Play the bell if status changes
|
||||||
*/
|
*/
|
||||||
void songsBell();
|
void songsBell();
|
||||||
|
|
||||||
|
@ -181,6 +186,20 @@ class BoxingTimer : public QTimer {
|
||||||
*/
|
*/
|
||||||
void nextRound();
|
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:
|
signals:
|
||||||
void remainingTimeToStringChanged();
|
void remainingTimeToStringChanged();
|
||||||
void roundsToStringChanged();
|
void roundsToStringChanged();
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <QtQuick>
|
#include <QtQuick>
|
||||||
|
#include <QList>
|
||||||
|
|
||||||
#include <sailfishapp.h>
|
#include <sailfishapp.h>
|
||||||
|
|
||||||
|
@ -46,6 +47,8 @@ int main(int argc, char *argv[])
|
||||||
//
|
//
|
||||||
// To display the view, call "show()" (will show fullscreen on device).
|
// To display the view, call "show()" (will show fullscreen on device).
|
||||||
|
|
||||||
|
qRegisterMetaTypeStreamOperators<QList<int>>("QList<int>");
|
||||||
|
|
||||||
qmlRegisterType<BoxingTimer>("Pw.Unitoo.Backend", 1, 0, "BoxingTimer");
|
qmlRegisterType<BoxingTimer>("Pw.Unitoo.Backend", 1, 0, "BoxingTimer");
|
||||||
qmlRegisterType<BoxingSettings>("Pw.Unitoo.Backend", 1, 0, "BoxingSettings");
|
qmlRegisterType<BoxingSettings>("Pw.Unitoo.Backend", 1, 0, "BoxingSettings");
|
||||||
|
|
||||||
|
|