⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kwqsignal.cpp

📁 khtml在gtk上的移植版本
💻 CPP
字号:
/* * Copyright (C) 2002 Apple Computer, Inc.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  */#include "KWQSignal.h"#include "KWQObject.h"#if KWIQ// FIXME:KWIQ: remove logging when done with QSignal debuggin#include "KWQLogging.h"#else#include "KWQAssertions.h"#endifusing KIO::Job;using khtml::CachedObject;using khtml::DocLoader;KWQSignal::KWQSignal(QObject *object, const char *name)    : _object(object), _next(object->_signalListHead), _name(name){    object->_signalListHead = this;}KWQSignal::~KWQSignal(){    KWQSignal **prev = &_object->_signalListHead;    KWQSignal *signal;    while ((signal = *prev)) {        if (signal == this) {            *prev = _next;            break;        }        prev = &signal->_next;    }}void KWQSignal::connect(const KWQSlot &slot){//    g_printerr("KWQSignal::connect() - %s\n",_name);#if !ERROR_DISABLED    if (_slots.contains(slot)) {        ERROR("connecting the same slot to a signal twice, %s", _name);    }#endif    _slots.append(slot);}void KWQSignal::disconnect(const KWQSlot &slot){#if !ERROR_DISABLED    if (!_slots.contains(slot)            && !KWQNamesMatch(_name, SIGNAL(finishedParsing()))            && !KWQNamesMatch(_name, SIGNAL(requestDone(khtml::DocLoader *, khtml::CachedObject *)))            && !KWQNamesMatch(_name, SIGNAL(requestFailed(khtml::DocLoader *, khtml::CachedObject *)))            && !KWQNamesMatch(_name, SIGNAL(requestStarted(khtml::DocLoader *, khtml::CachedObject *)))            ) {        ERROR("disconnecting a signal that wasn't connected, %s", _name);    }#endif    _slots.remove(slot);}void KWQSignal::call() const{//    LOG(KwiqLog,"KWQSignal::call() - %s\n",_name);    if (!_object->_signalsBlocked) {        KWQObjectSenderScope senderScope(_object);        QValueList<KWQSlot> copiedSlots(_slots);        QValueListConstIterator<KWQSlot> end = copiedSlots.end();        for (QValueListConstIterator<KWQSlot> it = copiedSlots.begin(); it != end; ++it) {            (*it).call();        }    }}void KWQSignal::call(bool b) const{//    LOG(KwiqLog,"KWQSignal::call(bool) - %s\n",_name);    if (!_object->_signalsBlocked) {        KWQObjectSenderScope senderScope(_object);        QValueList<KWQSlot> copiedSlots(_slots);        QValueListConstIterator<KWQSlot> end = copiedSlots.end();        for (QValueListConstIterator<KWQSlot> it = copiedSlots.begin(); it != end; ++it) {            (*it).call(b);        }    }}void KWQSignal::call(int i) const{//    LOG(KwiqLog,"KWQSignal::call(int) - %s\n",_name);    if (!_object->_signalsBlocked) {        KWQObjectSenderScope senderScope(_object);        QValueList<KWQSlot> copiedSlots(_slots);        QValueListConstIterator<KWQSlot> end = copiedSlots.end();        for (QValueListConstIterator<KWQSlot> it = copiedSlots.begin(); it != end; ++it) {            (*it).call(i);        }    }}void KWQSignal::call(const QString &s) const{//    LOG(KwiqLog,"KWQSignal::call(QString) - %s\n",_name);    if (!_object->_signalsBlocked) {        KWQObjectSenderScope senderScope(_object);        QValueList<KWQSlot> copiedSlots(_slots);        QValueListConstIterator<KWQSlot> end = copiedSlots.end();        for (QValueListConstIterator<KWQSlot> it = copiedSlots.begin(); it != end; ++it) {            (*it).call(s);        }    }}void KWQSignal::call(Job *j) const{//    LOG(KwiqLog,"KWQSignal::call(Job*) - %s\n",_name);    if (!_object->_signalsBlocked) {        KWQObjectSenderScope senderScope(_object);        QValueList<KWQSlot> copiedSlots(_slots);        QValueListConstIterator<KWQSlot> end = copiedSlots.end();        for (QValueListConstIterator<KWQSlot> it = copiedSlots.begin(); it != end; ++it) {            (*it).call(j);        }    }}void KWQSignal::call(DocLoader *l, CachedObject *o) const{//    LOG(KwiqLog,"KWQSignal::call(DocLoader*) - %s\n",_name);    if (!_object->_signalsBlocked) {        KWQObjectSenderScope senderScope(_object);        QValueList<KWQSlot> copiedSlots(_slots);        QValueListConstIterator<KWQSlot> end = copiedSlots.end();        for (QValueListConstIterator<KWQSlot> it = copiedSlots.begin(); it != end; ++it) {            (*it).call(l, o);        }    }}void KWQSignal::call(Job *j, const char *d, int s) const{    if (!_object->_signalsBlocked) {        KWQObjectSenderScope senderScope(_object);        QValueList<KWQSlot> copiedSlots(_slots);        QValueListConstIterator<KWQSlot> end = copiedSlots.end();        for (QValueListConstIterator<KWQSlot> it = copiedSlots.begin(); it != end; ++it) {            (*it).call(j, d, s);        }    }}void KWQSignal::call(Job *j, const KURL &u) const{    if (!_object->_signalsBlocked) {        KWQObjectSenderScope senderScope(_object);        QValueList<KWQSlot> copiedSlots(_slots);        QValueListConstIterator<KWQSlot> end = copiedSlots.end();        for (QValueListConstIterator<KWQSlot> it = copiedSlots.begin(); it != end; ++it) {            (*it).call(j, u);        }    }}#if !KWIQvoid KWQSignal::call(Job *j, void *d) const{    if (!_object->_signalsBlocked) {        KWQObjectSenderScope senderScope(_object);        QValueList<KWQSlot> copiedSlots(_slots);        QValueListConstIterator<KWQSlot> end = copiedSlots.end();        for (QValueListConstIterator<KWQSlot> it = copiedSlots.begin(); it != end; ++it) {            (*it).call(j, d);        }    }}#elsevoid KWQSignal::call(Job *j, KWIQResponse *d) const{    if (!_object->_signalsBlocked) {        KWQObjectSenderScope senderScope(_object);        QValueList<KWQSlot> copiedSlots(_slots);        QValueListConstIterator<KWQSlot> end = copiedSlots.end();        for (QValueListConstIterator<KWQSlot> it = copiedSlots.begin(); it != end; ++it) {            (*it).call(j, d);        }    }}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -