Ok, the long awaited config wizard is here (at least in a very basic state). There...
[quassel.git] / src / contrib / libqxt-2007-10-24 / src / core / qxtsignalwaiter.cpp
1 /****************************************************************************
2 **
3 ** Copyright (C) Qxt Foundation. Some rights reserved.
4 **
5 ** This file is part of the QxtCore module of the Qt eXTension library
6 **
7 ** This library is free software; you can redistribute it and/or modify it
8 ** under the terms of th Common Public License, version 1.0, as published by
9 ** IBM.
10 **
11 ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY
12 ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
13 ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR
14 ** FITNESS FOR A PARTICULAR PURPOSE.
15 **
16 ** You should have received a copy of the CPL along with this file.
17 ** See the LICENSE file and the cpl1.0.txt file included with the source
18 ** distribution for more information. If you did not receive a copy of the
19 ** license, contact the Qxt Foundation.
20 **
21 ** <http://libqxt.sourceforge.net>  <foundation@libqxt.org>
22 **
23 ****************************************************************************/
24
25
26 #include <qxtsignalwaiter.h>
27 #include <QCoreApplication>
28 #include <QTimer>
29 #include <QDebug>
30
31 QxtSignalWaiter::QxtSignalWaiter(const QObject* sender, const char* signal) : QObject(0)
32 {
33     Q_ASSERT(sender && signal);
34     ready=false;
35     connect(sender, signal, this, SLOT(signalCaught()));
36
37 }
38
39 // Returns true if the signal was caught, returns false if the wait timed out
40 bool QxtSignalWaiter::wait(const QObject* sender, const char* signal, int msec)
41 {
42     QxtSignalWaiter w(sender, signal);
43     return w.wait(msec);
44 }
45
46 // Returns true if the signal was caught, returns false if the wait timed out
47 bool QxtSignalWaiter::wait(int msec,bool reset)
48 {
49     // Check input parameters
50     if (msec < -1) return false;
51
52     // activate the timeout
53     if (msec != -1) timerID = startTimer(msec);
54
55     if(reset)
56             ready=false;
57     // Begin waiting
58     timeout = false;
59     while (!ready && !timeout)
60         QCoreApplication::processEvents(QEventLoop::WaitForMoreEvents);
61
62     // Clean up and return status
63     if (msec != -1) killTimer(timerID);
64     return ready || !timeout;
65 }
66
67 void QxtSignalWaiter::signalCaught()
68 {
69     ready = true;
70 }
71
72 void QxtSignalWaiter::timerEvent(QTimerEvent* event)
73 {
74     Q_UNUSED(event);
75     killTimer(timerID);
76     timeout = true;
77 }