Chris@102: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@102: Chris@102: /* Chris@102: EasyMercurial Chris@102: Chris@102: Based on hgExplorer by Jari Korhonen Chris@102: Copyright (c) 2010 Jari Korhonen Chris@102: Copyright (c) 2010 Chris Cannam Chris@102: Copyright (c) 2010 Queen Mary, University of London Chris@102: Chris@102: This program is free software; you can redistribute it and/or Chris@102: modify it under the terms of the GNU General Public License as Chris@102: published by the Free Software Foundation; either version 2 of the Chris@102: License, or (at your option) any later version. See the file Chris@102: COPYING included with this distribution for more information. Chris@102: */ Chris@102: Chris@102: #include "confirmcommentdialog.h" Chris@102: Chris@102: #include Chris@102: #include Chris@104: #include Chris@104: #include Chris@104: #include Chris@104: #include Chris@102: Chris@105: ConfirmCommentDialog::ConfirmCommentDialog(QWidget *parent, Chris@105: QString title, Chris@105: QString introText, Chris@105: QString initialComment) : Chris@105: QDialog(parent) Chris@105: { Chris@105: setWindowTitle(title); Chris@105: Chris@105: QGridLayout *layout = new QGridLayout; Chris@105: setLayout(layout); Chris@105: QLabel *label = new QLabel(introText); Chris@105: layout->addWidget(label, 0, 0); Chris@105: Chris@105: m_textEdit = new QTextEdit; Chris@105: m_textEdit->setAcceptRichText(false); Chris@105: m_textEdit->document()->setPlainText(initialComment); Chris@105: m_textEdit->setMinimumWidth(360); Chris@105: connect(m_textEdit, SIGNAL(textChanged()), this, SLOT(commentChanged())); Chris@105: layout->addWidget(m_textEdit, 1, 0); Chris@105: Chris@105: QDialogButtonBox *bbox = new QDialogButtonBox(QDialogButtonBox::Ok | Chris@105: QDialogButtonBox::Cancel); Chris@105: layout->addWidget(bbox, 2, 0); Chris@105: m_ok = bbox->button(QDialogButtonBox::Ok); Chris@105: m_ok->setEnabled(initialComment != ""); Chris@105: Chris@105: connect(bbox, SIGNAL(accepted()), this, SLOT(accept())); Chris@105: connect(bbox, SIGNAL(rejected()), this, SLOT(reject())); Chris@105: } Chris@105: Chris@105: void ConfirmCommentDialog::commentChanged() Chris@105: { Chris@105: m_ok->setEnabled(getComment() != ""); Chris@105: } Chris@105: Chris@105: QString ConfirmCommentDialog::getComment() const Chris@105: { Chris@105: return m_textEdit->document()->toPlainText(); Chris@105: } Chris@105: Chris@102: bool ConfirmCommentDialog::confirmFilesAction(QWidget *parent, Chris@102: QString title, Chris@102: QString introText, Chris@102: QString introTextWithCount, Chris@102: QStringList files) Chris@102: { Chris@102: QString text; Chris@102: if (files.size() <= 10) { Chris@102: text = "" + introText; Chris@102: text += ""; Chris@102: foreach (QString file, files) { Chris@102: text += file + "
"; Chris@102: } Chris@102: text += "
"; Chris@102: } else { Chris@102: text = "" + introText.arg(files.size()); Chris@102: } Chris@102: return (QMessageBox::information(parent, Chris@102: title, Chris@102: text, Chris@102: QMessageBox::Ok | QMessageBox::Cancel, Chris@102: QMessageBox::Ok) Chris@102: == QMessageBox::Ok); Chris@102: } Chris@102: Chris@102: bool ConfirmCommentDialog::confirmAndComment(QWidget *parent, Chris@102: QString title, Chris@102: QString introText, Chris@102: QString introTextWithCount, Chris@102: QStringList files, Chris@104: QString &comment, Chris@104: bool longComment) Chris@102: { Chris@102: QString text; Chris@102: if (files.size() <= 10) { Chris@102: text = "" + introText; Chris@103: text += "

    "; Chris@102: foreach (QString file, files) { Chris@103: text += "
  • " + file + "
  • "; Chris@102: } Chris@103: text += "

Please enter your comment:"; Chris@102: } else { Chris@102: text = "" + introText.arg(files.size()); Chris@102: } Chris@104: return confirmAndComment(parent, title, text, comment, longComment); Chris@102: } Chris@102: Chris@102: bool ConfirmCommentDialog::confirmAndComment(QWidget *parent, Chris@102: QString title, Chris@102: QString introText, Chris@104: QString &comment, Chris@104: bool longComment) Chris@102: { Chris@102: bool ok = false; Chris@104: if (!longComment) { Chris@104: comment = QInputDialog::getText(parent, title, introText, Chris@104: QLineEdit::Normal, comment, &ok); Chris@104: } else { Chris@105: ConfirmCommentDialog *d = new ConfirmCommentDialog(parent, Chris@105: title, Chris@105: introText, Chris@105: comment); Chris@104: if (d->exec() == QDialog::Accepted) { Chris@105: comment = d->getComment(); Chris@104: ok = true; Chris@104: } Chris@104: } Chris@102: return ok; Chris@102: }