From a38503538ca1b060557151bc7b4664c7f7c01b6b Mon Sep 17 00:00:00 2001 From: kostas Date: Sun, 4 Sep 2011 04:17:52 +0000 Subject: [PATCH] Added checkboxes to the files in the commit dialog FossilOrigin-Name: 30fdcc0810046768f9635d4972026cadb1bb9dd3 --- CommitDialog.cpp | 46 +++++++++++++++++++++++++++++++++------------- CommitDialog.h | 7 ++++--- MainWindow.cpp | 4 ++++ manifest | 16 ++++++++-------- manifest.uuid | 2 +- 5 files changed, 50 insertions(+), 25 deletions(-) diff --git a/CommitDialog.cpp b/CommitDialog.cpp index cd5f4f9..5555d28 100644 --- a/CommitDialog.cpp +++ b/CommitDialog.cpp @@ -3,7 +3,7 @@ #include "ui_CommitDialog.h" #include "MainWindow.h" // Ugly. I know. -CommitDialog::CommitDialog(QWidget *parent, const QStringList &commitMsgHistory, const QStringList &files) : +CommitDialog::CommitDialog(QWidget *parent, const QStringList &commitMsgHistory, QStringList &files) : QDialog(parent, Qt::Sheet), ui(new Ui::CommitDialog) { @@ -14,8 +14,12 @@ CommitDialog::CommitDialog(QWidget *parent, const QStringList &commitMsgHistory, ui->listView->setModel(&itemModel); for(QStringList::const_iterator it=files.begin(); it!=files.end(); ++it) - itemModel.appendRow(new QStandardItem(*it)); - + { + QStandardItem *si = new QStandardItem(*it); + si->setCheckable(true); + si->setCheckState(Qt::Checked); + itemModel.appendRow(si); + } } @@ -26,17 +30,24 @@ CommitDialog::~CommitDialog() } //------------------------------------------------------------------------------ -bool CommitDialog::run(QWidget *parent, QString &commitMsg, const QStringList &commitMsgHistory, const QStringList &files) +bool CommitDialog::run(QWidget *parent, QString &commitMsg, const QStringList &commitMsgHistory, QStringList &files) { CommitDialog dlg(parent, commitMsgHistory, files); int res = dlg.exec(); - if(res==QDialog::Accepted) + if(res!=QDialog::Accepted) + return false; + + files.clear(); + for(int i=0; iplainTextEdit->toPlainText(); - return true; + QStandardItem *si = dlg.itemModel.item(i); + if(si->checkState()!=Qt::Checked) + continue; + files.append(si->text()); } - return false; + commitMsg = dlg.ui->plainTextEdit->toPlainText(); + return true; } //------------------------------------------------------------------------------ @@ -45,11 +56,6 @@ void CommitDialog::on_comboBox_activated(const QString &arg1) ui->plainTextEdit->setPlainText(arg1); } -//------------------------------------------------------------------------------ -void CommitDialog::on_plainTextEdit_textChanged() -{ - ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!ui->plainTextEdit->toPlainText().isEmpty()); -} //------------------------------------------------------------------------------ void CommitDialog::on_listView_doubleClicked(const QModelIndex &index) @@ -58,3 +64,17 @@ void CommitDialog::on_listView_doubleClicked(const QModelIndex &index) QString filename = data.toString(); reinterpret_cast(parent())->diffFile(filename); } + +//------------------------------------------------------------------------------ +void CommitDialog::on_listView_clicked(const QModelIndex &) +{ + int num_selected = 0; + for(int i=0; icheckState()==Qt::Checked) + ++num_selected; + } + + ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(num_selected>0); +} diff --git a/CommitDialog.h b/CommitDialog.h index b28caf2..05228cc 100644 --- a/CommitDialog.h +++ b/CommitDialog.h @@ -13,16 +13,17 @@ class CommitDialog : public QDialog Q_OBJECT public: - explicit CommitDialog(QWidget *parent, const QStringList &commitMsgHistory, const QStringList &files); + explicit CommitDialog(QWidget *parent, const QStringList &commitMsgHistory, QStringList &files); ~CommitDialog(); - static bool run(QWidget *parent, QString &commitMsg, const QStringList &commitMsgHistory, const QStringList &files); + static bool run(QWidget *parent, QString &commitMsg, const QStringList &commitMsgHistory, QStringList &files); private slots: void on_comboBox_activated(const QString &arg1); - void on_plainTextEdit_textChanged(); void on_listView_doubleClicked(const QModelIndex &index); + void on_listView_clicked(const QModelIndex &index); + private: Ui::CommitDialog *ui; QStandardItemModel itemModel; diff --git a/MainWindow.cpp b/MainWindow.cpp index b162285..0d21860 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -1051,6 +1051,10 @@ void MainWindow::on_actionCommit_triggered() if(!CommitDialog::run(this, msg, commitMessages, modified_files)) return; + // Since via the commit dialog the user can deselect all files + if(modified_files.empty()) + return; + // Do commit commitMessages.push_front(msg); QString comment_fname; diff --git a/manifest b/manifest index 28a48de..196a849 100644 --- a/manifest +++ b/manifest @@ -1,12 +1,12 @@ -C Fixed\sfossil\sprocess\stermination\son\sWindows\nAbstracted\sfossil\sui\surl\nAdded\s(disabled)\scode\sto\sdetect\sfossil\sui\slaunch\sport\n -D 2011-09-03T15:03:01.556 -F CommitDialog.cpp a1fcdc94933f4e1a144224c7c70f1e067d3ee31e -F CommitDialog.h 0550b1b652924ae54b6f6c9274cad2d4c491808a +C Added\scheckboxes\sto\sthe\sfiles\sin\sthe\scommit\sdialog +D 2011-09-04T04:17:52.743 +F CommitDialog.cpp 8965e52d077c300cf1acb1b16fb2dcca5c7070f8 +F CommitDialog.h a9596d99865cf312b419d01d51334ffc916f5508 F CommitDialog.ui 5067623f6af6f5a42c87df903278e383e945e154 F FileActionDialog.cpp fcaebf9986f789b3440d5390b3458ad5f86fe0c8 F FileActionDialog.h 15db1650b3a13d70bc338371e4c033c66e3b79ce F FileActionDialog.ui c63644428579741aeb5fa052e237ba799ced9ad7 -F MainWindow.cpp 741cb2db89baf6330d3bfe87c99fb5918b5b2516 +F MainWindow.cpp 5ef8e7de011610db2d29f168ffec64ea0374a42b F MainWindow.h cb4d2ab3c3fb3ecc26c5d162358316516090a89e F MainWindow.ui fcce2709fd2dc332061ee72cbc5a5a17adfd0779 F RepoDialog.cpp 8f20e1511526973555c774350ec413dcecf51c9e @@ -173,7 +173,7 @@ F icons/fuel.icns 81e535004b62db801a02f3e15d0a33afc9d4070b F icons/fuel.ico eb529ab3332a17b9302ef3e851db5b9ebce2a038 F main.cpp 083845039c167badd57a4abf482dd3d5e77aab35 F resources.qrc e98383ed205f4e37100c60057e0129c3b86dea53 -P 208e56425e61f15f00ee2bbe200de18fda7fbc07 -R b8326070b54d51ef8c16887c4286d870 +P e8b33f373c855cce60dd9fc528b7684f85849d5d +R d7b970b32c4bc6ca8a9920ccecb4476e U kostas -Z ba35c3d1bb569a4e3dbcd9d6ff41a92f +Z ff80aa0bb5b34a82362b3abf93044c9d diff --git a/manifest.uuid b/manifest.uuid index bd047f0..094f83c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e8b33f373c855cce60dd9fc528b7684f85849d5d \ No newline at end of file +30fdcc0810046768f9635d4972026cadb1bb9dd3 \ No newline at end of file