00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "ListInputDialog.h"
00017
00018 #include <QVBoxLayout>
00019 #include <QHBoxLayout>
00020 #include <QLabel>
00021 #include <QStringList>
00022 #include <QRadioButton>
00023 #include <QPushButton>
00024 #include <QDialogButtonBox>
00025
00026 ListInputDialog::ListInputDialog(QWidget *parent, const QString &title,
00027 const QString &labelText, const QStringList &list,
00028 int current, Qt::WFlags f) :
00029 QDialog(parent, f),
00030 m_strings(list)
00031 {
00032 setWindowTitle(title);
00033
00034 QVBoxLayout *vbox = new QVBoxLayout(this);
00035
00036 QLabel *label = new QLabel(labelText, this);
00037 vbox->addWidget(label);
00038 vbox->addStretch(1);
00039
00040 int count = 0;
00041 for (QStringList::const_iterator i = list.begin(); i != list.end(); ++i) {
00042 QRadioButton *radio = new QRadioButton(*i);
00043 if (current == count++) radio->setChecked(true);
00044 m_radioButtons.push_back(radio);
00045 vbox->addWidget(radio);
00046 }
00047
00048 vbox->addStretch(1);
00049
00050 m_footnote = new QLabel;
00051 vbox->addWidget(m_footnote);
00052 m_footnote->hide();
00053
00054 QDialogButtonBox *bb = new QDialogButtonBox(QDialogButtonBox::Ok |
00055 QDialogButtonBox::Cancel);
00056 vbox->addWidget(bb);
00057 connect(bb, SIGNAL(accepted()), this, SLOT(accept()));
00058 connect(bb, SIGNAL(rejected()), this, SLOT(reject()));
00059 }
00060
00061 ListInputDialog::~ListInputDialog()
00062 {
00063 }
00064
00065 QString
00066 ListInputDialog::getCurrentString() const
00067 {
00068 for (size_t i = 0; i < m_radioButtons.size(); ++i) {
00069 if (m_radioButtons[i]->isChecked()) {
00070 return m_strings[i];
00071 }
00072 }
00073 return "";
00074 }
00075
00076 void
00077 ListInputDialog::setItemAvailability(int item, bool available)
00078 {
00079 m_radioButtons[item]->setEnabled(available);
00080 }
00081
00082 void
00083 ListInputDialog::setFootnote(QString footnote)
00084 {
00085 m_footnote->setText(footnote);
00086 m_footnote->show();
00087 }
00088
00089 QString
00090 ListInputDialog::getItem(QWidget *parent, const QString &title,
00091 const QString &label, const QStringList &list,
00092 int current, bool *ok, Qt::WFlags f)
00093 {
00094 ListInputDialog dialog(parent, title, label, list, current, f);
00095
00096 bool accepted = (dialog.exec() == QDialog::Accepted);
00097 if (ok) *ok = accepted;
00098
00099 return dialog.getCurrentString();
00100 }
00101