X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcontrib%2Flibqxt-2007-10-24%2Fsrc%2Fcore%2Fqxtslotjob.cpp;fp=src%2Fcontrib%2Flibqxt-2007-10-24%2Fsrc%2Fcore%2Fqxtslotjob.cpp;h=0000000000000000000000000000000000000000;hp=bf8cee03dae5e25aabc1c9416157c06295aa9ab1;hb=140d8a132103d2fa9baf55036e09b165624de167;hpb=97d674034551438238c568e8b42efb08e1ba7354 diff --git a/src/contrib/libqxt-2007-10-24/src/core/qxtslotjob.cpp b/src/contrib/libqxt-2007-10-24/src/core/qxtslotjob.cpp deleted file mode 100644 index bf8cee03..00000000 --- a/src/contrib/libqxt-2007-10-24/src/core/qxtslotjob.cpp +++ /dev/null @@ -1,187 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) Qxt Foundation. Some rights reserved. -** -** This file is part of the QxtCore module of the Qt eXTension library -** -** This library is free software; you can redistribute it and/or modify it -** under the terms of th Common Public License, version 1.0, as published by -** IBM. -** -** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY -** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY -** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR -** FITNESS FOR A PARTICULAR PURPOSE. -** -** You should have received a copy of the CPL along with this file. -** See the LICENSE file and the cpl1.0.txt file included with the source -** distribution for more information. If you did not receive a copy of the -** license, contact the Qxt Foundation. -** -** -** -****************************************************************************/ -#include "qxtslotjob_p.h" - -/** -\class QxtSlotJob QxtSlotJob - -\ingroup QxtCore - -\brief Execute an arbitary Slot on a QThread. - -\warning It is essential to understand that the Qobject you pass is not safe to use untill done(); is emited or result() or join() is called. -*/ - -/*! -execute \p slot from \p precv on \p thread detached \n -returns a QFuture which offers the functions required to get the result.\n -\code - QxtFuture f= QxtSlotJob::detach(&thread,&q,SLOT(exec(QString)),Q_ARG(QString, "select NOW();")); -\endcode - -\warning keep your hands of \p recv until you called QFuture::result(); -*/ -QxtFuture QxtSlotJob::detach(QThread * thread,QObject* recv, const char* slot, - QGenericArgument p1, - QGenericArgument p2, - QGenericArgument p3, - QGenericArgument p4, - QGenericArgument p5, - QGenericArgument p6, - QGenericArgument p7, - QGenericArgument p8, - QGenericArgument p9, - QGenericArgument p10) - { - QxtSlotJob * p= new QxtSlotJob(recv,slot,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10); - connect(p,SIGNAL(done()),p,SLOT(deleteLater())); - return p->exec(thread); - } -/*! -Construct a new Job Object that will run \p slot from \p precv with the specified arguments -*/ -QxtSlotJob::QxtSlotJob(QObject* recv, const char* slot, - QGenericArgument p1, - QGenericArgument p2, - QGenericArgument p3, - QGenericArgument p4, - QGenericArgument p5, - QGenericArgument p6, - QGenericArgument p7, - QGenericArgument p8, - QGenericArgument p9, - QGenericArgument p10) - { - qxt_d().f=QxtMetaObject::bind(recv,slot,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10); - qxt_d().receiver=recv; - qxt_d().orginalthread=QThread::currentThread(); - - connect(this,SIGNAL(done()),this,SLOT(pdone())); - } -/*! -asks for the result of the execution. \n -This calls QxtJob::join() means it will _block_ the current thread untill the Slot has finished execution -*/ -QVariant QxtSlotJob::result() - { - join(); - return qxt_d().r; - } -/*! -execute this job on \p thread \n -\warning keep your hands of the Object you passed until you called result() or join() -*/ -QxtFuture QxtSlotJob::exec(QThread *thread) - { - qxt_d().receiver->moveToThread(thread); - QxtJob::exec(thread); - return QxtFuture(this); - } - -void QxtSlotJob::run() - { - qxt_d().r=qVariantFromValue(qxt_d().f->invoke()); - qxt_d().receiver->moveToThread(qxt_d().orginalthread); - } - - -void QxtSlotJob::pdone() -{ - emit(done(qxt_d().r)); -} - - - - - - - - - - -/** -\class QxtFuture QxtFuture - -\ingroup QxtCore - -\brief Reference to a future result of a QxtSlotJob - -*/ - -QxtFuture::QxtFuture(const QxtFuture& other):QObject() -{ - job=other.job; - connect(job,SIGNAL(done()),this,SIGNAL(done())); - connect(job,SIGNAL(done(QVariant)),this,SIGNAL(done(QVariant))); - waiter=new QxtSignalWaiter(job,SIGNAL(done())); -} - -QxtFuture::QxtFuture(QxtSlotJob* j):QObject() -{ - job=j; - connect(job,SIGNAL(done()),this,SIGNAL(done())); - connect(job,SIGNAL(done(QVariant)),this,SIGNAL(done(QVariant))); - waiter=new QxtSignalWaiter(job,SIGNAL(done())); -} - -QxtFuture::~QxtFuture() -{ - delete waiter; -} -/*! -asks for the result of the execution. \n -This calls QxtJob::join() means it will _block_ the current thread untill the Slot has finished execution -*/ -QVariant QxtFuture::joinedResult() -{ - return job->result(); -} - - - -/*! -asks for the result of the execution. \n -waits until the done() signal occured -or return a QVariant() if the timout ocures earlier \n -This uses QxtSignalWaiter so it will _not_ block your current thread. -\warning this function is not reentrant. You have been warned - -*/ - - - -QVariant QxtFuture::delayedResult(int msec) -{ - if(!waiter->wait(msec,false)) - return QVariant(); - return job->result(); -} - - - - - - - -