From 3d0827763e2c2833a4a6c8497b631160158ffb6d Mon Sep 17 00:00:00 2001 From: kostas Date: Sat, 6 Aug 2011 15:34:40 +0000 Subject: [PATCH] FileActionDialog now supports variable modal buttons FossilOrigin-Name: d80b84c6b58b7daf71174d32a8c33cab0e2aabac --- FileActionDialog.cpp | 31 ++++++++++++++++++++++++------- FileActionDialog.h | 19 ++++++++++++++----- FileActionDialog.ui | 3 --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- 5 files changed, 47 insertions(+), 24 deletions(-) diff --git a/FileActionDialog.cpp b/FileActionDialog.cpp index ef4e4f7..bdbabfd 100644 --- a/FileActionDialog.cpp +++ b/FileActionDialog.cpp @@ -1,9 +1,11 @@ +#include #include "FileActionDialog.h" #include "ui_FileActionDialog.h" -FileActionDialog::FileActionDialog(QWidget *parent, const QString &title, const QString &message, const QStringList &files, const QString &checkBoxText, bool *checkBoxResult) : +FileActionDialog::FileActionDialog(QWidget *parent, const QString &title, const QString &message, const QStringList &listData, const QString &checkBoxText, bool *checkBoxResult) : QDialog(parent, Qt::Sheet), - ui(new Ui::FileActionDialog) + ui(new Ui::FileActionDialog), + clickedButton(QDialogButtonBox::NoButton) { ui->setupUi(this); setWindowTitle(title); @@ -20,9 +22,8 @@ FileActionDialog::FileActionDialog(QWidget *parent, const QString &title, const ui->verticalLayout->insertWidget(2, checkBox); } - - for(QStringList::const_iterator it=files.begin(); it!=files.end(); ++it) - itemModel.appendRow(new QStandardItem(*it)); + foreach(const QString &s, listData) + itemModel.appendRow(new QStandardItem(s)); } FileActionDialog::~FileActionDialog() @@ -30,9 +31,9 @@ FileActionDialog::~FileActionDialog() delete ui; } -bool FileActionDialog::run(QWidget *parent, const QString &title, const QString &message, const QStringList &files, const QString &checkBoxText, bool *checkBoxResult) +bool FileActionDialog::run(QWidget *parent, const QString &title, const QString &message, const QStringList &listData, const QString &checkBoxText, bool *checkBoxResult) { - FileActionDialog dlg(parent, title, message, files, checkBoxText, checkBoxResult); + FileActionDialog dlg(parent, title, message, listData, checkBoxText, checkBoxResult); int res = dlg.exec(); if(!checkBoxText.isEmpty() && checkBoxResult && dlg.checkBox) @@ -40,3 +41,19 @@ bool FileActionDialog::run(QWidget *parent, const QString &title, const QString return res == QDialog::Accepted; } + +QDialogButtonBox::StandardButton FileActionDialog::runStandardButtons(QWidget *parent, StandardButtons buttons, const QString &title, const QString &message, const QStringList &listData) +{ + FileActionDialog dlg(parent, title, message, listData); + dlg.ui->buttonBox->setStandardButtons(buttons); + + dlg.exec(); + return dlg.clickedButton; +} + +void FileActionDialog::on_buttonBox_clicked(QAbstractButton *button) +{ + // Retrieve the flag corresponding to the standard clicked + clickedButton = ui->buttonBox->standardButton(button); +} + diff --git a/FileActionDialog.h b/FileActionDialog.h index ca8ee80..f408619 100644 --- a/FileActionDialog.h +++ b/FileActionDialog.h @@ -3,7 +3,7 @@ #include #include -#include +#include namespace Ui { class FileActionDialog; @@ -12,18 +12,27 @@ namespace Ui { class FileActionDialog : public QDialog { Q_OBJECT - public: - explicit FileActionDialog(QWidget *parent, const QString &title, const QString &message, const QStringList &files, const QString &checkBoxText=QString(), bool *checkBoxResult=0); + explicit FileActionDialog(QWidget *parent, const QString &title, const QString &message, const QStringList &listData, const QString &checkBoxText=QString(), bool *checkBoxResult=0); ~FileActionDialog(); - static bool run(QWidget *parent, const QString &title, const QString &message, const QStringList &files, const QString &checkBoxText=QString(), bool *checkBoxResult=0); + static bool run(QWidget *parent, const QString &title, const QString &message, const QStringList &listData, const QString &checkBoxText=QString(), bool *checkBoxResult=0); + + typedef QDialogButtonBox::StandardButton StandardButton; + typedef QDialogButtonBox::StandardButtons StandardButtons; + + static StandardButton runStandardButtons(QWidget *parent, StandardButtons, const QString &title, const QString &message, const QStringList &listData); + + +private slots: + void on_buttonBox_clicked(QAbstractButton *button); private: Ui::FileActionDialog *ui; QStandardItemModel itemModel; - QCheckBox *checkBox; + class QCheckBox *checkBox; bool *checkBoxResult; + StandardButton clickedButton; }; #endif // FILEACTIONDIALOG_H diff --git a/FileActionDialog.ui b/FileActionDialog.ui index 9d287a8..b686a2f 100644 --- a/FileActionDialog.ui +++ b/FileActionDialog.ui @@ -48,9 +48,6 @@ - - Qt::Horizontal - QDialogButtonBox::Cancel|QDialogButtonBox::Ok diff --git a/manifest b/manifest index 7049b9e..04fadb6 100644 --- a/manifest +++ b/manifest @@ -1,11 +1,11 @@ -C Removed\sclone\srepository\scommand\s(for\snow) -D 2011-08-06T08:52:52.947 +C FileActionDialog\snow\ssupports\svariable\smodal\sbuttons\n +D 2011-08-06T15:34:40.595 F CommitDialog.cpp a1fcdc94933f4e1a144224c7c70f1e067d3ee31e F CommitDialog.h 0550b1b652924ae54b6f6c9274cad2d4c491808a F CommitDialog.ui 5067623f6af6f5a42c87df903278e383e945e154 -F FileActionDialog.cpp ed26a6f9dd1debd6926d4bbff7ba18acb63dacc0 -F FileActionDialog.h 873a9f720753a37d67071563ed7954f91b0d4699 -F FileActionDialog.ui 3d4f7ad0665d51dc3ba405edbc472dd317138c5f +F FileActionDialog.cpp 629f29f676f3e547965f350fb9a4ee5797cc3e0b +F FileActionDialog.h 15db1650b3a13d70bc338371e4c033c66e3b79ce +F FileActionDialog.ui c63644428579741aeb5fa052e237ba799ced9ad7 F MainWindow.cpp 96ce6b4bb5ee66f04a43e2171b20e8ee510a5ac7 F MainWindow.h 8a23caf1a70d41fe60a25894649a88b1efb851ba F MainWindow.ui 9f901c1f06b24df3cbd36d5349ffe0d82896c05b @@ -173,7 +173,7 @@ F icons/fuel.icns 81e535004b62db801a02f3e15d0a33afc9d4070b F icons/fuel.ico eb529ab3332a17b9302ef3e851db5b9ebce2a038 F main.cpp aed85ed9766ddb8685e300e8ca4a0dc193ae2586 F resources.qrc e98383ed205f4e37100c60057e0129c3b86dea53 -P 797c2e6a66cb336351d569ab80737a7e491403f0 -R b71e721aa96a201b7c70272083f26743 +P 665b2ad1b609530a9c2c2815e143213e5e691100 +R 1f233c6d016ce42191b217639282c217 U kostas -Z 5723c9d6f3d128a270ccbc410612a6ae +Z f4122d426b89a67b7273148c8690abf1 diff --git a/manifest.uuid b/manifest.uuid index 030902c..b1b89c2 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -665b2ad1b609530a9c2c2815e143213e5e691100 \ No newline at end of file +d80b84c6b58b7daf71174d32a8c33cab0e2aabac \ No newline at end of file