mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-19 20:21:26 +00:00
no message
This commit is contained in:
parent
9e2e55e46c
commit
e2290bbeda
@ -82,6 +82,8 @@ typedef enum
|
||||
@property (nonatomic, readonly) bool isZoomAvailable;
|
||||
@property (nonatomic, assign) CGFloat zoomLevel;
|
||||
|
||||
@property (nonatomic, assign) bool disableResultMirroring;
|
||||
|
||||
@property (nonatomic, assign) bool disabled;
|
||||
@property (nonatomic, readonly) bool isCapturing;
|
||||
@property (nonatomic, readonly) NSTimeInterval videoRecordingDuration;
|
||||
|
@ -348,7 +348,7 @@ NSString *const PGCameraAdjustingFocusKey = @"adjustingFocus";
|
||||
|
||||
- (void)takePhotoWithCompletion:(void (^)(UIImage *result, PGCameraShotMetadata *metadata))completion
|
||||
{
|
||||
bool videoMirrored = _previewView.captureConnection.videoMirrored;
|
||||
bool videoMirrored = !self.disableResultMirroring ? _previewView.captureConnection.videoMirrored : false;
|
||||
|
||||
[[PGCamera cameraQueue] dispatch:^
|
||||
{
|
||||
|
@ -14,7 +14,8 @@ typedef enum {
|
||||
TGCameraControllerGenericIntent,
|
||||
TGCameraControllerPassportIntent,
|
||||
TGCameraControllerPassportIdIntent,
|
||||
TGCameraControllerAvatarIntent,
|
||||
TGCameraControllerPassportMultipleIntent,
|
||||
TGCameraControllerAvatarIntent
|
||||
} TGCameraControllerIntent;
|
||||
|
||||
@interface TGCameraControllerWindow : TGOverlayControllerWindow
|
||||
|
@ -1227,8 +1227,8 @@ static CGPoint TGCameraControllerClampPointToScreenSize(__unused id self, __unus
|
||||
}
|
||||
}];
|
||||
|
||||
bool hasCamera = (_intent == TGCameraControllerGenericIntent && !_shortcut) || (_intent == TGCameraControllerPassportIntent || _intent == TGCameraControllerPassportIdIntent);
|
||||
TGMediaPickerGalleryModel *model = [[TGMediaPickerGalleryModel alloc] initWithContext:windowContext items:galleryItems focusItem:focusItem selectionContext:_items.count > 1 ? selectionContext : nil editingContext:editingContext hasCaptions:self.allowCaptions allowCaptionEntities:self.allowCaptionEntities hasTimer:self.hasTimer onlyCrop:_intent == TGCameraControllerPassportIntent || _intent == TGCameraControllerPassportIdIntent inhibitDocumentCaptions:self.inhibitDocumentCaptions hasSelectionPanel:true hasCamera:hasCamera recipientName:self.recipientName];
|
||||
bool hasCamera = (_intent == TGCameraControllerGenericIntent && !_shortcut) || (_intent == TGCameraControllerPassportMultipleIntent);
|
||||
TGMediaPickerGalleryModel *model = [[TGMediaPickerGalleryModel alloc] initWithContext:windowContext items:galleryItems focusItem:focusItem selectionContext:_items.count > 1 ? selectionContext : nil editingContext:editingContext hasCaptions:self.allowCaptions allowCaptionEntities:self.allowCaptionEntities hasTimer:self.hasTimer onlyCrop:_intent == TGCameraControllerPassportIntent || _intent == TGCameraControllerPassportIdIntent || _intent == TGCameraControllerPassportMultipleIntent inhibitDocumentCaptions:self.inhibitDocumentCaptions hasSelectionPanel:true hasCamera:hasCamera recipientName:self.recipientName];
|
||||
model.controller = galleryController;
|
||||
model.suggestionContext = self.suggestionContext;
|
||||
|
||||
|
@ -5,6 +5,8 @@
|
||||
@property (nonatomic) CGPoint portraitAdjustment;
|
||||
@property (nonatomic) CGPoint landscapeAdjustment;
|
||||
|
||||
@property (nonatomic, strong) UIImage *image;
|
||||
|
||||
- (instancetype)initWithImage:(UIImage *)image;
|
||||
|
||||
@end
|
||||
|
@ -22,6 +22,18 @@
|
||||
return self;
|
||||
}
|
||||
|
||||
- (UIImage *)image
|
||||
{
|
||||
return _iconView.image;
|
||||
}
|
||||
|
||||
- (void)setImage:(UIImage *)image
|
||||
{
|
||||
_iconView.image = image;
|
||||
_iconView.frame = CGRectMake(0.0f, 0.0f, image.size.width, image.size.height);
|
||||
[self setNeedsLayout];
|
||||
}
|
||||
|
||||
- (UIEdgeInsets)alignmentRectInsets
|
||||
{
|
||||
UIEdgeInsets insets = UIEdgeInsetsZero;
|
||||
|
@ -715,7 +715,7 @@
|
||||
|
||||
- (UIView *)findScrollView:(UIView *)view
|
||||
{
|
||||
if (view == nil || [view isKindOfClass:[UIScrollView class]])
|
||||
if (view == nil || ([view isKindOfClass:[UIScrollView class]] && view.tag != 0xbeef))
|
||||
return view;
|
||||
|
||||
return [self findScrollView:view.superview];
|
||||
|
@ -51,7 +51,7 @@
|
||||
|
||||
__weak TGMenuSheetController *weakController = controller;
|
||||
__weak TGViewController *weakParentController = parentController;
|
||||
TGAttachmentCarouselItemView *carouselItem = [[TGAttachmentCarouselItemView alloc] initWithContext:context camera:true selfPortrait:intent == TGPassportAttachIntentSelfie forProfilePhoto:false assetType:TGMediaAssetPhotoType saveEditedPhotos:false allowGrouping:false allowSelection:false allowEditing:true document:true];
|
||||
TGAttachmentCarouselItemView *carouselItem = [[TGAttachmentCarouselItemView alloc] initWithContext:context camera:true selfPortrait:intent == TGPassportAttachIntentSelfie forProfilePhoto:false assetType:TGMediaAssetPhotoType saveEditedPhotos:false allowGrouping:false allowSelection:intent == TGPassportAttachIntentMultiple allowEditing:true document:true];
|
||||
__weak TGAttachmentCarouselItemView *weakCarouselItem = carouselItem;
|
||||
carouselItem.onlyCrop = true;
|
||||
carouselItem.parentController = parentController;
|
||||
@ -75,7 +75,7 @@
|
||||
|
||||
__strong TGAttachmentCarouselItemView *strongCarouselItem = weakCarouselItem;
|
||||
|
||||
uploadAction([TGPassportAttachMenu resultSignalForEditingContext:strongCarouselItem.editingContext currentItem:(id<TGMediaEditableItem>)currentItem],
|
||||
uploadAction([TGPassportAttachMenu resultSignalForEditingContext:strongCarouselItem.editingContext selectionContext:strongCarouselItem.selectionContext currentItem:(id<TGMediaEditableItem>)currentItem],
|
||||
^{
|
||||
__strong TGMenuSheetController *strongController = weakController;
|
||||
if (strongController != nil)
|
||||
@ -223,8 +223,7 @@
|
||||
__weak TGMediaAssetsController *weakController = controller;
|
||||
controller.singleCompletionBlock = ^(id<TGMediaEditableItem> currentItem, TGMediaEditingContext *editingContext)
|
||||
{
|
||||
exit(1);
|
||||
uploadAction([TGPassportAttachMenu resultSignalForEditingContext:editingContext currentItem:(id<TGMediaEditableItem>)currentItem],
|
||||
uploadAction([TGPassportAttachMenu resultSignalForEditingContext:editingContext selectionContext:nil currentItem:(id<TGMediaEditableItem>)currentItem],
|
||||
^{
|
||||
__strong TGMediaAssetsController *strongController = weakController;
|
||||
if (strongController != nil && strongController.dismissalBlock != nil)
|
||||
@ -259,7 +258,7 @@
|
||||
legacyCameraController.finishedWithImage = ^(UIImage *image)
|
||||
{
|
||||
TGCameraCapturedPhoto *photo = [[TGCameraCapturedPhoto alloc] initWithImage:image metadata:nil];
|
||||
uploadAction([TGPassportAttachMenu resultSignalForEditingContext:nil currentItem:photo], ^
|
||||
uploadAction([TGPassportAttachMenu resultSignalForEditingContext:nil selectionContext:nil currentItem:photo], ^
|
||||
{
|
||||
__strong TGViewController *strongParentController = weakParentController;
|
||||
if (strongParentController != nil)
|
||||
@ -270,7 +269,7 @@
|
||||
[parentController presentViewController:legacyCameraController animated:true completion:nil];
|
||||
}
|
||||
|
||||
+ (void)_displayCameraWithView:(TGAttachmentCameraView *)cameraView menuController:(TGMenuSheetController *)menuController parentController:(TGViewController *)parentController context:(id<LegacyComponentsContext>)context intent:(bool)intent uploadAction:(void (^)(SSignal *, void (^)(void)))uploadAction
|
||||
+ (void)_displayCameraWithView:(TGAttachmentCameraView *)cameraView menuController:(TGMenuSheetController *)menuController parentController:(TGViewController *)parentController context:(id<LegacyComponentsContext>)context intent:(TGPassportAttachIntent)intent uploadAction:(void (^)(SSignal *, void (^)(void)))uploadAction
|
||||
{
|
||||
if (![[[LegacyComponentsGlobals provider] accessChecker] checkCameraAuthorizationStatusForIntent:TGCameraAccessIntentDefault alertDismissCompletion:nil])
|
||||
return;
|
||||
@ -290,11 +289,22 @@
|
||||
|
||||
id<LegacyComponentsOverlayWindowManager> windowManager = [context makeOverlayWindowManager];
|
||||
|
||||
if (cameraView.previewView != nil)
|
||||
controller = [[TGCameraController alloc] initWithContext:[windowManager context] saveEditedPhotos:false saveCapturedMedia:false camera:cameraView.previewView.camera previewView:cameraView.previewView intent:intent == TGPassportAttachIntentIdentityCard ? TGCameraControllerPassportIdIntent : TGCameraControllerPassportIntent];
|
||||
else
|
||||
controller = [[TGCameraController alloc] initWithContext:[windowManager context] saveEditedPhotos:false saveCapturedMedia:false intent:intent == TGPassportAttachIntentIdentityCard ? TGCameraControllerPassportIdIntent : TGCameraControllerPassportIntent];
|
||||
TGCameraControllerIntent cameraIntent = TGCameraControllerPassportIntent;
|
||||
if (intent == TGPassportAttachIntentIdentityCard)
|
||||
cameraIntent = TGCameraControllerPassportIdIntent;
|
||||
else if (intent == TGPassportAttachIntentMultiple)
|
||||
cameraIntent = TGCameraControllerPassportMultipleIntent;
|
||||
|
||||
if (cameraView.previewView != nil)
|
||||
{
|
||||
if (intent == TGPassportAttachIntentSelfie)
|
||||
cameraView.previewView.camera.disableResultMirroring = true;
|
||||
controller = [[TGCameraController alloc] initWithContext:[windowManager context] saveEditedPhotos:false saveCapturedMedia:false camera:cameraView.previewView.camera previewView:cameraView.previewView intent:cameraIntent];
|
||||
}
|
||||
else
|
||||
{
|
||||
controller = [[TGCameraController alloc] initWithContext:[windowManager context] saveEditedPhotos:false saveCapturedMedia:false intent:cameraIntent];
|
||||
}
|
||||
controller.shouldStoreCapturedAssets = false;
|
||||
|
||||
TGCameraControllerWindow *controllerWindow = [[TGCameraControllerWindow alloc] initWithManager:windowManager parentController:parentController contentController:controller];
|
||||
@ -359,7 +369,7 @@
|
||||
|
||||
[strongMenuController dismissAnimated:false];
|
||||
|
||||
uploadAction([TGPassportAttachMenu resultSignalForEditingContext:editingContext currentItem:(id<TGMediaEditableItem>)currentItem],^
|
||||
uploadAction([TGPassportAttachMenu resultSignalForEditingContext:editingContext selectionContext:selectionContext currentItem:(id<TGMediaEditableItem>)currentItem],^
|
||||
{
|
||||
});
|
||||
};
|
||||
@ -388,19 +398,26 @@
|
||||
[parentController presentViewController:controller animated:true completion:nil];
|
||||
}
|
||||
|
||||
+ (SSignal *)resultSignalForEditingContext:(TGMediaEditingContext *)editingContext currentItem:(id<TGMediaEditableItem>)currentItem
|
||||
+ (SSignal *)resultSignalForEditingContext:(TGMediaEditingContext *)editingContext selectionContext:(TGMediaSelectionContext *)selectionContext currentItem:(id<TGMediaEditableItem>)currentItem
|
||||
{
|
||||
SSignal *signal = [SSignal complete];
|
||||
NSMutableArray *selectedItems = selectionContext.selectedItems ? [selectionContext.selectedItems mutableCopy] : [[NSMutableArray alloc] init];
|
||||
if (selectedItems.count == 0 && currentItem != nil)
|
||||
[selectedItems addObject:currentItem];
|
||||
|
||||
for (id<TGMediaEditableItem> item in selectedItems)
|
||||
{
|
||||
SSignal *inlineSignal = nil;
|
||||
if ([currentItem isKindOfClass:[TGMediaAsset class]])
|
||||
inlineSignal = [TGMediaAssetImageSignals imageForAsset:(TGMediaAsset *)currentItem imageType:TGMediaAssetImageTypeScreen size:CGSizeMake(2048, 2048) allowNetworkAccess:false];
|
||||
else if ([currentItem isKindOfClass:[TGCameraCapturedPhoto class]])
|
||||
inlineSignal = [currentItem originalImageSignal:0.0];
|
||||
if ([item isKindOfClass:[TGMediaAsset class]])
|
||||
inlineSignal = [TGMediaAssetImageSignals imageForAsset:(TGMediaAsset *)item imageType:TGMediaAssetImageTypeScreen size:CGSizeMake(2048, 2048) allowNetworkAccess:false];
|
||||
else if ([item isKindOfClass:[TGCameraCapturedPhoto class]])
|
||||
inlineSignal = [item originalImageSignal:0.0];
|
||||
|
||||
SSignal *assetSignal = inlineSignal;
|
||||
SSignal *imageSignal = assetSignal;
|
||||
if (editingContext != nil)
|
||||
{
|
||||
imageSignal = [[[[[editingContext imageSignalForItem:currentItem withUpdates:true] filter:^bool(id result)
|
||||
imageSignal = [[[[[editingContext imageSignalForItem:item withUpdates:true] filter:^bool(id result)
|
||||
{
|
||||
return result == nil || ([result isKindOfClass:[UIImage class]] && !((UIImage *)result).degraded);
|
||||
}] take:1] mapToSignal:^SSignal *(id result)
|
||||
@ -424,7 +441,7 @@
|
||||
}];
|
||||
}
|
||||
|
||||
return [[imageSignal catch:^SSignal *(__unused id error)
|
||||
signal = [signal then:[[imageSignal catch:^SSignal *(__unused id error)
|
||||
{
|
||||
return inlineSignal;
|
||||
}] map:^id(UIImage *image)
|
||||
@ -438,7 +455,10 @@
|
||||
UIImage *thumbnailImage = TGScaleImageToPixelSize(scaledImage, thumbnailSize);
|
||||
|
||||
return @{ @"image": scaledImage, @"thumbnail": thumbnailImage };
|
||||
}];
|
||||
}]];
|
||||
}
|
||||
|
||||
return signal;
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -45,7 +45,7 @@
|
||||
{
|
||||
[_camera startCaptureForResume:false completion:nil];
|
||||
|
||||
_timer = [TGTimerTarget scheduledMainThreadTimerWithTarget:self action:@selector(handleNextFrame) interval:1.0 repeat:false];
|
||||
_timer = [TGTimerTarget scheduledMainThreadTimerWithTarget:self action:@selector(handleNextFrame) interval:0.5 repeat:false];
|
||||
}
|
||||
|
||||
- (void)stop
|
||||
|
@ -31,7 +31,7 @@
|
||||
|
||||
- (instancetype)initWithString:(NSString *)string {
|
||||
if ([string hasPrefix:@"webdoc"]) {
|
||||
NSData *data = [[NSData alloc] initWithBase64EncodedString:[string substringFromIndex:6] options:0];
|
||||
NSData *data = iosMajorVersion() >= 7 ? [[NSData alloc] initWithBase64EncodedString:[string substringFromIndex:6] options:NSDataBase64DecodingIgnoreUnknownCharacters] : [[NSData alloc] initWithBase64Encoding:[string substringFromIndex:6]];
|
||||
if (data != nil) {
|
||||
PSKeyValueDecoder *decoder = [[PSKeyValueDecoder alloc] initWithData:data];
|
||||
return [[TGWebDocumentReference alloc] initWithKeyValueCoder:decoder];
|
||||
|
Loading…
x
Reference in New Issue
Block a user