414 lines
14 KiB
Objective-C
Executable File
414 lines
14 KiB
Objective-C
Executable File
//
|
|
// FirstViewController.m
|
|
// Talk
|
|
//
|
|
// Created by xuzs on 22/10/11.
|
|
// Copyright (c) 2022年 xuzs. All rights reserved.
|
|
//
|
|
|
|
#import "Opendoor.h"
|
|
#import "UI.h"
|
|
#import "HttpManager.h"
|
|
#import "Msg.h"
|
|
#import "Pub.h"
|
|
#import "sysInfo.h"
|
|
#import "Call.h"
|
|
#import "EquAdd.h"
|
|
#import "EquConfig.h"
|
|
#import "P2pTest.h"
|
|
#import "Sformat.h"
|
|
|
|
@interface Opendoor ()
|
|
|
|
@property (nonatomic, strong)UIView *rview,*headView,*topView,*bottomView,*openView,*openBgView;
|
|
@property (nonatomic, strong)UILabel *titleLabel;
|
|
@property (nonatomic, strong)UIImageView *rightImage,*watchImage,*openImage,*wave1Image,*wave2Image,*wave3Image;
|
|
@property (nonatomic, strong)UIButton *selequButton;
|
|
@property (nonatomic, strong)UIAlertController *openAlert;
|
|
@property NSArray *equlist;
|
|
@property int selIndex;
|
|
@property NSString *pwd;
|
|
|
|
@property long p2p_click_times;
|
|
@property long p2p_click_time;
|
|
|
|
@end
|
|
|
|
@implementation Opendoor
|
|
|
|
- (void)viewDidLoad {
|
|
[super viewDidLoad];
|
|
// Do any additional setup after loading the view, typically from a nib.
|
|
[self setNavTitle:@"手机开门"];
|
|
[self setNavRight:@"setting" action:@selector(ConfigEqu) ];
|
|
[self setNavLeft:@"blank" action:@selector(P2ptest) ];
|
|
[self setupViews];
|
|
[self setUI];
|
|
[Opendoor refEqulist:nil];
|
|
self.p2p_click_time = 0;
|
|
}
|
|
- (void)setupViews
|
|
{
|
|
|
|
|
|
[self.view addSubview:self.rview];
|
|
//[self.rview addSubview:self.headView];
|
|
[self.rview addSubview:self.topView];
|
|
[self.rview addSubview:self.bottomView];
|
|
|
|
|
|
//[self.headView addSubview:self.titleLabel];
|
|
//[self.headView addSubview:self.rightImage];
|
|
|
|
|
|
[self.topView addSubview:self.selequButton];
|
|
[self.topView addSubview:self.watchImage];
|
|
[self.topView addSubview:self.wave1Image];
|
|
[self.topView addSubview:self.wave2Image];
|
|
[self.topView addSubview:self.wave3Image];
|
|
|
|
|
|
[self.bottomView addSubview:self.openView];
|
|
[self.openView addSubview:self.openBgView];
|
|
[self.openView addSubview:self.openImage];
|
|
|
|
|
|
[self.watchImage addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(Watch)]];
|
|
[self.selequButton addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(SelEqu)]];
|
|
[self.openView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(OpenDoor)]];
|
|
}
|
|
- (void)setUI{
|
|
[UI SetRView:self.rview Top:@"0" Right:@"0" Bottom:@"0" Left:@"0"];
|
|
|
|
|
|
//[UI setFrameInView:self.headView Width:@"100vw" Height:@"70" TranslateX:@"0" TranslateY:@"0" InView:nil Position:UITopMid];
|
|
[UI setFrameInView:self.topView Width:@"100vw" Height:@"55vh" TranslateX:@"0" TranslateY:@"0" InView:nil Position:UITopMid];
|
|
[UI setFrameInView:self.bottomView Width:@"100vw" Height:@"45vh" TranslateX:@"0" TranslateY:@"0" InView:nil Position:UIBottomMid];
|
|
[UI chgMargin:self.topView Css:[[NSString alloc] initWithFormat:@"%f 0 0 0",[UI getStatuAndStatuHeight]]];
|
|
|
|
|
|
|
|
//[UI setFrameInView:self.titleLabel Width:@"100vw" Height:@"50" TranslateX:@"0" TranslateY:@"0" InView:nil Position:UIBottomMid];
|
|
//[UI chgMargin:self.titleLabel Css:@"0 50 0 50"];
|
|
//[UI setFrameInView:self.rightImage Width:@"20" Height:@"20" TranslateX:@"15" TranslateY:@"15" InView:nil Position:UIBottomRight];
|
|
|
|
[UI setFrameInView:self.selequButton Width:@"70vw" Height:@"50" TranslateX:@"0" TranslateY:@"30%" InView:nil Position:UITopMid];
|
|
[UI chgMargin:self.selequButton Css:@"0 55 0 0"];
|
|
[UI setFrameByView:self.watchImage Width:@"50" Height:@"50" TranslateX:@"5" TranslateY:@"0" ByView:self.selequButton Position:RightAlignCenter];
|
|
|
|
|
|
[UI setFrameInView:self.wave1Image Width:@"122vw" Height:@"66" TranslateX:@"0" TranslateY:@"-6" InView:nil Position:UIBottomMid];
|
|
[UI setFrameInView:self.wave2Image Width:@"112vw" Height:@"68" TranslateX:@"8vw" TranslateY:@"-4" InView:nil Position:UIBottomMid];
|
|
[UI setFrameInView:self.wave3Image Width:@"104vw" Height:@"70" TranslateX:@"0" TranslateY:@"-2" InView:nil Position:UIBottomMid];
|
|
|
|
|
|
[UI setFrameInView:self.openView Width:@"35vw" Height:@"35vw" TranslateX:@"0" TranslateY:@"-20%" InView:nil Position:UICenter];
|
|
[UI setFrameInView:self.openBgView Width:@"35vw" Height:@"35vw" TranslateX:@"0" TranslateY:@"0" InView:nil Position:UICenter];
|
|
[UI setFrameInView:self.openImage Width:@"35%" Height:@"35%" TranslateX:@"0" TranslateY:@"0" InView:nil Position:UICenter];
|
|
|
|
//设置圆角
|
|
[UI setCornerRadius:self.openView];
|
|
[UI setCornerRadius:self.openBgView];
|
|
[UI setGradientBorder:self.openBgView withColor:0x378fe8];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)SelEqu{
|
|
if([self hasEqu]==NO)return;
|
|
[Msg Select:self SourceView:self.selequButton Title:@"选择设备" Options:self.equlist SelectedHandler:^(int index) {
|
|
if(index>0){
|
|
self.selIndex = index;
|
|
[_selequButton setTitle:[self.equlist[index] valueForKey:@"name"] forState:UIControlStateNormal];
|
|
}
|
|
}];
|
|
}
|
|
- (BOOL)hasEqu{
|
|
BOOL ret = YES;
|
|
if(self.selIndex==-2){
|
|
ret = NO;
|
|
//
|
|
[self alert:@"正在获取设备,请稍候"];
|
|
}
|
|
else if(self.selIndex==-1){
|
|
ret = NO;
|
|
////是否添加设备
|
|
[Msg MessageBox:self Msg:@"您尚未添加设备,是否立即添加?" SelectedHandler:^(int index) {
|
|
|
|
EquAdd *equadd = [[EquAdd alloc] init];
|
|
[self.navigationController pushViewController:equadd animated:YES];
|
|
|
|
}];
|
|
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
- (void)Watch{
|
|
if([self hasEqu]==NO)return;
|
|
[Pub getApp].callOut = [[Call alloc] init];
|
|
[Pub getApp].callOut.CallTag = @"WATCH";
|
|
[[Pub getApp].talk SetRemoteEqu:[self.equlist[self.selIndex] valueForKey:@"equid"]];
|
|
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[Pub getApp].callOut];
|
|
nav.modalPresentationStyle = UIModalPresentationFullScreen;
|
|
[[Pub getApp].window.rootViewController presentViewController:nav animated:YES completion:nil];
|
|
}
|
|
- (void)ConfigEqu{
|
|
NSLog(@"ConfigEqu");
|
|
if([self hasEqu]==NO)return;
|
|
EquConfig *equconfig = [[EquConfig alloc] init];
|
|
equconfig.equid = [self.equlist[self.selIndex] valueForKey:@"equid"];
|
|
[self.navigationController pushViewController:equconfig animated:YES];
|
|
}
|
|
- (void)P2ptest{
|
|
if([Sformat timestamp] - self.p2p_click_time<=1000){
|
|
self.p2p_click_times ++;
|
|
}
|
|
else{
|
|
self.p2p_click_times = 0;
|
|
}
|
|
self.p2p_click_time = [Sformat timestamp];
|
|
if(self.p2p_click_times>5){
|
|
[Pub getApp].p2ptest = [[P2pTest alloc] init];
|
|
[self.navigationController pushViewController:[Pub getApp].p2ptest animated:YES];
|
|
}
|
|
|
|
}
|
|
- (void)OpenDoor{
|
|
if([self hasEqu]==NO)return;
|
|
|
|
[[Pub getApp].talk SetRemoteEqu:[self.equlist[self.selIndex] valueForKey:@"equid"]];
|
|
self.openAlert = [Msg OpendoorByPwd:self SelectedHandler:^(int index) {
|
|
[self alert:@"请输入6位数字密码"];
|
|
}];
|
|
|
|
|
|
|
|
}
|
|
- (void)OpenDoorStep1:(NSString *)pwd{
|
|
if(self.openAlert){
|
|
[self.openAlert dismissViewControllerAnimated:YES completion:nil];
|
|
//[[Pub getApp].talk openDoor:pwd];
|
|
self.pwd = pwd;
|
|
[[Pub getApp].talk watchByServer];
|
|
|
|
CABasicAnimation* rotationAnimation;
|
|
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
|
|
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 /* full rotation*/ * 1 * 1 ];
|
|
rotationAnimation.duration = 1;
|
|
rotationAnimation.cumulative = YES;
|
|
rotationAnimation.repeatCount = 15.0;
|
|
rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
|
|
|
|
self.openBgView.hidden = NO;
|
|
[self.openBgView.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
|
|
|
|
}
|
|
}
|
|
|
|
- (void)OpenDoorStep2{
|
|
[[Pub getApp].talk openDoor:self.pwd];
|
|
}
|
|
- (void)OpenDoorEnd{
|
|
NSLog(@"OpenDoorEnd11");
|
|
dispatch_async(dispatch_get_main_queue(), ^{//转到主线程处理
|
|
//[self.openBgView.layer removeAllAnimations];
|
|
[self.openBgView.layer removeAnimationForKey:@"transform.rotation.z"];
|
|
self.openBgView.hidden = YES;
|
|
});
|
|
|
|
|
|
}
|
|
|
|
+ (void)refEqulist:(void (^)(void)) handler{
|
|
UITabBarController *tab = (UITabBarController *)[Pub getApp].window.rootViewController;
|
|
if(tab){
|
|
BaseNavigationController *nav = tab.viewControllers[1] ;
|
|
Opendoor *opendoor = nav.childViewControllers[0];
|
|
if(opendoor){
|
|
opendoor.selIndex = -2;//未获取到设备
|
|
[HttpManager EquList:[Pub getSysInfo].username Token:[Pub getSysInfo].token HttpResultHandler:^(NSDictionary *json) {
|
|
if([[json objectForKey:@"result"] isEqualToString:@"ok"]){
|
|
opendoor.equlist = [json objectForKey:@"data"];
|
|
NSLog(@"设备数:%lu",(unsigned long)opendoor.equlist.count);
|
|
if(opendoor.equlist.count>0){
|
|
opendoor.selIndex = 0;
|
|
[opendoor.selequButton setTitle:[opendoor.equlist[0] valueForKey:@"name"] forState:UIControlStateNormal];
|
|
}
|
|
else{
|
|
opendoor.selIndex = -1;//没有设备
|
|
[opendoor.selequButton setTitle:@"无设备" forState:UIControlStateNormal];
|
|
}
|
|
if(handler){
|
|
handler();
|
|
}
|
|
|
|
}
|
|
}];
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
+ (NSArray *)getEqulist{
|
|
UITabBarController *tab = (UITabBarController *)[Pub getApp].window.rootViewController;
|
|
if(tab){
|
|
BaseNavigationController *nav = tab.viewControllers[1] ;
|
|
Opendoor *opendoor = nav.childViewControllers[0];
|
|
if(opendoor){
|
|
return opendoor.equlist;
|
|
}
|
|
}
|
|
return nil;
|
|
}
|
|
|
|
+ (NSString *)EquNameById:(NSString *)equid{
|
|
NSArray *list = [Opendoor getEqulist];
|
|
if(list){
|
|
for(int i=0;i<list.count;i++){
|
|
if([equid isEqualToString:[list[i] valueForKey:@"equid"]]){
|
|
return [list[i] valueForKey:@"name"];
|
|
}
|
|
}
|
|
}
|
|
return equid;
|
|
}
|
|
- (void)didReceiveMemoryWarning {
|
|
[super didReceiveMemoryWarning];
|
|
// Dispose of any resources that can be recreated.
|
|
}
|
|
|
|
#pragma mark Property Accessors
|
|
- (UIView *)rview
|
|
{
|
|
if (!_rview) {
|
|
_rview = [[UIView alloc] init];
|
|
_rview.backgroundColor = [UIColor colorWithRed:241/255. green:241/255. blue:241/255. alpha:1];
|
|
}
|
|
return _rview;
|
|
}
|
|
//- (UIView *)headView
|
|
//{
|
|
// if (!_headView) {
|
|
// _headView = [[UIView alloc] init];
|
|
// _headView.backgroundColor = [UIColor colorWithRed:55/255. green:143/255. blue:232/255. alpha:1] ;
|
|
// }
|
|
// return _headView;
|
|
//}
|
|
- (UIView *)topView
|
|
{
|
|
if (!_topView) {
|
|
_topView = [[UIView alloc] init];
|
|
_topView.backgroundColor = [UIColor colorWithRed:55/255. green:143/255. blue:232/255. alpha:1] ;
|
|
}
|
|
return _topView;
|
|
}
|
|
- (UIView *)bottomView
|
|
{
|
|
if (!_bottomView) {
|
|
_bottomView = [[UIView alloc] init];
|
|
_bottomView.backgroundColor = [UIColor whiteColor] ;
|
|
}
|
|
return _bottomView;
|
|
}
|
|
- (UILabel *)titleLabel
|
|
{
|
|
if (!_titleLabel) {
|
|
_titleLabel = [[UILabel alloc] init];
|
|
_titleLabel.font = [UIFont systemFontOfSize:18.0f];
|
|
_titleLabel.textColor = [UIColor whiteColor];
|
|
_titleLabel.textAlignment = NSTextAlignmentCenter;
|
|
_titleLabel.text = NSLocalizedString(@"手机开门", nil);
|
|
}
|
|
return _titleLabel;
|
|
}
|
|
|
|
- (UIImageView *)rightImage
|
|
{
|
|
if (!_rightImage) {
|
|
_rightImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"setting"]];//[UI reSizeImage: toSize:CGSizeMake(33, 33)];
|
|
}
|
|
return _rightImage;
|
|
}
|
|
|
|
- (UIButton *)selequButton
|
|
{
|
|
if (!_selequButton) {
|
|
_selequButton = [[UIButton alloc] init];
|
|
[_selequButton setTitle:@"正在获取设备" forState:UIControlStateNormal];
|
|
[_selequButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
|
|
[_selequButton setTitleColor:[UIColor colorWithRed:255/255. green:128/255. blue:0/255. alpha:1] forState:UIControlStateHighlighted];
|
|
//_selequButton.backgroundColor = [UIColor colorWithRed:255/255. green:44/255. blue:44/255. alpha:0];
|
|
[_selequButton.layer setMasksToBounds:YES];
|
|
[_selequButton.layer setCornerRadius:25.0]; //设置矩形四个圆角半径
|
|
//边框宽度
|
|
[_selequButton.layer setBorderWidth:1.5];
|
|
_selequButton.layer.borderColor = [UIColor whiteColor].CGColor;
|
|
|
|
}
|
|
return _selequButton;
|
|
}
|
|
- (UIImageView *)watchImage
|
|
{
|
|
if (!_watchImage) {
|
|
_watchImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"watch"]];//[UI reSizeImage: toSize:CGSizeMake(33, 33)];
|
|
[_watchImage setUserInteractionEnabled:YES];
|
|
}
|
|
return _watchImage;
|
|
}
|
|
- (UIImageView *)wave1Image
|
|
{
|
|
if (!_wave1Image) {
|
|
_wave1Image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"wave1"]];//[UI reSizeImage: toSize:CGSizeMake(33, 33)];
|
|
}
|
|
return _wave1Image;
|
|
}
|
|
- (UIImageView *)wave2Image
|
|
{
|
|
if (!_wave2Image) {
|
|
_wave2Image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"wave2"]];//[UI reSizeImage: toSize:CGSizeMake(33, 33)];
|
|
}
|
|
return _wave2Image;
|
|
}
|
|
- (UIImageView *)wave3Image
|
|
{
|
|
if (!_wave3Image) {
|
|
_wave3Image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"wave3"]];//[UI reSizeImage: toSize:CGSizeMake(33, 33)];
|
|
}
|
|
return _wave3Image;
|
|
}
|
|
- (UIView *)openView
|
|
{
|
|
if (!_openView) {
|
|
_openView = [[UIView alloc] init];
|
|
_openView.backgroundColor = [UIColor colorWithRed:55/255. green:143/255. blue:232/255. alpha:1] ;
|
|
|
|
|
|
|
|
}
|
|
return _openView;
|
|
}
|
|
- (UIView *)openBgView
|
|
{
|
|
if (!_openBgView) {
|
|
_openBgView = [[UIView alloc] init];
|
|
_openBgView.backgroundColor = [UIColor colorWithRed:55/255. green:143/255. blue:232/255. alpha:1] ;
|
|
_openBgView.hidden = YES;
|
|
|
|
|
|
}
|
|
return _openBgView;
|
|
}
|
|
- (UIImageView *)openImage
|
|
{
|
|
if (!_openImage) {
|
|
_openImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"lock2"]];//[UI reSizeImage: toSize:CGSizeMake(33, 33)];
|
|
}
|
|
return _openImage;
|
|
}
|
|
|
|
@end
|