#include "multiinputdialog.h"
#include <QFormLayout>
#include <QLineEdit>

MultiInputDialog::MultiInputDialog() : DialogBase()
{
    m_fieldContainer = new QWidget( inputWidgetParent() );
    setInputWidget(m_fieldContainer);
    setButtons(QDialogButtonBox::Ok|QDialogButtonBox::Cancel);
    m_fieldContainerLayout = new QFormLayout( m_fieldContainer );
    m_fieldContainer->setLayout( m_fieldContainerLayout );
}

void MultiInputDialog::addLine( const QString &label, const QString &value, bool password )
{
    QLineEdit *edit = new QLineEdit(m_fieldContainer);
    edit->setText(value);
    if( password )
        edit->setEchoMode(QLineEdit::Password);
    m_fieldContainerLayout->addRow( label, edit);

    m_inputs << edit;
}

DialogBase *MultiInputDialog::createWidget( const QString &text, const QStringList &labels, const QStringList &initValues, const QList<bool> &passwords )
{
    if( labels.count() != initValues.count() )
        return 0;

    if( labels.count() != passwords.count() )
        return 0;

    MultiInputDialog *dlg = new MultiInputDialog();
    for( int idx = 0; idx < labels.count(); ++idx )
        dlg->addLine( labels.at(idx), initValues.at(idx), passwords.at(idx) );
    dlg->setText( text );
    return dlg;

}

void MultiInputDialog::slotInputAccepted()
{
    QStringList values;
    foreach( QLineEdit *input, m_inputs )
        values << input->text();
    printOutput( values );
}

