diff options
Diffstat (limited to 'Swift/Controllers/Chat')
| -rw-r--r-- | Swift/Controllers/Chat/ChatsManager.cpp | 17 | ||||
| -rw-r--r-- | Swift/Controllers/Chat/MUCController.cpp | 4 | ||||
| -rw-r--r-- | Swift/Controllers/Chat/MUCController.h | 1 | 
3 files changed, 19 insertions, 3 deletions
| diff --git a/Swift/Controllers/Chat/ChatsManager.cpp b/Swift/Controllers/Chat/ChatsManager.cpp index 654f735..1698b4a 100644 --- a/Swift/Controllers/Chat/ChatsManager.cpp +++ b/Swift/Controllers/Chat/ChatsManager.cpp @@ -11,6 +11,7 @@  #include <boost/smart_ptr/make_shared.hpp>  #include <boost/archive/text_oarchive.hpp>  #include <boost/archive/text_iarchive.hpp> +#include <boost/serialization/optional.hpp>  #include <boost/serialization/vector.hpp>  #include <boost/serialization/map.hpp>  #include <boost/serialization/string.hpp> @@ -62,6 +63,8 @@  #include <Swiften/StringCodecs/Base64.h>  #include <Swiften/Base/Log.h> +BOOST_CLASS_VERSION(Swift::ChatListWindow::Chat, 1) +  namespace boost {  namespace serialization {  	template<class Archive> void save(Archive& ar, const Swift::JID& jid, const unsigned int /*version*/) { @@ -79,13 +82,16 @@ namespace serialization {  		split_free(ar, t, file_version);  	} -	template<class Archive> void serialize(Archive& ar, Swift::ChatListWindow::Chat& chat, const unsigned int /*version*/) { +	template<class Archive> void serialize(Archive& ar, Swift::ChatListWindow::Chat& chat, const unsigned int version) {  		ar & chat.jid;  		ar & chat.chatName;  		ar & chat.activity;  		ar & chat.isMUC;  		ar & chat.nick;  		ar & chat.impromptuJIDs; +		if (version > 0) { +			ar & chat.password; +		}  	}  }  } @@ -369,6 +375,7 @@ ChatListWindow::Chat ChatsManager::createChatListChatItem(const JID& jid, const  		MUCController* controller = mucControllers_[jid.toBare()];  		StatusShow::Type type = StatusShow::None;  		std::string nick = ""; +		std::string password = "";  		if (controller) {  			unreadCount = controller->getUnreadCount();  			if (controller->isJoined()) { @@ -376,15 +383,19 @@ ChatListWindow::Chat ChatsManager::createChatListChatItem(const JID& jid, const  			}  			nick = controller->getNick(); +			if (controller->getPassword()) { +				password = *controller->getPassword(); +			} +  			if (controller->isImpromptu()) { -				ChatListWindow::Chat chat = ChatListWindow::Chat(jid, jid.toString(), activity, unreadCount, type, boost::filesystem::path(), true, nick); +				ChatListWindow::Chat chat = ChatListWindow::Chat(jid, jid.toString(), activity, unreadCount, type, boost::filesystem::path(), true, nick, password);  				typedef std::pair<std::string, JID> StringJIDPair;  				std::map<std::string, JID> participants = controller->getParticipantJIDs();  				chat.impromptuJIDs = participants;  				return chat;  			}  		} -		return ChatListWindow::Chat(jid, jid.toString(), activity, unreadCount, type, boost::filesystem::path(), true, nick); +		return ChatListWindow::Chat(jid, jid.toString(), activity, unreadCount, type, boost::filesystem::path(), true, nick, password);  	} else {  		ChatController* controller = getChatControllerIfExists(jid, false);  		if (controller) { diff --git a/Swift/Controllers/Chat/MUCController.cpp b/Swift/Controllers/Chat/MUCController.cpp index 4860fc8..6bc7067 100644 --- a/Swift/Controllers/Chat/MUCController.cpp +++ b/Swift/Controllers/Chat/MUCController.cpp @@ -243,6 +243,10 @@ const std::string& MUCController::getNick() {  	return nick_;  } +const boost::optional<std::string> MUCController::getPassword() const { +	return password_; +} +  bool MUCController::isImpromptu() const {  	return isImpromptu_;  } diff --git a/Swift/Controllers/Chat/MUCController.h b/Swift/Controllers/Chat/MUCController.h index e78ff77..feffaba 100644 --- a/Swift/Controllers/Chat/MUCController.h +++ b/Swift/Controllers/Chat/MUCController.h @@ -62,6 +62,7 @@ namespace Swift {  			static std::string concatenateListOfNames(const std::vector<NickJoinPart>& joinParts);  			bool isJoined();  			const std::string& getNick(); +			const boost::optional<std::string> getPassword() const;  			bool isImpromptu() const;  			std::map<std::string, JID> getParticipantJIDs() const;  			void sendInvites(const std::vector<JID>& jids, const std::string& reason) const; | 
 Swift
 Swift