extend API of TimerFunction class

This commit is contained in:
wmayer
2017-03-31 22:18:06 +02:00
parent 5aefa825b1
commit 3ef319d04a
2 changed files with 14 additions and 1 deletions

View File

@@ -119,7 +119,9 @@ class TimerFunctionPrivate
{
public:
boost::function<void()> timeoutFunc;
boost::function<void(QObject*)> timeoutFuncQObject;
bool autoDelete;
QPointer<QObject> argQObject;
};
}
@@ -139,6 +141,13 @@ void TimerFunction::setFunction(boost::function<void()> func)
d->timeoutFunc = func;
}
void TimerFunction::setFunction(boost::function<void(QObject*)> func, QObject* args)
{
Q_D(TimerFunction);
d->timeoutFuncQObject = func;
d->argQObject = args;
}
void TimerFunction::setAutoDelete(bool on)
{
Q_D(TimerFunction);
@@ -148,7 +157,10 @@ void TimerFunction::setAutoDelete(bool on)
void TimerFunction::timeout()
{
Q_D(TimerFunction);
d->timeoutFunc();
if (d->timeoutFunc)
d->timeoutFunc();
else if (d->timeoutFuncQObject)
d->timeoutFuncQObject(d->argQObject);
if (d->autoDelete)
deleteLater();
}

View File

@@ -98,6 +98,7 @@ public:
virtual ~TimerFunction();
void setFunction(boost::function<void()> func);
void setFunction(boost::function<void(QObject*)> func, QObject* args);
void setAutoDelete(bool);
private Q_SLOTS: