lbajardsilogic@0: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@0: lbajardsilogic@0: /* lbajardsilogic@0: Sonic Visualiser lbajardsilogic@0: An audio file viewer and annotation editor. lbajardsilogic@0: Centre for Digital Music, Queen Mary, University of London. lbajardsilogic@0: This file copyright 2006 Chris Cannam. lbajardsilogic@0: lbajardsilogic@0: This program is free software; you can redistribute it and/or lbajardsilogic@0: modify it under the terms of the GNU General Public License as lbajardsilogic@0: published by the Free Software Foundation; either version 2 of the lbajardsilogic@0: License, or (at your option) any later version. See the file lbajardsilogic@0: COPYING included with this distribution for more information. lbajardsilogic@0: */ lbajardsilogic@0: lbajardsilogic@0: #include "ListInputDialog.h" lbajardsilogic@0: lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: lbajardsilogic@0: ListInputDialog::ListInputDialog(QWidget *parent, const QString &title, lbajardsilogic@0: const QString &labelText, const QStringList &list, lbajardsilogic@0: int current, Qt::WFlags f) : lbajardsilogic@0: QDialog(parent, f), lbajardsilogic@0: m_strings(list) lbajardsilogic@0: { lbajardsilogic@0: setWindowTitle(title); lbajardsilogic@0: lbajardsilogic@0: QVBoxLayout *vbox = new QVBoxLayout(this); lbajardsilogic@0: lbajardsilogic@0: QLabel *label = new QLabel(labelText, this); lbajardsilogic@0: vbox->addWidget(label); lbajardsilogic@0: vbox->addStretch(1); lbajardsilogic@0: lbajardsilogic@0: int count = 0; lbajardsilogic@0: for (QStringList::const_iterator i = list.begin(); i != list.end(); ++i) { lbajardsilogic@0: QRadioButton *radio = new QRadioButton(*i); lbajardsilogic@0: if (current == count++) radio->setChecked(true); lbajardsilogic@0: m_radioButtons.push_back(radio); lbajardsilogic@0: vbox->addWidget(radio); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: vbox->addStretch(1); lbajardsilogic@0: lbajardsilogic@0: m_footnote = new QLabel; lbajardsilogic@0: vbox->addWidget(m_footnote); lbajardsilogic@0: m_footnote->hide(); lbajardsilogic@0: lbajardsilogic@0: QHBoxLayout *hbox = new QHBoxLayout; lbajardsilogic@0: vbox->addLayout(hbox, Qt::AlignRight); lbajardsilogic@0: lbajardsilogic@0: QPushButton *ok = new QPushButton(tr("OK"), this); lbajardsilogic@0: ok->setDefault(true); lbajardsilogic@0: lbajardsilogic@0: QPushButton *cancel = new QPushButton(tr("Cancel"), this); lbajardsilogic@0: lbajardsilogic@0: QSize bs = ok->sizeHint().expandedTo(cancel->sizeHint()); lbajardsilogic@0: ok->setFixedSize(bs); lbajardsilogic@0: cancel->setFixedSize(bs); lbajardsilogic@0: lbajardsilogic@0: hbox->addStretch(); lbajardsilogic@0: hbox->addWidget(ok); lbajardsilogic@0: hbox->addWidget(cancel); lbajardsilogic@0: lbajardsilogic@0: QObject::connect(ok, SIGNAL(clicked()), this, SLOT(accept())); lbajardsilogic@0: QObject::connect(cancel, SIGNAL(clicked()), this, SLOT(reject())); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: ListInputDialog::~ListInputDialog() lbajardsilogic@0: { lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: QString lbajardsilogic@0: ListInputDialog::getCurrentString() const lbajardsilogic@0: { lbajardsilogic@0: for (size_t i = 0; i < m_radioButtons.size(); ++i) { lbajardsilogic@0: if (m_radioButtons[i]->isChecked()) { lbajardsilogic@0: return m_strings[i]; lbajardsilogic@0: } lbajardsilogic@0: } lbajardsilogic@0: return ""; lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: ListInputDialog::setItemAvailability(int item, bool available) lbajardsilogic@0: { lbajardsilogic@0: m_radioButtons[item]->setEnabled(available); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: ListInputDialog::setFootnote(QString footnote) lbajardsilogic@0: { lbajardsilogic@0: m_footnote->setText(footnote); lbajardsilogic@0: m_footnote->show(); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: QString lbajardsilogic@0: ListInputDialog::getItem(QWidget *parent, const QString &title, lbajardsilogic@0: const QString &label, const QStringList &list, lbajardsilogic@0: int current, bool *ok, Qt::WFlags f) lbajardsilogic@0: { lbajardsilogic@0: ListInputDialog dialog(parent, title, label, list, current, f); lbajardsilogic@0: lbajardsilogic@0: bool accepted = (dialog.exec() == QDialog::Accepted); lbajardsilogic@0: if (ok) *ok = accepted; lbajardsilogic@0: lbajardsilogic@0: return dialog.getCurrentString(); lbajardsilogic@0: } lbajardsilogic@0: