diff options
Diffstat (limited to 'Swift/QtUI/QtJoinMUCWindow.h')
-rw-r--r-- | Swift/QtUI/QtJoinMUCWindow.h | 106 |
1 files changed, 66 insertions, 40 deletions
diff --git a/Swift/QtUI/QtJoinMUCWindow.h b/Swift/QtUI/QtJoinMUCWindow.h index c7e2d74..2fa1152 100644 --- a/Swift/QtUI/QtJoinMUCWindow.h +++ b/Swift/QtUI/QtJoinMUCWindow.h @@ -1,51 +1,77 @@ /* - * Copyright (c) 2010 Remko Tronçon - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. + * Copyright (c) 2010-2016 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. */ #pragma once -#include <QValidator> #include <string> -#include "QtSwiftUtil.h" + +#include <QDialog> +#include <QValidator> + #include <Swift/Controllers/UIInterfaces/JoinMUCWindow.h> + +#include <Swift/QtUI/QtSwiftUtil.h> #include <Swift/QtUI/ui_QtJoinMUCWindow.h> namespace Swift { - class UIEventStream; - class NickValidator : public QValidator { - Q_OBJECT - public: - NickValidator(QObject* parent) : QValidator(parent) { - } - - virtual QValidator::State validate(QString& input, int& /*pos*/) const { - if (input.isEmpty()) { - return QValidator::Acceptable; - } - JID test("alice", "wonderland.lit", Q2PSTRING(input)); - - return test.isValid() ? QValidator::Acceptable : QValidator::Invalid; - } - }; - class QtJoinMUCWindow : public QWidget, public JoinMUCWindow { - Q_OBJECT - public: - QtJoinMUCWindow(UIEventStream* uiEventStream); - - virtual void setNick(const std::string& nick); - virtual void setMUC(const std::string& nick); - - virtual void show(); - - private slots: - void handleJoin(); - void handleSearch(); - - private: - Ui::QtJoinMUCWindow ui; - std::string lastSetNick; - UIEventStream* uiEventStream; - }; + class UIEventStream; + class NickValidator : public QValidator { + Q_OBJECT + public: + NickValidator(QObject* parent) : QValidator(parent) { + } + + virtual QValidator::State validate(QString& input, int& /*pos*/) const { + if (input.isEmpty()) { + return QValidator::Intermediate; + } + JID test("alice", "wonderland.lit", Q2PSTRING(input)); + + return test.isValid() ? QValidator::Acceptable : QValidator::Invalid; + } + }; + + class RoomJIDValidator : public QValidator { + Q_OBJECT + public: + RoomJIDValidator(QObject* parent) : QValidator(parent) { + } + + virtual QValidator::State validate(QString& input, int& /*pos*/) const { + if (input.isEmpty()) { + return QValidator::Intermediate; + } + JID roomJID(Q2PSTRING(input)); + + if (roomJID.getNode().empty() || roomJID.getDomain().empty()) { + return QValidator::Intermediate; + } + + return (roomJID.getResource().empty() && !roomJID.getNode().empty() && !roomJID.getDomain().empty() && roomJID.isValid()) ? QValidator::Acceptable : QValidator::Invalid; + } + }; + + class QtJoinMUCWindow : public QDialog, public JoinMUCWindow { + + Q_OBJECT + public: + QtJoinMUCWindow(UIEventStream* uiEventStream); + + virtual void setNick(const std::string& nick); + virtual void setMUC(const std::string& nick); + + virtual void show(); + + private slots: + void handleJoin(); + void handleSearch(); + + private: + Ui::QtJoinMUCWindow ui; + std::string lastSetNick; + UIEventStream* uiEventStream; + }; } |