diff options
| author | Richard Maudsley <richard.maudsley@isode.com> | 2014-05-02 09:19:23 (GMT) | 
|---|---|---|
| committer | Swift Review <review@swift.im> | 2014-07-09 09:03:34 (GMT) | 
| commit | acac7962ba04c083377f62f4265ecc754176f74e (patch) | |
| tree | fa2db718854d10c76e81fc54b0b1f2b33a12963f /Swift/QtUI/QtAdHocCommandWindow.cpp | |
| parent | 8ab7ca17fdde8f8fb62a0c574478aa2c4c01a9bc (diff) | |
| download | swift-contrib-acac7962ba04c083377f62f4265ecc754176f74e.zip swift-contrib-acac7962ba04c083377f62f4265ecc754176f74e.tar.bz2 | |
Refactor AdHoc forms.
Test-Information:
Check that forms still open properly and can be submitted and canceled. Check that error message is displayed if disconnected when a form is open.
Change-Id: I23e35730b0decdfb5cf0592fc7234bf4643b6127
Diffstat (limited to 'Swift/QtUI/QtAdHocCommandWindow.cpp')
| -rw-r--r-- | Swift/QtUI/QtAdHocCommandWindow.cpp | 28 | 
1 files changed, 24 insertions, 4 deletions
| diff --git a/Swift/QtUI/QtAdHocCommandWindow.cpp b/Swift/QtUI/QtAdHocCommandWindow.cpp index 5d87031..5f99dba 100644 --- a/Swift/QtUI/QtAdHocCommandWindow.cpp +++ b/Swift/QtUI/QtAdHocCommandWindow.cpp @@ -1,93 +1,113 @@  /* - * Copyright (c) 2010-2012 Kevin Smith + * Copyright (c) 2010-2014 Kevin Smith   * Licensed under the GNU General Public License v3.   * See Documentation/Licenses/GPLv3.txt for more information.   */ -#include <Swift/QtUI/QtAdHocCommandWindow.h> -  #include <boost/bind.hpp>  #include <QBoxLayout> +#include <Swift/QtUI/QtAdHocCommandWindow.h>  #include <Swift/QtUI/QtFormWidget.h> -#include <Swiften/Elements/Command.h>  #include <Swift/QtUI/QtSwiftUtil.h> +#include <Swiften/Base/format.h> +#include <Swiften/Elements/Command.h>  const int FormLayoutIndex = 1;  namespace Swift {  QtAdHocCommandWindow::QtAdHocCommandWindow(boost::shared_ptr<OutgoingAdHocCommandSession> command) : command_(command) {  	formWidget_ = NULL;  	setAttribute(Qt::WA_DeleteOnClose);  	command->onNextStageReceived.connect(boost::bind(&QtAdHocCommandWindow::handleNextStageReceived, this, _1));  	command->onError.connect(boost::bind(&QtAdHocCommandWindow::handleError, this, _1));  	command->start();  	layout_ = new QBoxLayout(QBoxLayout::TopToBottom, this);  	layout_->setContentsMargins(0,0,0,0);  	layout_->setSpacing(2);  	label_ = new QLabel(this);  	label_->setTextFormat(Qt::PlainText);  	layout_->addWidget(label_); + +	errorLabel_ = new QLabel(this); +	errorLabel_->setText(QString("<b>%1</b>").arg(tr("Unable to complete the command because you have been disconnected"))); +	errorLabel_->setVisible(false); +	errorLabel_->setFrameStyle(QFrame::Box|QFrame::Sunken); +	layout_->addWidget(errorLabel_); +  	QWidget* buttonsWidget = new QWidget(this);  	layout_->addWidget(buttonsWidget);  	QBoxLayout* buttonsLayout = new QBoxLayout(QBoxLayout::LeftToRight, buttonsWidget);  	cancelButton_ = new QPushButton(tr("Cancel"), buttonsWidget);  	buttonsLayout->addWidget(cancelButton_);  	connect(cancelButton_, SIGNAL(clicked()), this, SLOT(handleCancelClicked()));  	backButton_ = new QPushButton(tr("Back"), buttonsWidget);  	buttonsLayout->addWidget(backButton_);  	connect(backButton_, SIGNAL(clicked()), this, SLOT(handlePrevClicked()));  	nextButton_ = new QPushButton(tr("Next"), buttonsWidget);  	buttonsLayout->addWidget(nextButton_);  	connect(nextButton_, SIGNAL(clicked()), this, SLOT(handleNextClicked()));  	completeButton_ = new QPushButton(tr("Complete"), buttonsWidget);  	buttonsLayout->addWidget(completeButton_);  	connect(completeButton_, SIGNAL(clicked()), this, SLOT(handleCompleteClicked()));  	nextButton_->setEnabled(false);  	backButton_->setEnabled(false);  	completeButton_->setEnabled(false); +  	actions_[Command::Next] = nextButton_;  	actions_[Command::Prev] = backButton_;  	actions_[Command::Complete] = completeButton_;  	actions_[Command::Cancel] = cancelButton_;  }  QtAdHocCommandWindow::~QtAdHocCommandWindow() { +} + +void QtAdHocCommandWindow::setOnline(bool online) { +	if (!online) { +		nextButton_->setEnabled(false); +		backButton_->setEnabled(false); +		completeButton_->setEnabled(false); +		errorLabel_->setVisible(true); +	} +} +void QtAdHocCommandWindow::closeEvent(QCloseEvent*) { +	onClosing();  }  void QtAdHocCommandWindow::handleCancelClicked() {  	command_->cancel();  	close();  }  void QtAdHocCommandWindow::handlePrevClicked() {  	command_->goBack();  }  void QtAdHocCommandWindow::handleNextClicked() {  	command_->goNext(formWidget_ ? formWidget_->getCompletedForm() : Form::ref());  }  void QtAdHocCommandWindow::handleCompleteClicked() {  	command_->complete(formWidget_ ? formWidget_->getCompletedForm() : Form::ref());  }  void QtAdHocCommandWindow::handleNextStageReceived(Command::ref command) {  	QString notes;  	foreach (Command::Note note, command->getNotes()) {  		if (!notes.isEmpty()) {  			notes += "\n";  		}  		QString qNote(P2QSTRING(note.note));  		switch (note.type) {  			case Command::Note::Error: notes += tr("Error: %1").arg(qNote); break;  			case Command::Note::Warn: notes += tr("Warning: %1").arg(qNote); break;  			case Command::Note::Info: notes += qNote; break;  		}  	}  	label_->setText(notes);  	if (command->getForm()) {  		setForm(command->getForm()); | 
 Swift
 Swift