Added checkboxes to the files in the commit dialog

FossilOrigin-Name: 30fdcc0810046768f9635d4972026cadb1bb9dd3
This commit is contained in:
kostas 2011-09-04 04:17:52 +00:00
parent ea8419286c
commit a38503538c
5 changed files with 50 additions and 25 deletions

View File

@ -3,7 +3,7 @@
#include "ui_CommitDialog.h" #include "ui_CommitDialog.h"
#include "MainWindow.h" // Ugly. I know. #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), QDialog(parent, Qt::Sheet),
ui(new Ui::CommitDialog) ui(new Ui::CommitDialog)
{ {
@ -14,8 +14,12 @@ CommitDialog::CommitDialog(QWidget *parent, const QStringList &commitMsgHistory,
ui->listView->setModel(&itemModel); ui->listView->setModel(&itemModel);
for(QStringList::const_iterator it=files.begin(); it!=files.end(); ++it) 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); CommitDialog dlg(parent, commitMsgHistory, files);
int res = dlg.exec(); int res = dlg.exec();
if(res==QDialog::Accepted) if(res!=QDialog::Accepted)
return false;
files.clear();
for(int i=0; i<dlg.itemModel.rowCount(); ++i)
{ {
commitMsg = dlg.ui->plainTextEdit->toPlainText(); QStandardItem *si = dlg.itemModel.item(i);
return true; 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); 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) void CommitDialog::on_listView_doubleClicked(const QModelIndex &index)
@ -58,3 +64,17 @@ void CommitDialog::on_listView_doubleClicked(const QModelIndex &index)
QString filename = data.toString(); QString filename = data.toString();
reinterpret_cast<MainWindow*>(parent())->diffFile(filename); reinterpret_cast<MainWindow*>(parent())->diffFile(filename);
} }
//------------------------------------------------------------------------------
void CommitDialog::on_listView_clicked(const QModelIndex &)
{
int num_selected = 0;
for(int i=0; i<itemModel.rowCount(); ++i)
{
QStandardItem *si = itemModel.item(i);
if(si->checkState()==Qt::Checked)
++num_selected;
}
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(num_selected>0);
}

View File

@ -13,16 +13,17 @@ class CommitDialog : public QDialog
Q_OBJECT Q_OBJECT
public: public:
explicit CommitDialog(QWidget *parent, const QStringList &commitMsgHistory, const QStringList &files); explicit CommitDialog(QWidget *parent, const QStringList &commitMsgHistory, QStringList &files);
~CommitDialog(); ~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: private slots:
void on_comboBox_activated(const QString &arg1); void on_comboBox_activated(const QString &arg1);
void on_plainTextEdit_textChanged();
void on_listView_doubleClicked(const QModelIndex &index); void on_listView_doubleClicked(const QModelIndex &index);
void on_listView_clicked(const QModelIndex &index);
private: private:
Ui::CommitDialog *ui; Ui::CommitDialog *ui;
QStandardItemModel itemModel; QStandardItemModel itemModel;

View File

@ -1051,6 +1051,10 @@ void MainWindow::on_actionCommit_triggered()
if(!CommitDialog::run(this, msg, commitMessages, modified_files)) if(!CommitDialog::run(this, msg, commitMessages, modified_files))
return; return;
// Since via the commit dialog the user can deselect all files
if(modified_files.empty())
return;
// Do commit // Do commit
commitMessages.push_front(msg); commitMessages.push_front(msg);
QString comment_fname; QString comment_fname;

View File

@ -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 C Added\scheckboxes\sto\sthe\sfiles\sin\sthe\scommit\sdialog
D 2011-09-03T15:03:01.556 D 2011-09-04T04:17:52.743
F CommitDialog.cpp a1fcdc94933f4e1a144224c7c70f1e067d3ee31e F CommitDialog.cpp 8965e52d077c300cf1acb1b16fb2dcca5c7070f8
F CommitDialog.h 0550b1b652924ae54b6f6c9274cad2d4c491808a F CommitDialog.h a9596d99865cf312b419d01d51334ffc916f5508
F CommitDialog.ui 5067623f6af6f5a42c87df903278e383e945e154 F CommitDialog.ui 5067623f6af6f5a42c87df903278e383e945e154
F FileActionDialog.cpp fcaebf9986f789b3440d5390b3458ad5f86fe0c8 F FileActionDialog.cpp fcaebf9986f789b3440d5390b3458ad5f86fe0c8
F FileActionDialog.h 15db1650b3a13d70bc338371e4c033c66e3b79ce F FileActionDialog.h 15db1650b3a13d70bc338371e4c033c66e3b79ce
F FileActionDialog.ui c63644428579741aeb5fa052e237ba799ced9ad7 F FileActionDialog.ui c63644428579741aeb5fa052e237ba799ced9ad7
F MainWindow.cpp 741cb2db89baf6330d3bfe87c99fb5918b5b2516 F MainWindow.cpp 5ef8e7de011610db2d29f168ffec64ea0374a42b
F MainWindow.h cb4d2ab3c3fb3ecc26c5d162358316516090a89e F MainWindow.h cb4d2ab3c3fb3ecc26c5d162358316516090a89e
F MainWindow.ui fcce2709fd2dc332061ee72cbc5a5a17adfd0779 F MainWindow.ui fcce2709fd2dc332061ee72cbc5a5a17adfd0779
F RepoDialog.cpp 8f20e1511526973555c774350ec413dcecf51c9e F RepoDialog.cpp 8f20e1511526973555c774350ec413dcecf51c9e
@ -173,7 +173,7 @@ F icons/fuel.icns 81e535004b62db801a02f3e15d0a33afc9d4070b
F icons/fuel.ico eb529ab3332a17b9302ef3e851db5b9ebce2a038 F icons/fuel.ico eb529ab3332a17b9302ef3e851db5b9ebce2a038
F main.cpp 083845039c167badd57a4abf482dd3d5e77aab35 F main.cpp 083845039c167badd57a4abf482dd3d5e77aab35
F resources.qrc e98383ed205f4e37100c60057e0129c3b86dea53 F resources.qrc e98383ed205f4e37100c60057e0129c3b86dea53
P 208e56425e61f15f00ee2bbe200de18fda7fbc07 P e8b33f373c855cce60dd9fc528b7684f85849d5d
R b8326070b54d51ef8c16887c4286d870 R d7b970b32c4bc6ca8a9920ccecb4476e
U kostas U kostas
Z ba35c3d1bb569a4e3dbcd9d6ff41a92f Z ff80aa0bb5b34a82362b3abf93044c9d

View File

@ -1 +1 @@
e8b33f373c855cce60dd9fc528b7684f85849d5d 30fdcc0810046768f9635d4972026cadb1bb9dd3