Пример #1
0
/*!
    \internal
    Catch signal disconnections.
*/
void QDBusAbstractInterface::disconnectNotify(const QMetaMethod &signal)
{
    // someone disconnecting from one of our signals
    Q_D(QDBusAbstractInterface);
    if (!d->isValid)
        return;

    QDBusConnectionPrivate *conn = d->connectionPrivate();
    if (conn && signal.isValid() && !isSignalConnected(signal))
        return conn->disconnectRelay(d->service, d->path, d->interface,
                                     this, signal);
    if (!conn)
        return;

    // wildcard disconnecting, we need to figure out which of our signals are
    // no longer connected to anything
    const QMetaObject *mo = metaObject();
    int midx = QObject::staticMetaObject.methodCount();
    const int end = mo->methodCount();
    for ( ; midx < end; ++midx) {
        QMetaMethod mm = mo->method(midx);
        if (mm.methodType() == QMetaMethod::Signal && !isSignalConnected(mm))
            conn->disconnectRelay(d->service, d->path, d->interface, this, mm);
    }
}
void JsonClient::dataReadyOnSocket()
{
    std::string str(mSocket->readAll());
    if (isSignalConnected(messageReceived))
        messageReceived.emit(str);
    if (isSignalConnected(messageReceivedMap))
        messageReceivedMap.emit(toHashTable(str));
}
Пример #3
0
/*!
    \internal

    When someone disconnects, disconnect from the engine too if there are no more users of that signal.
*/
void QContactManager::disconnectNotify(const QMetaMethod &signal)
{
    if (!isSignalConnected(signal)) {
        QMetaMethod sourceSignal = proxyToSourceSignal(signal, d->m_engine);
        disconnect(d->m_engine, sourceSignal, this, signal);
    }
}
Пример #4
0
WindowScriptingInterface::WindowScriptingInterface() {
    const DomainHandler& domainHandler = DependencyManager::get<NodeList>()->getDomainHandler();
    connect(&domainHandler, &DomainHandler::connectedToDomain, this, &WindowScriptingInterface::domainChanged);
    connect(&domainHandler, &DomainHandler::disconnectedFromDomain, this, &WindowScriptingInterface::disconnectedFromDomain);

    connect(&domainHandler, &DomainHandler::domainConnectionRefused, this, &WindowScriptingInterface::domainConnectionRefused);
    connect(&domainHandler, &DomainHandler::redirectErrorStateChanged, this, &WindowScriptingInterface::redirectErrorStateChanged);

    connect(qApp, &Application::svoImportRequested, [this](const QString& urlString) {
        static const QMetaMethod svoImportRequestedSignal =
            QMetaMethod::fromSignal(&WindowScriptingInterface::svoImportRequested);

        if (isSignalConnected(svoImportRequestedSignal)) {
            QUrl url(urlString);
            emit svoImportRequested(url.url());
        } else {
            OffscreenUi::asyncWarning("Import SVO Error", "You need to be running edit.js to import entities.");
        }
    });

    connect(qApp->getWindow(), &MainWindow::windowGeometryChanged, this, &WindowScriptingInterface::onWindowGeometryChanged);
    connect(qApp, &Application::interstitialModeChanged, [this] (bool interstitialMode) {
        emit interstitialModeChanged(interstitialMode);
    });
}
/*!
    Set the \a device used by the JsonStream.
    Setting the device to 0 disconnects the stream but does not close
    the device nor flush it.

    The stream does not take ownership of the device.
*/
void JsonClient::setDevice( AbstractSocket *device )
{
    if (mSocket)
    {
        if (isSignalConnected(device->readyRead))
            mSocket->readyRead.slots().begin()->disconnect();
        if (isSignalConnected(device->aboutToClose))
            mSocket->aboutToClose.slots().begin()->disconnect();
        delete mSocket;
    }

    mSocket = device;
    if (device) {
        device->readyRead.connect( sigc::mem_fun(this, &JsonClient::dataReadyOnSocket) );
        device->aboutToClose.connect( sigc::mem_fun(this, &JsonClient::socketAboutToClose) );
    }
}
Пример #6
0
/*!
    \internal
*/
void QBatteryInfo::disconnectNotify(const QMetaMethod &signal)
{
#if defined(Q_OS_LINUX) || defined(Q_OS_WIN) || defined(QT_SIMULATOR) || defined(Q_OS_MAC)
    // We can only disconnect with the private implementation, when there is no receivers for the signal.
    if (isSignalConnected(signal))
        return;

    QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr);
    disconnect(d_ptr, sourceSignal, this, signal);
#else
    Q_UNUSED(signal)
#endif
}
Пример #7
0
/**
 * Returns true if doLog does nothing and need not to be called
 */
