Exemple #1
0
QMessageAccountId addAccount(const Parameters &params)
{
    qWarning() << "ADDDDD";
    QString name(params["name"]);
    QString fromAddress(params["fromAddress"]);

    if (!name.isEmpty()) {
        QMailAccount account;
        account.setName(name);
        account.setStatus(QMailAccount::Enabled, true);
        account.setStatus(QMailAccount::CanTransmit, true);
        account.setMessageType(QMailMessage::Email);

        if (!fromAddress.isEmpty()) {
            account.setFromAddress(QMailAddress(QString(), fromAddress));
        }

        // Ensure that we initialise to the current version for file storage
        const QString key("qmfstoragemanager");

        QMailAccountConfiguration config;
        config.addServiceConfiguration(key);
        QMailAccountConfiguration::ServiceConfiguration &svcCfg(config.serviceConfiguration(key));
        svcCfg.setValue("servicetype", "storage");
        svcCfg.setValue("version", "101");

        if (!QMailStore::instance()->addAccount(&account, &config)) {
            qWarning() << "Unable to addAccount:" << name;
        } else {
            return QmfHelpers::convert(account.id());
        }
    }

    return QMessageAccountId();
}
bool QmfSettings::updateAccount(QMailAccount *, QMailAccountConfiguration *config)
{
    if (!config->services().contains(serviceKey))
        config->addServiceConfiguration(serviceKey);

    QMailAccountConfiguration::ServiceConfiguration &svcCfg(config->serviceConfiguration(serviceKey));
    svcCfg.setValue("version", "101");
    svcCfg.setValue("servicetype", "storage");

    svcCfg.setValue("basePath", locations[locationSelector->currentIndex()].second);
    return true;
}
bool AccountInfo::accountIsValid()
{
    m_account->setName (m_displayName);

    m_account->setStatus (QMailAccount::PreferredSender, true);

    //% "IMAP"
    if (m_inServerType.compare(qtTrId("xx_imap"), Qt::CaseInsensitive) == 0)
    {
        if (!m_config->services().contains(imapServiceKey))
            m_config->addServiceConfiguration(imapServiceKey);

        EmailServiceConfiguration imapConfig (m_config, imapServiceKey);
        imapConfig.setVersion(100);
        imapConfig.setType(QMailServiceConfiguration::Source);

        imapConfig.setValue ("username", m_inUsername);
        imapConfig.setValue ("password", imapConfig.encode(m_inPassword));
        imapConfig.setValue ("server", m_inServerAddress);
        imapConfig.setIntValue ("port",  (m_inPort == -1 ? 143 : m_inPort));

        QMailTransport::EncryptType encrypType = QMailTransport::Encrypt_NONE;
        //% "SSL"
        if (QString::compare(m_inSecurity, qtTrId("xx_ssl"), Qt::CaseInsensitive) == 0)
           encrypType = QMailTransport::Encrypt_SSL;
        //% "TLS"
        else if (QString::compare(m_inSecurity, qtTrId("xx_tls"), Qt::CaseInsensitive) == 0)
           encrypType = QMailTransport::Encrypt_TLS;

        imapConfig.setIntValue ("encryption", encrypType);
          
        int interval = EmailSettingsPage::instance()->frequency();
        imapConfig.setIntValue("checkInterval", interval);

        // Todo:  the following options will be handled by email settings.
        //        For now, just set them to a good known default value.
        imapConfig.setIntValue("autoDownload", true);
        imapConfig.setValue("textSubtype", "plain");
        imapConfig.setIntValue("pushEnabled", true);
        imapConfig.setIntValue("maxSize", 30);
        imapConfig.setIntValue("canDelete", true);
        imapConfig.setIntValue("intervalCheckRoamingEnabled", true);

        imapConfig.setValue("pushFolders", "INBOX");
        m_account->setStatus(QMailAccount::CanCreateFolders, true);
        m_account->setStatus(QMailAccount::CanRetrieve, true);
    } 
    //% "POP"
    else if (m_inServerType.compare(qtTrId("xx_pop"), Qt::CaseInsensitive) == 0)
    {
        if (!m_config->services().contains(popServiceKey))
            m_config->addServiceConfiguration(popServiceKey);

        EmailServiceConfiguration popConfig (m_config, popServiceKey);

        popConfig.setVersion(100);
        popConfig.setType(QMailServiceConfiguration::Source);

        popConfig.setValue ("username", m_inUsername);
        popConfig.setValue ("password", popConfig.encode(m_inPassword));
        popConfig.setValue ("server", m_inServerAddress);
        popConfig.setIntValue ("port",  (m_inPort == -1 ? 143 : m_inPort));

        QMailTransport::EncryptType encrypType = QMailTransport::Encrypt_NONE;
        //% "SSL"
        if (QString::compare(m_inSecurity, qtTrId("xx_ssl"), Qt::CaseInsensitive) == 0)
           encrypType = QMailTransport::Encrypt_SSL;
        //% "TLS"
        else if (QString::compare(m_inSecurity, qtTrId("xx_tls"), Qt::CaseInsensitive) == 0)
           encrypType = QMailTransport::Encrypt_TLS;

        popConfig.setIntValue ("encryption", encrypType);

        int interval = EmailSettingsPage::instance()->frequency();
        popConfig.setIntValue("checkInterval", interval);

        // Todo:  the following options will be handled by email settings.
        //        For now, just set them to a good known default value.
        popConfig.setIntValue("autoDownload", true);
        popConfig.setValue("textSubtype", "plain");
        popConfig.setIntValue("pushEnabled", true);
        popConfig.setIntValue("maxSize", 30);
        popConfig.setIntValue("canDelete", true);
        popConfig.setIntValue("intervalCheckRoamingEnabled", true);

        m_account->setStatus(QMailAccount::CanRetrieve, true);

    }

    //% "SMTP"
    if (m_outServerType.compare(qtTrId("xx_smtp"), Qt::CaseInsensitive) == 0)
    {
        m_account->setFromAddress(QMailAddress(m_emailAddress));

        if (!m_config->services().contains(smtpServiceKey))
            m_config->addServiceConfiguration(smtpServiceKey);

        EmailServiceConfiguration smtpConfig (m_config, smtpServiceKey);

        smtpConfig.setVersion(100);
        smtpConfig.setType(QMailServiceConfiguration::Sink);

        smtpConfig.setValue("address", m_emailAddress);
        smtpConfig.setValue("server", m_outServerAddress);
        smtpConfig.setIntValue("port", (m_outPort == -1 ? 25 : m_outPort));

        smtpConfig.setIntValue("authentication", m_outAuthentication);

        if (m_outAuthentication != 0)
        {
            smtpConfig.setValue("smtpusername", m_outUsername);
            smtpConfig.setValue("smtppassword", smtpConfig.encode(m_outPassword));
        }

        QMailTransport::EncryptType encrypType = QMailTransport::Encrypt_NONE;
        //% "SSL"
        if (QString::compare(m_outSecurity, qtTrId("xx_ssl"), Qt::CaseInsensitive) == 0)
           encrypType = QMailTransport::Encrypt_SSL;
        //% "TLS"
        else if (QString::compare(m_outSecurity, qtTrId("xx_tls"), Qt::CaseInsensitive) == 0)
           encrypType = QMailTransport::Encrypt_TLS;
        smtpConfig.setIntValue("encryption", encrypType);

        m_account->setStatus(QMailAccount::PreferredSender, true);

        QString signature = EmailSettingsPage::instance()->signature();

        if (signature.size() > 0)
        {
            m_account->setStatus(QMailAccount::AppendSignature, true);
            m_account->setSignature(signature);
        }
        else
        {
            m_account->setStatus(QMailAccount::AppendSignature, false);
            m_account->setSignature("");
        }

        m_account->setStatus(QMailAccount::MessageSink, true);

        if (!smtpConfig.value("server").isEmpty() && !smtpConfig.value("address").isEmpty())
            m_account->setStatus(QMailAccount::CanTransmit, true);
    }

    if (!m_config->services().contains(storageServiceKey))
        m_config->addServiceConfiguration(storageServiceKey);

    QMailAccountConfiguration::ServiceConfiguration &svcCfg(m_config->serviceConfiguration(storageServiceKey));
    svcCfg.setValue("version", "101");
    svcCfg.setValue("servicetype", "storage");

    svcCfg.setValue("basePath", "");

    if (m_account->id().isValid())
    {   // We are dealing with an existing account just update the account.
        QMailStore::instance()->updateAccount(m_account, m_config);
    }
    else
    {
        QMailStore::instance()->addAccount(m_account, m_config);
    }
    QTimer::singleShot(10, this, SLOT(testAccountConfiguration()));
    return true;
}