From b42a5c5849813fe8db3bd3889378a53238cc36f7 Mon Sep 17 00:00:00 2001
From: Richard Maudsley <richard.maudsley@isode.com>
Date: Tue, 15 Apr 2014 15:49:05 +0100
Subject: Hide reason field in impromptu chat invites.

Change-Id: Icb5075f85a23fc181ff8f5ee00633bb768c4eb5f

diff --git a/Swift/Controllers/Chat/ChatController.cpp b/Swift/Controllers/Chat/ChatController.cpp
index fb69366..10cf54b 100644
--- a/Swift/Controllers/Chat/ChatController.cpp
+++ b/Swift/Controllers/Chat/ChatController.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2013 Kevin Smith
+ * Copyright (c) 2010-2014 Kevin Smith
  * Licensed under the GNU General Public License v3.
  * See Documentation/Licenses/GPLv3.txt for more information.
  */
@@ -296,7 +296,7 @@ void ChatController::handleUnblockUserRequest() {
 }
 
 void ChatController::handleInviteToChat(const std::vector<JID>& droppedJIDs) {
-	boost::shared_ptr<UIEvent> event(new RequestInviteToMUCUIEvent(toJID_.toBare(), droppedJIDs));
+	boost::shared_ptr<UIEvent> event(new RequestInviteToMUCUIEvent(toJID_.toBare(), droppedJIDs, RequestInviteToMUCUIEvent::Impromptu));
 	eventStream_->send(event);
 }
 
diff --git a/Swift/Controllers/Chat/MUCController.cpp b/Swift/Controllers/Chat/MUCController.cpp
index f83a772..df99368 100644
--- a/Swift/Controllers/Chat/MUCController.cpp
+++ b/Swift/Controllers/Chat/MUCController.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2013 Kevin Smith
+ * Copyright (c) 2010-2014 Kevin Smith
  * Licensed under the GNU General Public License v3.
  * See Documentation/Licenses/GPLv3.txt for more information.
  */
@@ -845,7 +845,8 @@ void MUCController::handleDestroyRoomRequest() {
 }
 
 void MUCController::handleInvitePersonToThisMUCRequest(const std::vector<JID>& jidsToInvite) {
-	boost::shared_ptr<UIEvent> event(new RequestInviteToMUCUIEvent(muc_->getJID(), jidsToInvite));
+	RequestInviteToMUCUIEvent::ImpromptuMode mode = isImpromptu_ ? RequestInviteToMUCUIEvent::Impromptu : RequestInviteToMUCUIEvent::NotImpromptu;
+	boost::shared_ptr<UIEvent> event(new RequestInviteToMUCUIEvent(muc_->getJID(), jidsToInvite, mode));
 	eventStream_->send(event);
 }
 
diff --git a/Swift/Controllers/Chat/UserSearchController.cpp b/Swift/Controllers/Chat/UserSearchController.cpp
index 12c6777..f259a9a 100644
--- a/Swift/Controllers/Chat/UserSearchController.cpp
+++ b/Swift/Controllers/Chat/UserSearchController.cpp
@@ -98,6 +98,7 @@ void UserSearchController::handleUIEvent(boost::shared_ptr<UIEvent> event) {
 				window_->prepopulateJIDAndName(jid, name);
 			}
 		} else if (inviteToMUCRequest) {
+			window_->setCanSupplyDescription(!inviteToMUCRequest->isImpromptu());
 			window_->setJIDs(inviteToMUCRequest->getInvites());
 			window_->setRoomJID(inviteToMUCRequest->getRoom());
 		}
diff --git a/Swift/Controllers/UIEvents/RequestInviteToMUCUIEvent.h b/Swift/Controllers/UIEvents/RequestInviteToMUCUIEvent.h
index 69aa0cd..58f45d1 100644
--- a/Swift/Controllers/UIEvents/RequestInviteToMUCUIEvent.h
+++ b/Swift/Controllers/UIEvents/RequestInviteToMUCUIEvent.h
@@ -4,6 +4,12 @@
  * 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 <boost/shared_ptr.hpp>
@@ -17,7 +23,13 @@ namespace Swift {
 		public:
 			typedef boost::shared_ptr<RequestInviteToMUCUIEvent> ref;
 
-			RequestInviteToMUCUIEvent(const JID& room, const std::vector<JID>& JIDsToInvite) : room_(room), invite_(JIDsToInvite) {
+			enum ImpromptuMode {
+				Impromptu,
+				NotImpromptu
+			};
+
+			RequestInviteToMUCUIEvent(const JID& room, const std::vector<JID>& JIDsToInvite, ImpromptuMode impromptu) : room_(room), invite_(JIDsToInvite) {
+				isImpromptu_ = impromptu == Impromptu;
 			}
 
 			const JID& getRoom() const {
@@ -28,8 +40,13 @@ namespace Swift {
 				return invite_;
 			}
 
+			bool isImpromptu() const {
+				return isImpromptu_;
+			}
+
 		private:
 			JID room_;
 			std::vector<JID> invite_;
+			bool isImpromptu_;
 	};
 }
diff --git a/Swift/Controllers/UIInterfaces/UserSearchWindow.h b/Swift/Controllers/UIInterfaces/UserSearchWindow.h
index 56992cc..9a095aa 100644
--- a/Swift/Controllers/UIInterfaces/UserSearchWindow.h
+++ b/Swift/Controllers/UIInterfaces/UserSearchWindow.h
@@ -40,6 +40,7 @@ namespace Swift {
 			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;
 
diff --git a/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp b/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp
index c154c8f..40b4e28 100644
--- a/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp
+++ b/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp
@@ -399,6 +399,11 @@ void QtUserSearchWindow::addContacts(const std::vector<Contact::ref>& contacts)
 	}
 }
 
+void QtUserSearchWindow::setCanSupplyDescription(bool allowed) {
+	firstMultiJIDPage_->label->setVisible(allowed);
+	firstMultiJIDPage_->reason_->setVisible(allowed);
+}
+
 void QtUserSearchWindow::handleAddViaSearch() {
 	searchNext_ = true;
 	next();
diff --git a/Swift/QtUI/UserSearch/QtUserSearchWindow.h b/Swift/QtUI/UserSearch/QtUserSearchWindow.h
index bb89e51..0349ba4 100644
--- a/Swift/QtUI/UserSearch/QtUserSearchWindow.h
+++ b/Swift/QtUI/UserSearch/QtUserSearchWindow.h
@@ -51,6 +51,7 @@ namespace Swift {
 			virtual void setCanStartImpromptuChats(bool supportsImpromptu);
 			virtual void updateContacts(const std::vector<Contact::ref> &contacts);
 			virtual void addContacts(const std::vector<Contact::ref>& contacts);
+			virtual void setCanSupplyDescription(bool allowed);
 
 		protected:
 			virtual int nextId() const;
-- 
cgit v0.10.2-6-g49f6