/*! \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); } }
void QNetworkInfoPrivate::connectNotify(const QMetaMethod &signal) { #if !defined(QT_NO_OFONO) if (QOfonoWrapper::isOfonoAvailable()) { if (!ofonoWrapper) ofonoWrapper = new QOfonoWrapper(this); QMetaMethod sourceSignal = proxyToSourceSignal(signal, ofonoWrapper); connect(ofonoWrapper, sourceSignal, this, signal, Qt::UniqueConnection); } #endif static const QMetaMethod currentNetworkModeChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoPrivate::currentNetworkModeChanged); static const QMetaMethod networkNameChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoPrivate::networkNameChanged); static const QMetaMethod networkSignalStrengthChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoPrivate::networkSignalStrengthChanged); static const QMetaMethod networkStatusChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoPrivate::networkStatusChanged); // we always monitor "networkInterfaceCount" , as long as users connect any signals, // with update to date network interface counts, we can compute network mode, strength, // status, name properties in an efficient way if (!watchNetworkInterfaceCount) { QList<QNetworkInfo::NetworkMode> modes; modes << QNetworkInfo::WlanMode << QNetworkInfo::EthernetMode << QNetworkInfo::BluetoothMode; networkInterfaceCounts.clear(); foreach (QNetworkInfo::NetworkMode mode, modes) networkInterfaceCounts[mode] = getNetworkInterfaceCount(mode); #if !defined(QT_NO_UDEV) if (!udevHandle) { udevHandle = udev_new(); udevMonitor = udev_monitor_new_from_netlink(udevHandle, "udev"); udev_monitor_filter_add_match_subsystem_devtype(udevMonitor, "net", NULL); udev_monitor_enable_receiving(udevMonitor); udevNotifier = new QSocketNotifier(udev_monitor_get_fd(udevMonitor), QSocketNotifier::Read, this); connect(udevNotifier, SIGNAL(activated(int)), this, SLOT(onUdevChanged())); }
/*! \internal */ void QBatteryInfo::connectNotify(const QMetaMethod &signal) { #if defined(Q_OS_LINUX) || defined(Q_OS_WIN) || defined(QT_SIMULATOR) || defined(Q_OS_MAC) QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr); connect(d_ptr, sourceSignal, this, signal, Qt::UniqueConnection); #else Q_UNUSED(signal) #endif }
/*! \internal */ void QStorageInfo_Custom::connectNotify(const QMetaMethod &signal) { #if defined(Q_OS_LINUX) || defined(Q_OS_WIN) || defined(Q_OS_MAC) QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr); connect(d_ptr, sourceSignal, this, signal, Qt::UniqueConnection); #else Q_UNUSED(signal) #endif }
/*! \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 }
/*! \internal When someone connects to this manager, connect the corresponding signal from the engine, if we haven't before. If we have, just increment a count. This allows lazy evaluation on the engine side (e.g. setting up dbus watchers) and prevents unnecessary work. */ void QContactManager::connectNotify(const QMetaMethod &signal) { /* For most signals we just connect from the engine to ourselves, since we just proxy, but we should connect only once */ QMetaMethod sourceSignal = proxyToSourceSignal(signal, d->m_engine); connect(d->m_engine, sourceSignal, this, signal, Qt::UniqueConnection); }