void EmailAccountWizardAccountPage::startFutureWatcher() { Q_D(EmailAccountWizardAccountPage); QString emailAddress = field(kFieldEmailAddress).toString(); Q_ASSERT(!emailAddress.isEmpty()); if (emailAddress.isEmpty()) return; int index = emailAddress.indexOf('@'); Q_ASSERT(index > 0); if (index < 1) return; QString domain = emailAddress.mid(index + 1); Q_ASSERT(!domain.isEmpty()); if (domain.isEmpty()) return; startBusyIndicator(); disableButtons(); QFuture<SmartList<ServiceProviderInfo*>*> future = QtConcurrent::run( this, &EmailAccountWizardAccountPage::enumerateServiceProviders, QString(domain)); ForgettableWatcherType* futureWatcher = new ForgettableWatcherType(); connect(futureWatcher, SIGNAL(finished()), this, SLOT(enumerationFinished())); futureWatcher->setFuture(future); d->m_futureWatcher = futureWatcher; d->m_futureStarted = true; }
void PortEnumerator::enumeratePorts() { QList<QSerialPortInfo> ports = QSerialPortInfo::availablePorts(); QMutexLocker locker(&mutex_); portsList_.clear(); for (const QSerialPortInfo& portInfo : ports) { SerialPortInfo info(portInfo); portsList_ << info; } std::sort(portsList_.begin(), portsList_.end(), SerialPortInfo::compare); emit enumerationFinished(); QTimer::singleShot(1000, this, &PortEnumerator::enumeratePorts); }