bool Logger::isNoop() const
{
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
    return false;
#else
    static auto signal = QMetaMethod::fromSignal(&Logger::newLog);
    if (isSignalConnected(signal)) {
        return false;
    }
    QMutexLocker lock(const_cast<QMutex *>(&_mutex));
    return !_logstream;
#endif
}
Пример #8
0
WindowScriptingInterface::WindowScriptingInterface() {
    const DomainHandler& domainHandler = DependencyManager::get<NodeList>()->getDomainHandler();
    connect(&domainHandler, &DomainHandler::connectedToDomain, this, &WindowScriptingInterface::domainChanged);
    connect(&domainHandler, &DomainHandler::domainConnectionRefused, this, &WindowScriptingInterface::domainConnectionRefused);

    connect(qApp, &Application::svoImportRequested, [this](const QString& urlString) {
        static const QMetaMethod svoImportRequestedSignal =
            QMetaMethod::fromSignal(&WindowScriptingInterface::svoImportRequested);

        if (isSignalConnected(svoImportRequestedSignal)) {
            QUrl url(urlString);
            emit svoImportRequested(url.url());
        } else {
            OffscreenUi::warning("Import SVO Error", "You need to be running edit.js to import entities.");
        }
    });
}
Пример #9
0
void QVariantAnimationPrivate::setCurrentValueForProgress(const qreal progress)
{
    Q_Q(QVariantAnimation);

    const qreal startProgress = currentInterval.start.first;
    const qreal endProgress = currentInterval.end.first;
    const qreal localProgress = (progress - startProgress) / (endProgress - startProgress);

    QVariant ret = q->interpolated(currentInterval.start.second,
                                   currentInterval.end.second,
                                   localProgress);
    qSwap(currentValue, ret);
    q->updateCurrentValue(currentValue);
    static QBasicAtomicInt changedSignalIndex = Q_BASIC_ATOMIC_INITIALIZER(0);
    if (!changedSignalIndex) {
        //we keep the mask so that we emit valueChanged only when needed (for performance reasons)
        changedSignalIndex.testAndSetRelaxed(0, signalIndex("valueChanged(QVariant)"));
    }
    if (isSignalConnected(changedSignalIndex) && currentValue != ret) {
        //the value has changed
        emit q->valueChanged(currentValue);
    }
}
Пример #10
0
void NavigationAttached::customEvent(QEvent *event)
{
    if (event->type() == NavEventType)
    {
        NavEvent *nEvent = static_cast<NavEvent *>(event);
        QuickNavEvent qne(nEvent->key(), nEvent->isAutoRepeat());

        emit navigationEvent(&qne);

        nEvent->setAccepted(qne.isAccepted());

        if (!nEvent->isAccepted())
        {
            switch (nEvent->key())
            {
            case Navigation::Left:
                if (isSignalConnected(QMetaMethod::fromSignal(&NavigationAttached::left)))
                {
                    qne.setAccepted(true);
                    emit left(&qne);
                }
                break;
            case Navigation::Right:
                if (isSignalConnected(QMetaMethod::fromSignal(&NavigationAttached::right)))
                {
                    qne.setAccepted(true);
                    emit right(&qne);
                }
                break;
            case Navigation::Up:
                if (isSignalConnected(QMetaMethod::fromSignal(&NavigationAttached::up)))
                {
                    qne.setAccepted(true);
                    emit up(&qne);
                }
                break;
            case Navigation::Down:
                if (isSignalConnected(QMetaMethod::fromSignal(&NavigationAttached::down)))
                {
                    qne.setAccepted(true);
                    emit down(&qne);
                }
                break;
            case Navigation::OK:
                if (isSignalConnected(QMetaMethod::fromSignal(&NavigationAttached::ok)))
                {
                    qne.setAccepted(true);
                    emit ok(&qne);
                }
                break;
            case Navigation::Back:
                if (isSignalConnected(QMetaMethod::fromSignal(&NavigationAttached::back)))
                {
                    qne.setAccepted(true);
                    emit back(&qne);
                }
                break;
            case Navigation::Play:
                if (isSignalConnected(QMetaMethod::fromSignal(&NavigationAttached::play)))
                {
                    qne.setAccepted(true);
                    emit play(&qne);
                }
                break;
            case Navigation::PlayPause:
                if (isSignalConnected(QMetaMethod::fromSignal(&NavigationAttached::playPause)))
                {
                    qne.setAccepted(true);
                    emit playPause(&qne);
                }
                break;
            case Navigation::Pause:
                if (isSignalConnected(QMetaMethod::fromSignal(&NavigationAttached::pause)))
                {
                    qne.setAccepted(true);
                    emit pause(&qne);
                }
                break;
            case Navigation::Stop:
                if (isSignalConnected(QMetaMethod::fromSignal(&NavigationAttached::stop)))
                {
                    qne.setAccepted(true);
                    emit stop(&qne);
                }
                break;
            case Navigation::Next:
                if (isSignalConnected(QMetaMethod::fromSignal(&NavigationAttached::next)))
                {
                    qne.setAccepted(true);
                    emit next(&qne);
                }
                break;
            case Navigation::Previous:
                if (isSignalConnected(QMetaMethod::fromSignal(&NavigationAttached::previous)))
                {
                    qne.setAccepted(true);
                    emit previous(&qne);
                }
                break;

            case Navigation::Record:
                if (isSignalConnected(QMetaMethod::fromSignal(&NavigationAttached::record)))
                {
                    qne.setAccepted(true);
                    emit record(&qne);
                }
                break;
            default:
                break;
            }

            event->setAccepted(qne.isAccepted());
        }
    }
}
Пример #11
0
bool TrackListModel::canFetchMore(const QModelIndex &parent) const
{
    // We can only fetch more if something's receiving notifications when we need more
    return !parent.isValid() && isSignalConnected(QMetaMethod::fromSignal(&TrackListModel::needMore));
}