diff options
Diffstat (limited to 'Swift/QtUI')
| -rw-r--r-- | Swift/QtUI/QtAdHocCommandWindow.cpp | 28 | ||||
| -rw-r--r-- | Swift/QtUI/QtAdHocCommandWindow.h | 3 | ||||
| -rw-r--r-- | Swift/QtUI/QtUIFactory.cpp | 6 | ||||
| -rw-r--r-- | Swift/QtUI/QtUIFactory.h | 4 | 
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,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()); 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 @@ -1,48 +1,51 @@  /*   * Copyright (c) 2010-2012 Kevin Smith   * Licensed under the GNU General Public License v3.   * See Documentation/Licenses/GPLv3.txt for more information.   */  #pragma once  #include <QWidget>  #include <QPushButton>  #include <QLabel>  #include <Swift/Controllers/UIInterfaces/AdHocCommandWindow.h>  #include <Swiften/AdHoc/OutgoingAdHocCommandSession.h>  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,37 +1,37 @@  /* - * 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>  #include <Swift/QtUI/QtChatTabs.h>  #include <Swift/QtUI/QtMainWindow.h>  #include <Swift/QtUI/QtLoginWindow.h>  #include <Swift/QtUI/QtSystemTray.h>  #include <Swift/QtUI/QtSettingsProvider.h>  #include <Swift/QtUI/QtMainWindow.h>  #include <Swift/QtUI/QtChatWindow.h>  #include <Swift/QtUI/QtJoinMUCWindow.h>  #include <Swift/QtUI/QtChatWindowFactory.h>  #include <Swift/QtUI/QtSwiftUtil.h>  #include <Swift/QtUI/MUCSearch/QtMUCSearchWindow.h>  #include <Swift/QtUI/UserSearch/QtUserSearchWindow.h>  #include <Swift/QtUI/QtProfileWindow.h>  #include <Swift/QtUI/QtContactEditWindow.h>  #include <Swift/QtUI/QtAdHocCommandWindow.h>  #include <Swift/QtUI/QtFileTransferListWidget.h>  #include <Swift/QtUI/QtHighlightEditorWidget.h>  #include <Swift/QtUI/Whiteboard/QtWhiteboardWindow.h>  #include <Swift/Controllers/Settings/SettingsProviderHierachy.h>  #include <Swift/QtUI/QtUISettingConstants.h>  #include <Swift/QtUI/QtHistoryWindow.h>  #include <Swiften/Whiteboard/WhiteboardSession.h>  #include <Swift/QtUI/QtSingleWindow.h>  #include <Swift/QtUI/QtBlockListEditorWindow.h>  namespace Swift { @@ -140,40 +140,40 @@ ChatWindow* QtUIFactory::createChatWindow(const JID& contact, UIEventStream* eve  }  void QtUIFactory::handleChatWindowFontResized(int size) {  	chatFontSize = size;  	settings->storeSetting(QtUISettingConstants::CHATWINDOW_FONT_SIZE, size);  }  UserSearchWindow* QtUIFactory::createUserSearchWindow(UserSearchWindow::Type type, UIEventStream* eventStream, const std::set<std::string>& groups) {  	return new QtUserSearchWindow(eventStream, type, groups, qtOnlySettings);  }  JoinMUCWindow* QtUIFactory::createJoinMUCWindow(UIEventStream* uiEventStream) {  	return new QtJoinMUCWindow(uiEventStream);  }  ProfileWindow* QtUIFactory::createProfileWindow() {  	return new QtProfileWindow();  }  ContactEditWindow* QtUIFactory::createContactEditWindow() {  	return new QtContactEditWindow();  }  WhiteboardWindow* QtUIFactory::createWhiteboardWindow(boost::shared_ptr<WhiteboardSession> whiteboardSession) {  	return new QtWhiteboardWindow(whiteboardSession);  }  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,77 +1,77 @@  /* - * 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>  #include <Swift/Controllers/UIInterfaces/UIFactory.h>  class QSplitter;  namespace Swift {  	class QtSettingsProvider;  	class SettingsProviderHierachy;  	class QtChatTabs;  	class QtSystemTray;  	class QtLoginWindow;  	class QtMainWindow;  	class QtChatTheme;  	class QtChatWindowFactory;  	class QtChatWindow;  	class TimerFactory;  	class historyWindow_;  	class WhiteboardSession;  	class StatusCache;  	class QtSingleWindow;  	class QtUIFactory : public QObject, public UIFactory {  			Q_OBJECT  		public:  			QtUIFactory(SettingsProviderHierachy* settings, QtSettingsProvider* qtOnlySettings, QtChatTabs* tabs, QtSingleWindow* netbookSplitter, QtSystemTray* systemTray, QtChatWindowFactory* chatWindowFactory, TimerFactory* timerFactory, StatusCache* statusCache, bool startMinimized, bool emoticonsExist);  			virtual XMLConsoleWidget* createXMLConsoleWidget();  			virtual HistoryWindow* createHistoryWindow(UIEventStream*);  			virtual MainWindow* createMainWindow(UIEventStream* eventStream);  			virtual LoginWindow* createLoginWindow(UIEventStream* eventStream);  			virtual EventWindow* createEventWindow();  			virtual ChatListWindow* createChatListWindow(UIEventStream*);  			virtual MUCSearchWindow* createMUCSearchWindow();  			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;  			QtChatTabs* tabs;  			QtSingleWindow* netbookSplitter;  			QtSystemTray* systemTray;  			QtChatWindowFactory* chatWindowFactory;  			TimerFactory* timerFactory_;  			QtMainWindow* lastMainWindow;  			QtLoginWindow* loginWindow;  			StatusCache* statusCache;  			std::vector<QPointer<QtChatWindow> > chatWindows;  			bool startMinimized;  			int chatFontSize;  			int historyFontSize_;  			bool emoticonsExist_;  	};  } | 
 Swift
 Swift