diff options
Diffstat (limited to 'Swift/Controllers/UIInterfaces')
33 files changed, 495 insertions, 63 deletions
diff --git a/Swift/Controllers/UIInterfaces/AdHocCommandWindow.h b/Swift/Controllers/UIInterfaces/AdHocCommandWindow.h index f7a5d39..07319c2 100644 --- a/Swift/Controllers/UIInterfaces/AdHocCommandWindow.h +++ b/Swift/Controllers/UIInterfaces/AdHocCommandWindow.h @@ -1,4 +1,4 @@  /* - * Copyright (c) 2010 Kevin Smith + * Copyright (c) 2010-2014 Kevin Smith   * Licensed under the GNU General Public License v3.   * See Documentation/Licenses/GPLv3.txt for more information. @@ -7,8 +7,12 @@  #pragma once +#include <Swiften/Base/boost_bsignals.h> +  namespace Swift {  	class AdHocCommandWindow {  		public: -			virtual ~AdHocCommandWindow() {}; +			virtual ~AdHocCommandWindow() {} +			virtual void setOnline(bool /*online*/) {} +			boost::signal<void ()> onClosing;  	};  } diff --git a/Swift/Controllers/UIInterfaces/AdHocCommandWindowFactory.h b/Swift/Controllers/UIInterfaces/AdHocCommandWindowFactory.h index ae77180..eeefa2d 100644 --- a/Swift/Controllers/UIInterfaces/AdHocCommandWindowFactory.h +++ b/Swift/Controllers/UIInterfaces/AdHocCommandWindowFactory.h @@ -1,4 +1,4 @@  /* - * Copyright (c) 2010-2011 Kevin Smith + * Copyright (c) 2010-2014 Kevin Smith   * Licensed under the GNU General Public License v3.   * See Documentation/Licenses/GPLv3.txt for more information. @@ -11,12 +11,9 @@  namespace Swift { +class AdHocCommandWindow;  	class AdHocCommandWindowFactory {  		public:  			virtual ~AdHocCommandWindowFactory() {} -			/** -			 * The UI should deal with the lifetime of this window (i.e. DeleteOnClose), -			 * so the result isn't returned. -			 */ -			virtual void createAdHocCommandWindow(boost::shared_ptr<OutgoingAdHocCommandSession> command) = 0; +			virtual AdHocCommandWindow* createAdHocCommandWindow(boost::shared_ptr<OutgoingAdHocCommandSession> command) = 0;  	};  } diff --git a/Swift/Controllers/UIInterfaces/BlockListEditorWidget.h b/Swift/Controllers/UIInterfaces/BlockListEditorWidget.h new file mode 100644 index 0000000..f8a4c59 --- /dev/null +++ b/Swift/Controllers/UIInterfaces/BlockListEditorWidget.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2013 Tobias Markmann + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +/* + * Copyright (c) 2014 Kevin Smith and Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include <vector> + +#include <Swiften/JID/JID.h> +#include <Swiften/Base/boost_bsignals.h> + +namespace Swift { + +	class ClientBlockListManager; + +	class BlockListEditorWidget { +		public: +			virtual ~BlockListEditorWidget() {} + +			virtual void show() = 0; +			virtual void hide() = 0; + +			virtual void setCurrentBlockList(const std::vector<JID>& blockedJIDs) = 0; +			virtual void setBusy(bool isBusy) = 0; +			virtual void setError(const std::string&) = 0; + +			virtual std::vector<JID> getCurrentBlockList() const = 0; + +			boost::signal<void (const std::vector<JID>& /* blockedJID */)> onSetNewBlockList; +	}; + +} diff --git a/Swift/Controllers/UIInterfaces/BlockListEditorWidgetFactory.h b/Swift/Controllers/UIInterfaces/BlockListEditorWidgetFactory.h new file mode 100644 index 0000000..eb91ac1 --- /dev/null +++ b/Swift/Controllers/UIInterfaces/BlockListEditorWidgetFactory.h @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2013 Tobias Markmann + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#pragma once + +namespace Swift { + +	class BlockListEditorWidget; + +	class BlockListEditorWidgetFactory { +		public: +			virtual ~BlockListEditorWidgetFactory() {} + +			virtual BlockListEditorWidget* createBlockListEditorWidget() = 0; +	}; + +} diff --git a/Swift/Controllers/UIInterfaces/ChatListWindow.h b/Swift/Controllers/UIInterfaces/ChatListWindow.h index d047f8c..5a7b527 100644 --- a/Swift/Controllers/UIInterfaces/ChatListWindow.h +++ b/Swift/Controllers/UIInterfaces/ChatListWindow.h @@ -1,4 +1,4 @@  /* - * Copyright (c) 2010-2011 Kevin Smith + * Copyright (c) 2010-2014 Kevin Smith   * Licensed under the GNU General Public License v3.   * See Documentation/Licenses/GPLv3.txt for more information. @@ -8,9 +8,11 @@  #include <list> +#include <set> +#include <map>  #include <boost/shared_ptr.hpp>  #include <Swiften/MUC/MUCBookmark.h>  #include <Swiften/Elements/StatusShow.h>  #include <boost/filesystem/path.hpp> - +#include <Swiften/Base/foreach.h>  #include <Swiften/Base/boost_bsignals.h> @@ -20,11 +22,29 @@ namespace Swift {  			class Chat {  				public: -					Chat(const JID& jid, const std::string& chatName, const std::string& activity, int unreadCount, StatusShow::Type statusType, const boost::filesystem::path& avatarPath, bool isMUC, const std::string& nick = "") -					: jid(jid), chatName(chatName), activity(activity), statusType(statusType), isMUC(isMUC), nick(nick), unreadCount(unreadCount), avatarPath(avatarPath) {} +					Chat() : statusType(StatusShow::None), isMUC(false), unreadCount(0), isPrivateMessage(false) {} +					Chat(const JID& jid, const std::string& chatName, const std::string& activity, int unreadCount, StatusShow::Type statusType, const boost::filesystem::path& avatarPath, bool isMUC, bool isPrivateMessage = false, const std::string& nick = "", const boost::optional<std::string> password = boost::optional<std::string>()) +					: jid(jid), chatName(chatName), activity(activity), statusType(statusType), isMUC(isMUC), nick(nick), password(password), unreadCount(unreadCount), avatarPath(avatarPath), isPrivateMessage(isPrivateMessage) {}  					/** Assume that nicks and other transient features aren't important for equality */  					bool operator==(const Chat& other) const { +						if (impromptuJIDs.empty()) {  							return jid.toBare() == other.jid.toBare()  									&& isMUC == other.isMUC; -					}; +						} else { /* compare the chat occupant lists */ +							typedef std::map<std::string, JID> JIDMap; +							foreach (const JIDMap::value_type& jid, impromptuJIDs) { +								bool found = false; +								foreach (const JIDMap::value_type& otherJID, other.impromptuJIDs) { +									if (jid.second.toBare() == otherJID.second.toBare()) { +										found = true; +										break; +									} +								} +								if (!found) { +									return false; +								} +							} +							return true; +						} +					}  					void setUnreadCount(int unread) {  						unreadCount = unread; @@ -36,4 +56,16 @@ namespace Swift {  						avatarPath = path;  					} +					std::string getImpromptuTitle() const { +						typedef std::pair<std::string, JID> StringJIDPair; +						std::string title; +						foreach(StringJIDPair pair, impromptuJIDs) { +							if (title.empty()) { +								title += pair.first; +							} else { +								title += ", " + pair.first; +							} +						} +						return title; +					}  					JID jid;  					std::string chatName; @@ -42,6 +74,9 @@ namespace Swift {  					bool isMUC;  					std::string nick; +					boost::optional<std::string> password;  					int unreadCount;  					boost::filesystem::path avatarPath; +					std::map<std::string, JID> impromptuJIDs; +					bool isPrivateMessage;  			};  			virtual ~ChatListWindow(); @@ -49,11 +84,15 @@ namespace Swift {  			virtual void setBookmarksEnabled(bool enabled) = 0;  			virtual void addMUCBookmark(const MUCBookmark& bookmark) = 0; +			virtual void addWhiteboardSession(const ChatListWindow::Chat& chat) = 0; +			virtual void removeWhiteboardSession(const JID& jid) = 0;  			virtual void removeMUCBookmark(const MUCBookmark& bookmark) = 0;  			virtual void setRecents(const std::list<Chat>& recents) = 0;  			virtual void setUnreadCount(int unread) = 0;  			virtual void clearBookmarks() = 0; +			virtual void setOnline(bool isOnline) = 0;  			boost::signal<void (const MUCBookmark&)> onMUCBookmarkActivated;  			boost::signal<void (const Chat&)> onRecentActivated; +			boost::signal<void (const JID&)> onWhiteboardActivated;  			boost::signal<void ()> onClearRecentsRequested;  	}; diff --git a/Swift/Controllers/UIInterfaces/ChatWindow.h b/Swift/Controllers/UIInterfaces/ChatWindow.h index b5b1604..6b2799b 100644 --- a/Swift/Controllers/UIInterfaces/ChatWindow.h +++ b/Swift/Controllers/UIInterfaces/ChatWindow.h @@ -1,4 +1,4 @@  /* - * 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. @@ -7,15 +7,19 @@  #pragma once +#include <vector> +#include <string> +  #include <boost/optional.hpp> -#include "Swiften/Base/boost_bsignals.h"  #include <boost/shared_ptr.hpp> +#include <boost/make_shared.hpp>  #include <boost/date_time/posix_time/posix_time.hpp> -#include <vector> -#include <string> +#include <Swiften/Base/boost_bsignals.h>  #include <Swiften/Elements/SecurityLabelsCatalog.h>  #include <Swiften/Elements/ChatState.h>  #include <Swiften/Elements/Form.h>  #include <Swiften/Elements/MUCOccupant.h> +#include <Swiften/MUC/MUCBookmark.h> +#include <Swift/Controllers/HighlightManager.h> @@ -28,29 +32,87 @@ namespace Swift {  	class ContactRosterItem;  	class FileTransferController; +	class UserSearchWindow; +  	class ChatWindow {  		public: +			class ChatMessagePart { +				public: +					virtual ~ChatMessagePart() {} +			}; + +			class ChatMessage { +				public: +					ChatMessage() {} +					ChatMessage(const std::string& text) { +						append(boost::make_shared<ChatTextMessagePart>(text)); +					} +					void append(const boost::shared_ptr<ChatMessagePart>& part) { +						parts_.push_back(part); +					} + +					const std::vector<boost::shared_ptr<ChatMessagePart> >& getParts() const { +						return parts_; +					} +				private: +					std::vector<boost::shared_ptr<ChatMessagePart> > parts_; +			}; + +			class ChatTextMessagePart : public ChatMessagePart { +				public: +					ChatTextMessagePart(const std::string& text) : text(text) {} +					std::string text; +			}; + +			class ChatURIMessagePart : public ChatMessagePart { +				public: +					ChatURIMessagePart(const std::string& target) : target(target) {} +					std::string target; +			}; + +			class ChatEmoticonMessagePart : public ChatMessagePart { +				public: +					std::string imagePath; +					std::string alternativeText; +			}; + +			class ChatHighlightingMessagePart : public ChatMessagePart { +				public: +					std::string foregroundColor; +					std::string backgroundColor; +					std::string text; +			}; + +  			enum AckState {Pending, Received, Failed}; -			enum ReceiptState {ReceiptRequested, ReceiptReceived}; +			enum ReceiptState {ReceiptRequested, ReceiptReceived, ReceiptFailed};  			enum Tristate {Yes, No, Maybe}; -			enum OccupantAction {Kick, Ban, MakeModerator, MakeParticipant, MakeVisitor, AddContact}; +			enum OccupantAction {Kick, Ban, MakeModerator, MakeParticipant, MakeVisitor, AddContact, ShowProfile};  			enum RoomAction {ChangeSubject, Configure, Affiliations, Destroy, Invite};  			enum FileTransferState {WaitingForAccept, Negotiating, Transferring, Canceled, Finished, FTFailed}; +			enum WhiteboardSessionState {WhiteboardAccepted, WhiteboardTerminated, WhiteboardRejected}; +			enum BlockingState {BlockingUnsupported, IsBlocked, IsUnblocked}; +			enum Direction { UnknownDirection, DefaultDirection }; +			enum MUCType { StandardMUC, ImpromptuMUC }; +			enum TimestampBehaviour { KeepTimestamp, UpdateTimestamp }; +  			ChatWindow() {} -			virtual ~ChatWindow() {}; +			virtual ~ChatWindow() {}  			/** Add message to window.  			 * @return id of added message (for acks).  			 */ -			virtual std::string addMessage(const std::string& message, const std::string& senderName, bool senderIsSelf, boost::shared_ptr<SecurityLabel> label, const std::string& avatarPath, const boost::posix_time::ptime& time) = 0; +			virtual std::string addMessage(const ChatMessage& message, const std::string& senderName, bool senderIsSelf, boost::shared_ptr<SecurityLabel> label, const std::string& avatarPath, const boost::posix_time::ptime& time, const HighlightAction& highlight) = 0;  			/** Adds action to window.  			 * @return id of added message (for acks);  			 */ -			virtual std::string addAction(const std::string& message, const std::string& senderName, bool senderIsSelf, boost::shared_ptr<SecurityLabel> label, const std::string& avatarPath, const boost::posix_time::ptime& time) = 0; -			virtual void addSystemMessage(const std::string& message) = 0; -			virtual void addPresenceMessage(const std::string& message) = 0; -			virtual void addErrorMessage(const std::string& message) = 0; -			virtual void replaceMessage(const std::string& message, const std::string& id, const boost::posix_time::ptime& time) = 0; -			virtual void replaceWithAction(const std::string& message, const std::string& id, const boost::posix_time::ptime& time) = 0; +			virtual std::string addAction(const ChatMessage& message, const std::string& senderName, bool senderIsSelf, boost::shared_ptr<SecurityLabel> label, const std::string& avatarPath, const boost::posix_time::ptime& time, const HighlightAction& highlight) = 0; + +			virtual void addSystemMessage(const ChatMessage& message, Direction direction) = 0; +			virtual void addPresenceMessage(const ChatMessage& message, Direction direction) = 0; + +			virtual void addErrorMessage(const ChatMessage& message) = 0; +			virtual void replaceMessage(const ChatMessage& message, const std::string& id, const boost::posix_time::ptime& time, const HighlightAction& highlight) = 0; +			virtual void replaceWithAction(const ChatMessage& message, const std::string& id, const boost::posix_time::ptime& time, const HighlightAction& highlight) = 0;  			// File transfer related stuff @@ -58,5 +120,8 @@ namespace Swift {  			virtual void setFileTransferProgress(std::string, const int percentageDone) = 0;  			virtual void setFileTransferStatus(std::string, const FileTransferState state, const std::string& msg = "") = 0; -			virtual void addMUCInvitation(const std::string& senderName, const JID& jid, const std::string& reason, const std::string& password, bool direct = true) = 0; +			virtual void addMUCInvitation(const std::string& senderName, const JID& jid, const std::string& reason, const std::string& password, bool direct = true, bool isImpromptu = false, bool isContinuation = false) = 0; + +			virtual std::string addWhiteboardRequest(bool senderIsSelf) = 0; +			virtual void setWhiteboardSessionStatus(std::string id, const ChatWindow::WhiteboardSessionState state) = 0;  			// message receipts @@ -66,10 +131,12 @@ namespace Swift {  			virtual void setName(const std::string& name) = 0;  			virtual void show() = 0; +			virtual bool isVisible() const = 0;  			virtual void activate() = 0;  			virtual void setAvailableSecurityLabels(const std::vector<SecurityLabelsCatalog::Item>& labels) = 0;  			virtual void setSecurityLabelsEnabled(bool enabled) = 0;  			virtual void setCorrectionEnabled(Tristate enabled) = 0; +			virtual void setFileTransferEnabled(Tristate enabled) = 0;  			virtual void setUnreadMessageCount(int count) = 0; -			virtual void convertToMUC() = 0; +			virtual void convertToMUC(MUCType mucType) = 0;  //			virtual TreeWidget *getTreeWidget() = 0;  			virtual void setSecurityLabelsError() = 0; @@ -78,5 +145,5 @@ namespace Swift {  			virtual void setRosterModel(Roster* model) = 0;  			virtual void setTabComplete(TabComplete* completer) = 0; -			virtual void replaceLastMessage(const std::string& message) = 0; +			virtual void replaceLastMessage(const ChatMessage& message, const TimestampBehaviour timestampBehaviour) = 0;  			virtual void setAckState(const std::string& id, AckState state) = 0;  			virtual void flash() = 0; @@ -84,14 +151,24 @@ namespace Swift {  			virtual void setAffiliations(MUCOccupant::Affiliation, const std::vector<JID>&) = 0;  			virtual void setAvailableRoomActions(const std::vector<RoomAction> &actions) = 0; +			virtual void setBlockingState(BlockingState state) = 0; +			virtual void setCanInitiateImpromptuChats(bool supportsImpromptu) = 0; +			virtual void showBookmarkWindow(const MUCBookmark& bookmark) = 0; + +			/** +			 * A handle that uniquely identities an alert message. +			 */ +			typedef int AlertID;  			/**  			 * Set an alert on the window.  			 * @param alertText Description of alert (required).  			 * @param buttonText Button text to use (optional, no button is shown if empty). +			 * @return A handle to the alert message.  			 */ -			virtual void setAlert(const std::string& alertText, const std::string& buttonText = "") = 0; +			virtual AlertID addAlert(const std::string& alertText) = 0;  			/**  			 * Removes an alert. +			 * @param id An alert ID previously returned from setAlert  			 */ -			virtual void cancelAlert() = 0; +			virtual void removeAlert(const AlertID id) = 0;  			/** @@ -116,7 +193,8 @@ namespace Swift {  			boost::signal<void (ChatWindow::OccupantAction, ContactRosterItem*)> onOccupantActionSelected;  			boost::signal<void (const std::string&)> onChangeSubjectRequest; +			boost::signal<void ()> onBookmarkRequest;  			boost::signal<void (Form::ref)> onConfigureRequest;  			boost::signal<void ()> onDestroyRequest; -			boost::signal<void (const JID&, const std::string& /*reason*/)> onInvitePersonToThisMUCRequest; +			boost::signal<void (const std::vector<JID>&)> onInviteToChat;  			boost::signal<void ()> onConfigurationFormCancelled;  			boost::signal<void ()> onGetAffiliationsRequest; @@ -130,4 +208,13 @@ namespace Swift {  			boost::signal<void (std::string /* id */, std::string /* path */)> onFileTransferAccept;  			boost::signal<void (std::string /* path */)> onSendFileRequest; + +			//Whiteboard related	 +			boost::signal<void ()> onWhiteboardSessionAccept; +			boost::signal<void ()> onWhiteboardSessionCancel; +			boost::signal<void ()> onWhiteboardWindowShow; + +			// Blocking Command related +			boost::signal<void ()> onBlockUserRequest; +			boost::signal<void ()> onUnblockUserRequest;  	};  } diff --git a/Swift/Controllers/UIInterfaces/ChatWindowFactory.h b/Swift/Controllers/UIInterfaces/ChatWindowFactory.h index b7b4479..62e6621 100644 --- a/Swift/Controllers/UIInterfaces/ChatWindowFactory.h +++ b/Swift/Controllers/UIInterfaces/ChatWindowFactory.h @@ -15,5 +15,5 @@ namespace Swift {  	class ChatWindowFactory {  		public: -			virtual ~ChatWindowFactory() {}; +			virtual ~ChatWindowFactory() {}  			/**  			 * Transfers ownership of result. diff --git a/Swift/Controllers/UIInterfaces/ContactEditWindowFactory.h b/Swift/Controllers/UIInterfaces/ContactEditWindowFactory.h index 8ad56c0..9d47aef 100644 --- a/Swift/Controllers/UIInterfaces/ContactEditWindowFactory.h +++ b/Swift/Controllers/UIInterfaces/ContactEditWindowFactory.h @@ -12,5 +12,5 @@ namespace Swift {  	class ContactEditWindowFactory {  		public: -			virtual ~ContactEditWindowFactory() {}; +			virtual ~ContactEditWindowFactory() {}  			virtual ContactEditWindow* createContactEditWindow() = 0; diff --git a/Swift/Controllers/UIInterfaces/EventWindow.h b/Swift/Controllers/UIInterfaces/EventWindow.h index 3ca2c82..b3af3d3 100644 --- a/Swift/Controllers/UIInterfaces/EventWindow.h +++ b/Swift/Controllers/UIInterfaces/EventWindow.h @@ -20,5 +20,5 @@ namespace Swift {  			} -			virtual ~EventWindow() {};	 +			virtual ~EventWindow() {}	  			virtual void addEvent(boost::shared_ptr<StanzaEvent> event, bool active) = 0;  			virtual void removeEvent(boost::shared_ptr<StanzaEvent> event) = 0; diff --git a/Swift/Controllers/UIInterfaces/EventWindowFactory.h b/Swift/Controllers/UIInterfaces/EventWindowFactory.h index 1ff3ada..0b9c28e 100644 --- a/Swift/Controllers/UIInterfaces/EventWindowFactory.h +++ b/Swift/Controllers/UIInterfaces/EventWindowFactory.h @@ -12,5 +12,5 @@ namespace Swift {  	class EventWindowFactory {  		public: -			virtual ~EventWindowFactory() {}; +			virtual ~EventWindowFactory() {}  			/**  			 * Transfers ownership of result. diff --git a/Swift/Controllers/UIInterfaces/HighlightEditorWidget.h b/Swift/Controllers/UIInterfaces/HighlightEditorWidget.h new file mode 100644 index 0000000..4745035 --- /dev/null +++ b/Swift/Controllers/UIInterfaces/HighlightEditorWidget.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2012 Maciej Niedzielski + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#pragma once + +namespace Swift { + +	class HighlightManager; + +	class HighlightEditorWidget { +		public: +			virtual ~HighlightEditorWidget() {} + +			virtual void show() = 0; + +			virtual void setHighlightManager(HighlightManager* highlightManager) = 0; +	}; + +} diff --git a/Swift/Controllers/UIInterfaces/HighlightEditorWidgetFactory.h b/Swift/Controllers/UIInterfaces/HighlightEditorWidgetFactory.h new file mode 100644 index 0000000..ade575b --- /dev/null +++ b/Swift/Controllers/UIInterfaces/HighlightEditorWidgetFactory.h @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2012 Maciej Niedzielski + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#pragma once + +namespace Swift { + +	class HighlightEditorWidget; + +	class HighlightEditorWidgetFactory { +		public: +			virtual ~HighlightEditorWidgetFactory() {} + +			virtual HighlightEditorWidget* createHighlightEditorWidget() = 0; +	}; + +} diff --git a/Swift/Controllers/UIInterfaces/HighlightEditorWindow.cpp b/Swift/Controllers/UIInterfaces/HighlightEditorWindow.cpp new file mode 100644 index 0000000..f90903b --- /dev/null +++ b/Swift/Controllers/UIInterfaces/HighlightEditorWindow.cpp @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2014 Kevin Smith and Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include <Swift/Controllers/UIInterfaces/HighlightEditorWindow.h> + +namespace Swift { + +HighlightEditorWindow::HighlightEditorWindow() +{ +} + +HighlightEditorWindow::~HighlightEditorWindow() +{ +} + +} diff --git a/Swift/Controllers/UIInterfaces/HighlightEditorWindow.h b/Swift/Controllers/UIInterfaces/HighlightEditorWindow.h new file mode 100644 index 0000000..83ae959 --- /dev/null +++ b/Swift/Controllers/UIInterfaces/HighlightEditorWindow.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2014 Kevin Smith and Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include <vector> +#include <Swiften/Base/boost_bsignals.h> +#include <Swift/Controllers/Contact.h> + +namespace Swift { + +class HighlightManager; + +class HighlightEditorWindow { +public: +	HighlightEditorWindow(); +	virtual ~HighlightEditorWindow(); +	virtual void show() = 0; +	virtual void setHighlightManager(HighlightManager *highlightManager) = 0; +	virtual void setContactSuggestions(const std::vector<Contact::ref>& suggestions) = 0; + +public: +	boost::signal<void (const std::string&)> onContactSuggestionsRequested; +}; + +} diff --git a/Swift/Controllers/UIInterfaces/HighlightEditorWindowFactory.h b/Swift/Controllers/UIInterfaces/HighlightEditorWindowFactory.h new file mode 100644 index 0000000..e0aaaef --- /dev/null +++ b/Swift/Controllers/UIInterfaces/HighlightEditorWindowFactory.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2012 Mateusz Piękos + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +/* + * Copyright (c) 2014 Kevin Smith and Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +namespace Swift { +	class HighlightEditorWindow; + +	class HighlightEditorWindowFactory { +	public : +		virtual ~HighlightEditorWindowFactory() {} + +		virtual HighlightEditorWindow* createHighlightEditorWindow() = 0; +	}; +} diff --git a/Swift/Controllers/UIInterfaces/HistoryWindow.h b/Swift/Controllers/UIInterfaces/HistoryWindow.h new file mode 100644 index 0000000..6d50f4b --- /dev/null +++ b/Swift/Controllers/UIInterfaces/HistoryWindow.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2012 Catalin Badea + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#pragma once + +#include <Swift/Controllers/Roster/Roster.h> + +namespace Swift { +	class HistoryWindow { +		public: +			virtual ~HistoryWindow() {} + +			virtual void activate() = 0; +			virtual void setRosterModel(Roster*) = 0; +			virtual void addMessage(const std::string &message, const std::string &senderName, bool senderIsSelf, const std::string& avatarPath, const boost::posix_time::ptime& time, bool addAtTheTop) = 0; +			virtual void resetConversationView() = 0; +			virtual void resetConversationViewTopInsertPoint() = 0; // this is a temporary fix used in adding messages at the top +			virtual void setDate(const boost::gregorian::date& date) = 0; + +			virtual std::string getSearchBoxText() = 0; +			virtual boost::gregorian::date getLastVisibleDate() = 0; + +			boost::signal<void (RosterItem*)> onSelectedContactChanged; +			boost::signal<void (const std::string&)> onReturnPressed; +			boost::signal<void (const boost::gregorian::date&)> onScrollReachedTop; +			boost::signal<void (const boost::gregorian::date&)> onScrollReachedBottom; +			boost::signal<void ()> onPreviousButtonClicked; +			boost::signal<void ()> onNextButtonClicked; +			boost::signal<void (const boost::gregorian::date&)> onCalendarClicked; +	}; +} diff --git a/Swift/Controllers/UIInterfaces/HistoryWindowFactory.h b/Swift/Controllers/UIInterfaces/HistoryWindowFactory.h new file mode 100644 index 0000000..807fec5 --- /dev/null +++ b/Swift/Controllers/UIInterfaces/HistoryWindowFactory.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2012 Catalin Badea + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#pragma once + +#include <Swift/Controllers/UIInterfaces/HistoryWindow.h> + +namespace Swift { +	class UIEventStream; +	class HistoryWindowFactory { +		public: +			virtual ~HistoryWindowFactory() {} +			virtual HistoryWindow* createHistoryWindow(UIEventStream* eventStream) = 0; +	}; +} diff --git a/Swift/Controllers/UIInterfaces/JoinMUCWindow.h b/Swift/Controllers/UIInterfaces/JoinMUCWindow.h index 4873c9b..56a9587 100644 --- a/Swift/Controllers/UIInterfaces/JoinMUCWindow.h +++ b/Swift/Controllers/UIInterfaces/JoinMUCWindow.h @@ -16,5 +16,5 @@ namespace Swift {  	class JoinMUCWindow {  		public: -			virtual ~JoinMUCWindow() {}; +			virtual ~JoinMUCWindow() {}  			virtual void setNick(const std::string& nick) = 0; diff --git a/Swift/Controllers/UIInterfaces/JoinMUCWindowFactory.h b/Swift/Controllers/UIInterfaces/JoinMUCWindowFactory.h index cd8021b..494b418 100644 --- a/Swift/Controllers/UIInterfaces/JoinMUCWindowFactory.h +++ b/Swift/Controllers/UIInterfaces/JoinMUCWindowFactory.h @@ -13,5 +13,5 @@ namespace Swift {  	class JoinMUCWindowFactory {  		public: -			virtual ~JoinMUCWindowFactory() {}; +			virtual ~JoinMUCWindowFactory() {}  			virtual JoinMUCWindow* createJoinMUCWindow(UIEventStream* uiEventStream) = 0; diff --git a/Swift/Controllers/UIInterfaces/LoginWindow.h b/Swift/Controllers/UIInterfaces/LoginWindow.h index bbbbe35..e27c385 100644 --- a/Swift/Controllers/UIInterfaces/LoginWindow.h +++ b/Swift/Controllers/UIInterfaces/LoginWindow.h @@ -13,4 +13,5 @@  #include <Swiften/TLS/Certificate.h>  #include <Swiften/TLS/CertificateWithKey.h> +#include <Swiften/Client/ClientOptions.h>  namespace Swift { @@ -18,5 +19,5 @@ namespace Swift {  	class LoginWindow {  		public: -			virtual ~LoginWindow() {}; +			virtual ~LoginWindow() {}  			virtual void selectUser(const std::string&) = 0;  			virtual void morphInto(MainWindow *mainWindow) = 0; @@ -25,12 +26,12 @@ namespace Swift {  			virtual void setMessage(const std::string&) = 0;  			virtual void setIsLoggingIn(bool loggingIn) = 0; -			virtual void addAvailableAccount(const std::string& defaultJID, const std::string& defaultPassword, const std::string& defaultCertificate) = 0; +			virtual void addAvailableAccount(const std::string& defaultJID, const std::string& defaultPassword, const std::string& defaultCertificate, const ClientOptions& options) = 0;  			virtual void removeAvailableAccount(const std::string& jid) = 0;  			/** The certificate is what is used for login, the certificatePath is used for remembering paths to populate the loginwindow with*/ -			boost::signal<void (const std::string&, const std::string&, const std::string& /*CertificatePath*/, CertificateWithKey::ref /* clientCertificate */, bool /* remember password*/, bool /* login automatically */)> onLoginRequest; +			boost::signal<void (const std::string&, const std::string&, const std::string& /*CertificatePath*/, CertificateWithKey::ref /* clientCertificate */, const ClientOptions& /*options*/, bool /* remember password*/, bool /* login automatically */)> onLoginRequest;  			virtual void setLoginAutomatically(bool loginAutomatically) = 0;  			virtual void quit() = 0;  			/** Blocking request whether a cert should be permanently trusted.*/ -			virtual bool askUserToTrustCertificatePermanently(const std::string& message, Certificate::ref) = 0; +			virtual bool askUserToTrustCertificatePermanently(const std::string& message, const std::vector<Certificate::ref>& certificateChain) = 0;  			boost::signal<void ()> onCancelLoginRequest; diff --git a/Swift/Controllers/UIInterfaces/LoginWindowFactory.h b/Swift/Controllers/UIInterfaces/LoginWindowFactory.h index 1cead2a..7b8b7ec 100644 --- a/Swift/Controllers/UIInterfaces/LoginWindowFactory.h +++ b/Swift/Controllers/UIInterfaces/LoginWindowFactory.h @@ -17,5 +17,5 @@ namespace Swift {  	class LoginWindowFactory {  		public: -			virtual ~LoginWindowFactory() {}; +			virtual ~LoginWindowFactory() {}  			/** diff --git a/Swift/Controllers/UIInterfaces/MUCSearchWindow.h b/Swift/Controllers/UIInterfaces/MUCSearchWindow.h index 5814b06..43a61a1 100644 --- a/Swift/Controllers/UIInterfaces/MUCSearchWindow.h +++ b/Swift/Controllers/UIInterfaces/MUCSearchWindow.h @@ -20,5 +20,5 @@ namespace Swift {  	class MUCSearchWindow {  		public: -			virtual ~MUCSearchWindow() {}; +			virtual ~MUCSearchWindow() {}  			virtual void clearList() = 0; diff --git a/Swift/Controllers/UIInterfaces/MUCSearchWindowFactory.h b/Swift/Controllers/UIInterfaces/MUCSearchWindowFactory.h index d334dff..46488eb 100644 --- a/Swift/Controllers/UIInterfaces/MUCSearchWindowFactory.h +++ b/Swift/Controllers/UIInterfaces/MUCSearchWindowFactory.h @@ -13,5 +13,5 @@ namespace Swift {  	class MUCSearchWindowFactory {  		public: -			virtual ~MUCSearchWindowFactory() {}; +			virtual ~MUCSearchWindowFactory() {}  			virtual MUCSearchWindow* createMUCSearchWindow() = 0; diff --git a/Swift/Controllers/UIInterfaces/MainWindow.h b/Swift/Controllers/UIInterfaces/MainWindow.h index 93584e7..82750bf 100644 --- a/Swift/Controllers/UIInterfaces/MainWindow.h +++ b/Swift/Controllers/UIInterfaces/MainWindow.h @@ -8,11 +8,14 @@  #include <string> -#include "Swiften/JID/JID.h" -#include "Swiften/Elements/StatusShow.h" -#include "Swiften/Elements/DiscoItems.h" -#include "Swiften/Base/boost_bsignals.h"  #include <boost/shared_ptr.hpp> +#include <Swiften/JID/JID.h> +#include <Swiften/Elements/StatusShow.h> +#include <Swiften/Elements/DiscoItems.h> +#include <Swiften/TLS/Certificate.h> +#include <Swiften/Base/boost_bsignals.h> +#include <Swift/Controllers/Roster/ContactRosterItem.h> +  namespace Swift {  	class Roster; @@ -21,5 +24,5 @@ namespace Swift {  		public:  			MainWindow(bool candelete = true) : canDelete_(candelete) {} -			virtual ~MainWindow() {}; +			virtual ~MainWindow() {}  			bool canDelete() const { @@ -32,11 +35,16 @@ namespace Swift {  			virtual void setMyStatusText(const std::string& status) = 0;  			virtual void setMyStatusType(StatusShow::Type type) = 0; +			virtual void setMyContactRosterItem(boost::shared_ptr<ContactRosterItem> contact) = 0;  			/** Must be able to cope with NULL to clear the roster */  			virtual void setRosterModel(Roster* roster) = 0;  			virtual void setConnecting() = 0; +			virtual void setBlockingCommandAvailable(bool isAvailable) = 0;  			virtual void setAvailableAdHocCommands(const std::vector<DiscoItems::Item>& commands) = 0; +			virtual void setStreamEncryptionStatus(bool tlsInPlaceAndValid) = 0; +			virtual void openCertificateDialog(const std::vector<Certificate::ref>& chain) = 0;  			boost::signal<void (StatusShow::Type, const std::string&)> onChangeStatusRequest;  			boost::signal<void ()> onSignOutRequest; +			boost::signal<void ()> onShowCertificateRequest;  		private: diff --git a/Swift/Controllers/UIInterfaces/MainWindowFactory.h b/Swift/Controllers/UIInterfaces/MainWindowFactory.h index c5cdfef..6bd34b4 100644 --- a/Swift/Controllers/UIInterfaces/MainWindowFactory.h +++ b/Swift/Controllers/UIInterfaces/MainWindowFactory.h @@ -16,5 +16,5 @@ namespace Swift {  	class MainWindowFactory {  		public: -			virtual ~MainWindowFactory() {}; +			virtual ~MainWindowFactory() {}  			/**  			 * Transfers ownership of result. diff --git a/Swift/Controllers/UIInterfaces/ProfileWindow.h b/Swift/Controllers/UIInterfaces/ProfileWindow.h index 5d5c754..5c158e1 100644 --- a/Swift/Controllers/UIInterfaces/ProfileWindow.h +++ b/Swift/Controllers/UIInterfaces/ProfileWindow.h @@ -13,8 +13,11 @@  namespace Swift { +	class JID; +  	class ProfileWindow {  		public: -			virtual ~ProfileWindow() {}; +			virtual ~ProfileWindow() {} +			virtual void setJID(const JID& jid) = 0;  			virtual void setVCard(VCard::ref vcard) = 0; @@ -22,4 +25,5 @@ namespace Swift {  			virtual void setProcessing(bool b) = 0;  			virtual void setError(const std::string&) = 0; +			virtual void setEditable(bool b) = 0;  			virtual void show() = 0; @@ -27,4 +31,5 @@ namespace Swift {  			boost::signal<void (VCard::ref)> onVCardChangeRequest; +			boost::signal<void (const JID&)> onWindowAboutToBeClosed;  	};  } diff --git a/Swift/Controllers/UIInterfaces/ProfileWindowFactory.h b/Swift/Controllers/UIInterfaces/ProfileWindowFactory.h index 022c3eb..45a340a 100644 --- a/Swift/Controllers/UIInterfaces/ProfileWindowFactory.h +++ b/Swift/Controllers/UIInterfaces/ProfileWindowFactory.h @@ -12,5 +12,5 @@ namespace Swift {  	class ProfileWindowFactory {  		public: -			virtual ~ProfileWindowFactory() {}; +			virtual ~ProfileWindowFactory() {}  			virtual ProfileWindow* createProfileWindow() = 0; diff --git a/Swift/Controllers/UIInterfaces/UIFactory.h b/Swift/Controllers/UIInterfaces/UIFactory.h index cf89dab..54fa7ce 100644 --- a/Swift/Controllers/UIInterfaces/UIFactory.h +++ b/Swift/Controllers/UIInterfaces/UIFactory.h @@ -1,4 +1,4 @@  /* - * Copyright (c) 2010 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. @@ -9,4 +9,5 @@  #include <Swift/Controllers/UIInterfaces/ChatListWindowFactory.h>  #include <Swift/Controllers/UIInterfaces/ChatWindowFactory.h> +#include <Swift/Controllers/UIInterfaces/HistoryWindowFactory.h>  #include <Swift/Controllers/UIInterfaces/EventWindowFactory.h>  #include <Swift/Controllers/UIInterfaces/LoginWindowFactory.h> @@ -20,4 +21,7 @@  #include <Swift/Controllers/UIInterfaces/AdHocCommandWindowFactory.h>  #include <Swift/Controllers/UIInterfaces/FileTransferListWidgetFactory.h> +#include <Swift/Controllers/UIInterfaces/WhiteboardWindowFactory.h> +#include <Swift/Controllers/UIInterfaces/HighlightEditorWindowFactory.h> +#include <Swift/Controllers/UIInterfaces/BlockListEditorWidgetFactory.h>  namespace Swift { @@ -25,4 +29,5 @@ namespace Swift {  			public ChatListWindowFactory,   			public ChatWindowFactory,  +			public HistoryWindowFactory,  			public EventWindowFactory,   			public LoginWindowFactory,  @@ -35,5 +40,8 @@ namespace Swift {  			public ContactEditWindowFactory,  			public AdHocCommandWindowFactory, -			public FileTransferListWidgetFactory { +			public FileTransferListWidgetFactory, +			public WhiteboardWindowFactory, +			public HighlightEditorWindowFactory, +			public BlockListEditorWidgetFactory {  		public:  			virtual ~UIFactory() {} diff --git a/Swift/Controllers/UIInterfaces/UserSearchWindow.h b/Swift/Controllers/UIInterfaces/UserSearchWindow.h index a3d69d6..9a095aa 100644 --- a/Swift/Controllers/UIInterfaces/UserSearchWindow.h +++ b/Swift/Controllers/UIInterfaces/UserSearchWindow.h @@ -1,4 +1,4 @@  /* - * Copyright (c) 2010 Kevin Smith + * Copyright (c) 2010-2014 Kevin Smith   * Licensed under the GNU General Public License v3.   * See Documentation/Licenses/GPLv3.txt for more information. @@ -7,11 +7,12 @@  #pragma once -#include "Swiften/Base/boost_bsignals.h" +#include <Swiften/Base/boost_bsignals.h>  #include <vector>  #include <string> -#include "Swiften/JID/JID.h" -#include "Swift/Controllers/Chat/UserSearchController.h" +#include <Swiften/JID/JID.h> +#include <Swift/Controllers/Chat/UserSearchController.h> +#include <Swift/Controllers/Contact.h>  namespace Swift { @@ -19,5 +20,5 @@ namespace Swift {  	class UserSearchWindow {  		public: -			enum Type {AddContact, ChatToContact}; +			enum Type {AddContact, ChatToContact, InviteToChat};  			virtual ~UserSearchWindow() {} @@ -32,4 +33,14 @@ namespace Swift {  			virtual void setNameSuggestions(const std::vector<std::string>& suggestions) = 0;  			virtual void prepopulateJIDAndName(const JID& jid, const std::string& name) = 0; +			virtual void setContactSuggestions(const std::vector<Contact::ref>& suggestions) = 0; +			virtual void setJIDs(const std::vector<JID>&) = 0; +			virtual void setRoomJID(const JID& roomJID) = 0; +			virtual std::string getReason() const = 0; +			virtual std::vector<JID> getJIDs() const = 0; +			virtual void setCanStartImpromptuChats(bool supportsImpromptu) = 0; +			virtual void updateContacts(const std::vector<Contact::ref>& contacts) = 0; +			virtual void addContacts(const std::vector<Contact::ref>& contacts) = 0; +			virtual void setCanSupplyDescription(bool allowed) = 0; +  			virtual void show() = 0; @@ -37,4 +48,7 @@ namespace Swift {  			boost::signal<void (boost::shared_ptr<SearchPayload>, const JID&)> onSearchRequested;  			boost::signal<void (const JID&)> onNameSuggestionRequested; +			boost::signal<void (const std::string&)> onContactSuggestionsRequested; +			boost::signal<void (const std::vector<JID>&)> onJIDUpdateRequested; +			boost::signal<void (const std::vector<JID>&)> onJIDAddRequested;  	};  } diff --git a/Swift/Controllers/UIInterfaces/UserSearchWindowFactory.h b/Swift/Controllers/UIInterfaces/UserSearchWindowFactory.h index 2a15806..331d6dd 100644 --- a/Swift/Controllers/UIInterfaces/UserSearchWindowFactory.h +++ b/Swift/Controllers/UIInterfaces/UserSearchWindowFactory.h @@ -15,5 +15,5 @@ namespace Swift {  	class UserSearchWindowFactory {  		public: -			virtual ~UserSearchWindowFactory() {}; +			virtual ~UserSearchWindowFactory() {}  			virtual UserSearchWindow* createUserSearchWindow(UserSearchWindow::Type type, UIEventStream* eventStream, const std::set<std::string>& groups) = 0; diff --git a/Swift/Controllers/UIInterfaces/WhiteboardWindow.h b/Swift/Controllers/UIInterfaces/WhiteboardWindow.h new file mode 100644 index 0000000..a4a9ef0 --- /dev/null +++ b/Swift/Controllers/UIInterfaces/WhiteboardWindow.h @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2012 Mateusz Piękos + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#pragma once + +#include "Swiften/Base/boost_bsignals.h" + +#include <string> + +namespace Swift { +	class WhiteboardSession; +	class WhiteboardElement; + +	class WhiteboardWindow { +	public: +		virtual ~WhiteboardWindow() {} + +		virtual void show() = 0; +		virtual void setSession(boost::shared_ptr<WhiteboardSession> session) = 0; +		virtual void activateWindow() = 0; +		virtual void setName(const std::string& name) = 0; +	}; +} diff --git a/Swift/Controllers/UIInterfaces/WhiteboardWindowFactory.h b/Swift/Controllers/UIInterfaces/WhiteboardWindowFactory.h new file mode 100644 index 0000000..2be0f9c --- /dev/null +++ b/Swift/Controllers/UIInterfaces/WhiteboardWindowFactory.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2012 Mateusz Piękos + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#pragma once + +namespace Swift { +	class WhiteboardSession; +	class WhiteboardWindow; + +	class WhiteboardWindowFactory { +	public : +		virtual ~WhiteboardWindowFactory() {} + +		virtual WhiteboardWindow* createWhiteboardWindow(boost::shared_ptr<WhiteboardSession> whiteboardSession) = 0; +	}; +} diff --git a/Swift/Controllers/UIInterfaces/XMLConsoleWidgetFactory.h b/Swift/Controllers/UIInterfaces/XMLConsoleWidgetFactory.h index e27fe2e..3cba597 100644 --- a/Swift/Controllers/UIInterfaces/XMLConsoleWidgetFactory.h +++ b/Swift/Controllers/UIInterfaces/XMLConsoleWidgetFactory.h @@ -13,5 +13,5 @@ namespace Swift {  	class XMLConsoleWidgetFactory {  		public: -			virtual ~XMLConsoleWidgetFactory() {}; +			virtual ~XMLConsoleWidgetFactory() {}  			virtual XMLConsoleWidget* createXMLConsoleWidget() = 0;  | 
 Swift