PageRenderTime 126ms CodeModel.GetById 70ms app.highlight 8ms RepoModel.GetById 42ms app.codeStats 1ms

/src/libtomahawk/FuncTimeout.h

http://github.com/tomahawk-player/tomahawk
C Header | 58 lines | 22 code | 12 blank | 24 comment | 0 complexity | 15703994aef1dea4ad8c3cb40b33c727 MD5 | raw file
 1/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
 2 *
 3 *   Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
 4 *
 5 *   Tomahawk is free software: you can redistribute it and/or modify
 6 *   it under the terms of the GNU General Public License as published by
 7 *   the Free Software Foundation, either version 3 of the License, or
 8 *   (at your option) any later version.
 9 *
10 *   Tomahawk is distributed in the hope that it will be useful,
11 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
12 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 *   GNU General Public License for more details.
14 *
15 *   You should have received a copy of the GNU General Public License
16 *   along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19#ifndef FUNCTIMEOUT_H
20#define FUNCTIMEOUT_H
21
22#include <functional>
23
24#include <QObject>
25#include <QPointer>
26
27#include "DllMacro.h"
28
29/*
30    I want to do:
31        QTimer::singleShot(1000, this, SLOT(doSomething(x)));
32    instead, I'm doing:
33        new FuncTimeout(1000, bind(&MyClass::doSomething, this, x));
34
35 */
36namespace Tomahawk
37{
38
39class DLLEXPORT FuncTimeout : public QObject
40{
41Q_OBJECT
42
43public:
44    FuncTimeout( int ms, std::function<void()> func, QObject* besafe );
45
46    ~FuncTimeout();
47
48public slots:
49    void exec();
50
51private:
52    std::function<void()> m_func;
53    QPointer< QObject > m_watch;
54};
55
56}; // ns
57
58#endif // FUNCTIMEOUT_H