From 7b02207537d35bfa1714bf8beafc921f717d100a Mon Sep 17 00:00:00 2001
From: 单军华
Date: Wed, 11 Jul 2018 10:47:42 +0800
Subject: [PATCH] 首次上传

---
 screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Util/EaseMessageReadManager.m |  226 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 226 insertions(+), 0 deletions(-)

diff --git a/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Util/EaseMessageReadManager.m b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Util/EaseMessageReadManager.m
new file mode 100755
index 0000000..a3c6fcd
--- /dev/null
+++ b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Util/EaseMessageReadManager.m
@@ -0,0 +1,226 @@
+/************************************************************
+ *  * Hyphenate CONFIDENTIAL
+ * __________________
+ * Copyright (C) 2016 Hyphenate Inc. All rights reserved.
+ *
+ * NOTICE: All information contained herein is, and remains
+ * the property of Hyphenate Inc.
+ * Dissemination of this information or reproduction of this material
+ * is strictly forbidden unless prior written permission is obtained
+ * from Hyphenate Inc.
+ */
+
+#import "EaseMessageReadManager.h"
+#import "UIImageView+WebCache.h"
+#import "EMCDDeviceManager.h"
+
+#import "MWPhotoBrowser.h"
+
+#define IMAGE_MAX_SIZE_5k 5120*2880
+
+static EaseMessageReadManager *detailInstance = nil;
+
+@interface EaseMessageReadManager() <MWPhotoBrowserDelegate>
+
+@property (strong, nonatomic) UIWindow *keyWindow;
+
+@property (strong, nonatomic) NSMutableArray *photos;
+@property (strong, nonatomic) UINavigationController *photoNavigationController;
+
+@property (strong, nonatomic) UIAlertView *textAlertView;
+
+@end
+
+@implementation EaseMessageReadManager
+
++ (id)defaultManager
+{
+    @synchronized(self){
+        static dispatch_once_t pred;
+        dispatch_once(&pred, ^{
+            detailInstance = [[self alloc] init];
+        });
+    }
+    
+    return detailInstance;
+}
+
+#pragma mark - getter
+
+- (UIWindow *)keyWindow
+{
+    if(_keyWindow == nil)
+    {
+        _keyWindow = [[UIApplication sharedApplication] keyWindow];
+    }
+    
+    return _keyWindow;
+}
+
+- (NSMutableArray *)photos
+{
+    if (_photos == nil) {
+        _photos = [[NSMutableArray alloc] init];
+    }
+    
+    return _photos;
+}
+
+- (MWPhotoBrowser *)photoBrowser
+{
+    if (_photoBrowser == nil) {
+        _photoBrowser = [[MWPhotoBrowser alloc] initWithDelegate:self];
+        _photoBrowser.displayActionButton = YES;
+        _photoBrowser.displayNavArrows = YES;
+        _photoBrowser.displaySelectionButtons = NO;
+        _photoBrowser.alwaysShowControls = NO;
+        _photoBrowser.wantsFullScreenLayout = YES;
+        _photoBrowser.zoomPhotosToFill = YES;
+        _photoBrowser.enableGrid = NO;
+        _photoBrowser.startOnGrid = NO;
+        [_photoBrowser setCurrentPhotoIndex:0];
+    }
+    
+    return _photoBrowser;
+}
+
+- (UINavigationController *)photoNavigationController
+{
+    if (_photoNavigationController == nil) {
+        _photoNavigationController = [[UINavigationController alloc] initWithRootViewController:self.photoBrowser];
+        _photoNavigationController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
+    }
+    
+    [self.photoBrowser reloadData];
+    return _photoNavigationController;
+}
+
+#pragma mark - MWPhotoBrowserDelegate
+
+- (NSUInteger)numberOfPhotosInPhotoBrowser:(MWPhotoBrowser *)photoBrowser
+{
+    return [self.photos count];
+}
+
+- (id <MWPhoto>)photoBrowser:(MWPhotoBrowser *)photoBrowser photoAtIndex:(NSUInteger)index
+{
+    if (index < self.photos.count)
+    {
+        return [self.photos objectAtIndex:index];
+    }
+    
+    return nil;
+}
+
+
+#pragma mark - private
+
+
+#pragma mark - public
+
+- (void)showBrowserWithImages:(NSArray *)imageArray
+{
+    if (imageArray && [imageArray count] > 0) {
+        NSMutableArray *photoArray = [NSMutableArray array];
+        for (id object in imageArray) {
+            MWPhoto *photo;
+            if ([object isKindOfClass:[UIImage class]]) {
+                CGFloat imageSize = ((UIImage*)object).size.width * ((UIImage*)object).size.height;
+                if (imageSize > IMAGE_MAX_SIZE_5k) {
+                    photo = [MWPhoto photoWithImage:[self scaleImage:object toScale:(IMAGE_MAX_SIZE_5k)/imageSize]];
+                } else {
+                    photo = [MWPhoto photoWithImage:object];
+                }
+            }
+            else if ([object isKindOfClass:[NSURL class]])
+            {
+                photo = [MWPhoto photoWithURL:object];
+            }
+            else if ([object isKindOfClass:[NSString class]])
+            {
+                
+            }
+            [photoArray addObject:photo];
+        }
+        
+        self.photos = photoArray;
+    }
+    
+    UIViewController *rootController = [self.keyWindow rootViewController];
+    [rootController presentViewController:self.photoNavigationController animated:YES completion:nil];
+}
+
+- (BOOL)prepareMessageAudioModel:(EaseMessageModel *)messageModel
+                      updateViewCompletion:(void (^)(EaseMessageModel *prevAudioModel, EaseMessageModel *currentAudioModel))updateCompletion
+{
+    BOOL isPrepare = NO;
+    
+    if(messageModel.bodyType == EMMessageBodyTypeVoice)
+    {
+        EaseMessageModel *prevAudioModel = self.audioMessageModel;
+        EaseMessageModel *currentAudioModel = messageModel;
+        self.audioMessageModel = messageModel;
+        
+        BOOL isPlaying = messageModel.isMediaPlaying;
+        if (isPlaying) {
+            messageModel.isMediaPlaying = NO;
+            self.audioMessageModel = nil;
+            currentAudioModel = nil;
+            [[EMCDDeviceManager sharedInstance] stopPlaying];
+        }
+        else {
+            messageModel.isMediaPlaying = YES;
+            prevAudioModel.isMediaPlaying = NO;
+            isPrepare = YES;
+            
+            if (!messageModel.isMediaPlayed) {
+                messageModel.isMediaPlayed = YES;
+                EMMessage *chatMessage = messageModel.message;
+                if (chatMessage.ext) {
+                    NSMutableDictionary *dict = [chatMessage.ext mutableCopy];
+                    if (![[dict objectForKey:@"isPlayed"] boolValue]) {
+                        [dict setObject:@YES forKey:@"isPlayed"];
+                        chatMessage.ext = dict;
+                        [[EMClient sharedClient].chatManager updateMessage:chatMessage completion:nil];
+                    }
+                } else {
+                    NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithDictionary:chatMessage.ext];
+                    [dic setObject:@YES forKey:@"isPlayed"];
+                    chatMessage.ext = dic;
+                    [[EMClient sharedClient].chatManager updateMessage:chatMessage completion:nil];
+                }
+            }
+        }
+        
+        if (updateCompletion) {
+            updateCompletion(prevAudioModel, currentAudioModel);
+        }
+    }
+    
+    return isPrepare;
+}
+
+- (EaseMessageModel *)stopMessageAudioModel
+{
+    EaseMessageModel *model = nil;
+    if (self.audioMessageModel.bodyType == EMMessageBodyTypeVoice) {
+        if (self.audioMessageModel.isMediaPlaying) {
+            model = self.audioMessageModel;
+        }
+        self.audioMessageModel.isMediaPlaying = NO;
+        self.audioMessageModel = nil;
+    }
+    
+    return model;
+}
+
+- (UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize
+{
+    UIGraphicsBeginImageContext(CGSizeMake(image.size.width * scaleSize, image.size.height * scaleSize));
+    [image drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height * scaleSize)];
+    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
+    UIGraphicsEndImageContext();
+    return scaledImage;
+}
+
+@end

--
Gitblit v1.8.0