void ToolPage::programNdef() {
    QSettings settings;
    YubiKeyWriter *writer = YubiKeyWriter::getInstance();
    bool uri = true;
    QString language;
    QString payload;
    int slot;
    if(ui->ndefTextRadio->isChecked()) {
        uri = false;
        language = ui->ndefTextLangEdit->text().trimmed();
        if(language.isEmpty()) {
            return;
        }
    }
    payload = ui->ndefEdit->text().trimmed();
    if(payload.isEmpty()) {
        return;
    }

    if(uri && !settings.value(SG_NDEF_WITHOUT_HTTP).toBool()) {
        if(!payload.startsWith("http")) {
            ConfirmBox confirm(this);
            confirm.setConfirmIndex(ConfirmBox::Confirm_NdefWithoutHttp);
            int ret = confirm.exec();
            if(ret != 1) // 1 is yes
                return;
        }
    }

    if(ui->ndefSlot1Radio->isChecked()) {
        slot = 1;
    } else if(ui->ndefSlot2Radio->isChecked()) {
        slot = 2;
    } else {
        emit showStatusMessage(tr(ERR_CONF_SLOT_NOT_SELECTED), 1);
        return;
    }

    connect(writer, SIGNAL(configWritten(bool, const QString &)),
            this, SLOT(ndefWritten(bool, const QString &)));
    writer->writeNdef(uri, language, payload, ui->ndefAccCodeEdit->text().remove(" "), slot);
}
void ToolPage::programNdef() {
    YubiKeyWriter *writer = YubiKeyWriter::getInstance();
    bool uri = true;
    QString language;
    QString payload;
    if(ui->ndefTextRadio->isChecked()) {
        uri = false;
        language = ui->ndefTextLangEdit->text().trimmed();
        if(language.isEmpty()) {
            return;
        }
    }
    payload = ui->ndefEdit->text().trimmed();
    if(payload.isEmpty()) {
        return;
    }

    connect(writer, SIGNAL(configWritten(bool, const QString &)),
            this, SLOT(ndefWritten(bool, const QString &)));
    writer->writeNdef(uri, language, payload);
}