◎위챗 : speedseoul
UIScreenEdgePanGestureRecognizer //밀어서 인식
pan.edges = UIRectEdgeRight; 오른쪽 빈공간
[self.view addGestureRecognizer:pan];
_swipeGestureRecognizer.enabled = NO;
/*
* Copyright (c) 2010-2020 Belledonne Communications SARL.
*
* This file is part of linphone-iphone
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#import "SideMenuView.h"
#import "LinphoneManager.h"
#import "PhoneMainView.h"
@implementation SideMenuView
- (void)viewDidLoad {
[super viewDidLoad];
#pragma deploymate push "ignored-api-availability"
if (UIDevice.currentDevice.systemVersion.doubleValue >= 7) {
// it's better to detect only pan from screen edges
//밀어선 인식 등록, 함수동작 action:@selector(onLateralSwipe:)
UIScreenEdgePanGestureRecognizer *pan =
[[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(onLateralSwipe:)];
pan.edges = UIRectEdgeRight; //오른쪽빈공간
[self.view addGestureRecognizer:pan];
_swipeGestureRecognizer.enabled = NO;
}
#pragma deploymate pop
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[_sideMenuTableViewController viewWillAppear:animated];
[NSNotificationCenter.defaultCenter addObserver:self
selector:@selector(registrationUpdateEvent:)
name:kLinphoneRegistrationUpdate
object:nil];
[self updateHeader]; ///헤더업데이트
[_sideMenuTableViewController.tableView reloadData];//테이블뷰 업데이트(리로드 데이타)
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
_grayBackground.hidden = NO;
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
_grayBackground.hidden = YES;
// should be better than that with alpha animation..
}
- (void)updateHeader {
LinphoneAccount *default_account = linphone_core_get_default_account(LC); //디펄트 어카운트 존재확인
if (default_account != NULL) {//존재하면
const LinphoneAddress *addr = linphone_account_params_get_identity_address(linphone_account_get_params(default_account));//어드레스가져온다
[ContactDisplay setDisplayNameLabel:_nameLabel forAddress:addr];//콘택트에서 어드레스에 맞는 네임을 가져와서 네임라벨에표시
char *str = addr ? linphone_address_as_string(addr) : nil; // addr를 스트링값으로 가져온다
_addressLabel.text = str ? [NSString stringWithUTF8String:str] : NSLocalizedString(@"No address", nil);//str을 UTF8스트링값으로 어드레스라벨에표시
if (str) ms_free(str);
} else {
_nameLabel.text = linphone_core_get_account_list(LC) ? NSLocalizedString(@"No default account", nil) : NSLocalizedString(@"No account", nil);
// display direct IP:port address so that we can be reached
LinphoneAddress *addr = linphone_core_get_primary_contact_parsed(LC); //디펄트 어카운트가 없고 primary_contact_parsed 있다면
if (addr) {
char *as_string = linphone_address_as_string(addr); //스트링으로 가져온다
_addressLabel.text = [NSString stringWithFormat:@"%s", as_string];//어드레스라벨에 표시한다
ms_free(as_string);//스트링해제
linphone_address_unref(addr);//어드레스해제
} else {
_addressLabel.text = NSLocalizedString(@"No address", nil);// primary_contact_parsed 없다면 노어드레스표시
}
_presenceImage.image = nil;
}
_avatarImage.image = [LinphoneUtils selfAvatar];
}
#pragma deploymate push "ignored-api-availability"
- (void)onLateralSwipe:(UIScreenEdgePanGestureRecognizer *)pan {
[PhoneMainView.instance.mainViewController hideSideMenu:YES];
}
#pragma deploymate pop
- (IBAction)onHeaderClick:(id)sender {
/*[PhoneMainView.instance changeCurrentView:SettingsView.compositeViewDescription];*/ //commented added by moon
[PhoneMainView.instance.mainViewController hideSideMenu:YES];
}
- (IBAction)onAvatarClick:(id)sender {
// hide ourself because we are on top of image picker
if (!IPAD) {
[PhoneMainView.instance.mainViewController hideSideMenu:YES];
}
[ImagePickerView SelectImageFromDevice:self atPosition:_avatarImage inView:self.view withDocumentMenuDelegate:nil];
}
- (IBAction)onBackgroundClicked:(id)sender {
[PhoneMainView.instance.mainViewController hideSideMenu:YES];
}
- (void)registrationUpdateEvent:(NSNotification *)notif {
[self updateHeader];
[_sideMenuTableViewController.tableView reloadData];
}
#pragma mark - Image picker delegate
- (void)imagePickerDelegateImage:(UIImage *)image info:(NSString *)phAssetId {
// When getting image from the camera, it may be 90° rotated due to orientation
// (image.imageOrientation = UIImageOrientationRight). Just rotate it to be face up.
if (image.imageOrientation != UIImageOrientationUp) {
UIGraphicsBeginImageContextWithOptions(image.size, false, image.scale);
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
[LinphoneManager.instance lpConfigSetString:phAssetId forKey:@"avatar"];
_avatarImage.image = [LinphoneUtils selfAvatar];
[LinphoneManager.instance loadAvatar];
// Dismiss popover on iPad
if (IPAD) {
[VIEW(ImagePickerView).popoverController dismissPopoverAnimated:TRUE];
} else {
[PhoneMainView.instance.mainViewController hideSideMenu:NO];
}
}
- (void)imagePickerDelegateVideo:(NSURL*)url info:(NSDictionary *)info {
return; // Avatar video not supported (yet ;) )
}
@end