00001 #include "widgetdialog.h"
00002
00003 #include <QVBoxLayout>
00004 #include <QDialogButtonBox>
00005 #include <QAbstractButton>
00006
00007 using namespace ui;
00008
00009 WidgetDialog::WidgetDialog(QWidget* widget, QWidget* parent,
00010 const QStringList& options) : QDialog(parent)
00011 {
00012 if (widget != 0)
00013 {
00014 widget->setParent(this);
00015
00016 QVBoxLayout* layout = new QVBoxLayout(this);
00017 layout->addWidget(widget);
00018
00019 QDialogButtonBox* buttons = new QDialogButtonBox(this);
00020 layout->addWidget(buttons);
00021
00022 if (options.isEmpty())
00023 {
00024 buttons->addButton(QDialogButtonBox::Ok);
00025 buttons->addButton(QDialogButtonBox::Cancel);
00026 }
00027 else
00028 {
00029 Q_FOREACH (QString option, options)
00030 {
00031 if (option.toLower() == "ok")
00032 buttons->addButton(QDialogButtonBox::Ok);
00033 else if (option.toLower() == "cancel")
00034 buttons->addButton(QDialogButtonBox::Cancel);
00035 else if (option.toLower() == "yes")
00036 buttons->addButton(QDialogButtonBox::Yes);
00037 else if (option.toLower() == "no")
00038 buttons->addButton(QDialogButtonBox::No);
00039 else
00040 buttons->addButton(option, QDialogButtonBox::AcceptRole);
00041 }
00042
00043 connect(buttons, SIGNAL(clicked(QAbstractButton*)),
00044 this, SLOT(handleClick(QAbstractButton*)));
00045 }
00046
00047 connect(buttons, SIGNAL(accepted()), this, SLOT(accept()));
00048 connect(buttons, SIGNAL(rejected()), this, SLOT(reject()));
00049 resize(widget->sizeHint());
00050 }
00051 }
00052
00053 QString WidgetDialog::chosenOption()
00054 {
00055 return clickedText;
00056 }
00057
00058 void WidgetDialog::handleClick(QAbstractButton* button)
00059 {
00060 clickedText = button->text();
00061 }