call: implement leave message view

Change-Id: Ie4ab6134d39907d108e6a5bf39a863cb56ede684
Reviewed-by: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
diff --git a/src/ConversationVC.mm b/src/ConversationVC.mm
index 9d2fe89..f787e15 100644
--- a/src/ConversationVC.mm
+++ b/src/ConversationVC.mm
@@ -36,8 +36,12 @@
 #import "utils.h"
 #import "RingWindowController.h"
 #import "NSString+Extensions.h"
+#import "LeaveMessageVC.h"
+#import <QuickLook/QuickLook.h>
+#import <Quartz/Quartz.h>
+#import "LeaveMessageVC.h"
 
-@interface ConversationVC () {
+@interface ConversationVC () <QLPreviewPanelDataSource, QLPreviewPanelDelegate>{
 
     __unsafe_unretained IBOutlet NSTextField* conversationTitle;
     __unsafe_unretained IBOutlet NSTextField *conversationID;
@@ -46,6 +50,7 @@
 
     __unsafe_unretained IBOutlet NSButton* sentContactRequestButton;
     IBOutlet MessagesVC* messagesViewVC;
+    LeaveMessageVC* leaveMessageVC;
 
     IBOutlet NSLayoutConstraint *titleCenteredConstraint;
     IBOutlet NSLayoutConstraint* titleTopConstraint;
@@ -55,6 +60,7 @@
     lrc::api::ConversationModel* convModel_;
 
     RingWindowController* delegate;
+    NSMutableArray* leaveMessageConversations;
 
     // All those connections are needed to invalidate cached conversation as pointer
     // may not be referencing the same conversation anymore
@@ -69,15 +75,26 @@
 
 @implementation ConversationVC
 
-- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil delegate:(RingWindowController*) mainWindow
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil delegate:(RingWindowController*) mainWindow aVModel:(lrc::api::AVModel*) avModel
 {
     if (self = [self initWithNibName:nibNameOrNil bundle:nibBundleOrNil])
     {
         delegate = mainWindow;
+        leaveMessageVC = [[LeaveMessageVC alloc] initWithNibName:@"LeaveMessageVC" bundle:nil];
+        [[leaveMessageVC view] setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
+        [self.view addSubview:[leaveMessageVC view] positioned:NSWindowAbove relativeTo:nil];
+        [leaveMessageVC initFrame];
+        [leaveMessageVC setAVModel: avModel];
+        leaveMessageConversations = [[NSMutableArray alloc] init];
+        leaveMessageVC.delegate = self;
     }
     return self;
 }
 
+-(NSViewController*) getMessagesView {
+    return messagesViewVC;
+}
+
 -(void) clearData {
     cachedConv_ = nil;
     convUid_ = "";
@@ -120,6 +137,11 @@
 
     if (convUid_.empty() || convModel_ == nil)
         return;
+    if([leaveMessageConversations containsObject:@(convUid_.c_str())]) {
+        [leaveMessageVC setConversationUID: convUid_ conversationModel: convModel_];
+    } else {
+        [leaveMessageVC hide];
+    }
 
     // Signals tracking changes in conversation list, we need them as cached conversation can be invalid
     // after a reordering.
@@ -247,5 +269,13 @@
     [CATransaction commit];
 }
 
+- (void) presentLeaveMessageView {
+    [leaveMessageVC setConversationUID: convUid_ conversationModel: convModel_];
+    [leaveMessageConversations addObject:@(convUid_.c_str())];
+}
+
+-(void) messageCompleted {
+    [leaveMessageConversations removeObject:@(convUid_.c_str())];
+}
 
 @end