summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Maudsley <richard.maudsley@isode.com>2014-05-02 09:19:23 (GMT)
committerSwift Review <review@swift.im>2014-07-09 09:03:34 (GMT)
commitacac7962ba04c083377f62f4265ecc754176f74e (patch)
treefa2db718854d10c76e81fc54b0b1f2b33a12963f /Swift/QtUI
parent8ab7ca17fdde8f8fb62a0c574478aa2c4c01a9bc (diff)
downloadswift-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')
-rw-r--r--Swift/QtUI/QtAdHocCommandWindow.cpp28
-rw-r--r--Swift/QtUI/QtAdHocCommandWindow.h3
-rw-r--r--Swift/QtUI/QtUIFactory.cpp6
-rw-r--r--Swift/QtUI/QtUIFactory.h4
4 files changed, 32 insertions, 9 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,40 +1,47 @@
/*
- * 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_);
@@ -42,26 +49,39 @@ QtAdHocCommandWindow::QtAdHocCommandWindow(boost::shared_ptr<OutgoingAdHocComman
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();
diff --git a/Swift/QtUI/QtAdHocCommandWindow.h b/Swift/QtUI/QtAdHocCommandWindow.h
index d42a77d..0e398af 100644
--- a/Swift/QtUI/QtAdHocCommandWindow.h
+++ b/Swift/QtUI/QtAdHocCommandWindow.h
@@ -16,33 +16,36 @@
class QBoxLayout;
namespace Swift {
class QtFormWidget;
class QtAdHocCommandWindow : public QWidget, public AdHocCommandWindow {
Q_OBJECT
public:
QtAdHocCommandWindow(boost::shared_ptr<OutgoingAdHocCommandSession> command);
virtual ~QtAdHocCommandWindow();
+ virtual void setOnline(bool online);
private:
+ void closeEvent(QCloseEvent* event);
void handleNextStageReceived(Command::ref command);
void handleError(ErrorPayload::ref error);
void setForm(Form::ref);
void setNoForm(bool andHide);
void setAvailableActions(Command::ref commandResult);
private slots:
void handleCancelClicked();
void handlePrevClicked();
void handleNextClicked();
void handleCompleteClicked();
private:
boost::shared_ptr<OutgoingAdHocCommandSession> command_;
QtFormWidget* formWidget_;
Form::ref form_;
QLabel* label_;
+ QLabel* errorLabel_;
QPushButton* backButton_;
QPushButton* nextButton_;
QPushButton* completeButton_;
QPushButton* cancelButton_;
std::map<Command::Action, QPushButton*> actions_;
QBoxLayout* layout_;
};
}
diff --git a/Swift/QtUI/QtUIFactory.cpp b/Swift/QtUI/QtUIFactory.cpp
index e5db22d..afd2a9e 100644
--- a/Swift/QtUI/QtUIFactory.cpp
+++ b/Swift/QtUI/QtUIFactory.cpp
@@ -1,11 +1,11 @@
/*
- * Copyright (c) 2010-2012 Remko Tronçon
+ * Copyright (c) 2010-2014 Remko Tronçon
* Licensed under the GNU General Public License v3.
* See Documentation/Licenses/GPLv3.txt for more information.
*/
#include <Swift/QtUI/QtUIFactory.h>
#include <QSplitter>
#include <Swift/QtUI/QtXMLConsoleWidget.h>
@@ -166,14 +166,14 @@ WhiteboardWindow* QtUIFactory::createWhiteboardWindow(boost::shared_ptr<Whiteboa
HighlightEditorWidget* QtUIFactory::createHighlightEditorWidget() {
return new QtHighlightEditorWidget();
}
BlockListEditorWidget *QtUIFactory::createBlockListEditorWidget() {
return new QtBlockListEditorWindow();
}
-void QtUIFactory::createAdHocCommandWindow(boost::shared_ptr<OutgoingAdHocCommandSession> command) {
- new QtAdHocCommandWindow(command);
+AdHocCommandWindow* QtUIFactory::createAdHocCommandWindow(boost::shared_ptr<OutgoingAdHocCommandSession> command) {
+ return new QtAdHocCommandWindow(command);
}
}
diff --git a/Swift/QtUI/QtUIFactory.h b/Swift/QtUI/QtUIFactory.h
index 662c78e..721aa76 100644
--- a/Swift/QtUI/QtUIFactory.h
+++ b/Swift/QtUI/QtUIFactory.h
@@ -1,11 +1,11 @@
/*
- * Copyright (c) 2010-2012 Remko Tronçon
+ * Copyright (c) 2010-2014 Remko Tronçon
* Licensed under the GNU General Public License v3.
* See Documentation/Licenses/GPLv3.txt for more information.
*/
#pragma once
#include <QObject>
#include <QPointer>
@@ -44,19 +44,19 @@ namespace Swift {
virtual ChatWindow* createChatWindow(const JID &contact, UIEventStream* eventStream);
virtual UserSearchWindow* createUserSearchWindow(UserSearchWindow::Type type, UIEventStream* eventStream, const std::set<std::string>& groups);
virtual JoinMUCWindow* createJoinMUCWindow(UIEventStream* uiEventStream);
virtual ProfileWindow* createProfileWindow();
virtual ContactEditWindow* createContactEditWindow();
virtual FileTransferListWidget* createFileTransferListWidget();
virtual WhiteboardWindow* createWhiteboardWindow(boost::shared_ptr<WhiteboardSession> whiteboardSession);
virtual HighlightEditorWidget* createHighlightEditorWidget();
virtual BlockListEditorWidget* createBlockListEditorWidget();
- virtual void createAdHocCommandWindow(boost::shared_ptr<OutgoingAdHocCommandSession> command);
+ virtual AdHocCommandWindow* createAdHocCommandWindow(boost::shared_ptr<OutgoingAdHocCommandSession> command);
private slots:
void handleLoginWindowGeometryChanged();
void handleChatWindowFontResized(int);
void handleHistoryWindowFontResized(int);
private:
SettingsProviderHierachy* settings;
QtSettingsProvider* qtOnlySettings;