Esempio n. 1
0
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;
}
Esempio n. 2
0
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);
}