From f99cf1d5cc50407394501853be06cb39f38a092c Mon Sep 17 00:00:00 2001
From: 单军华 <WindShan@danjunhuas-MacBook-Pro.local>
Date: Wed, 28 Mar 2018 14:09:19 +0800
Subject: [PATCH] 界面更换与适配调整
---
pregnancy_guard/BaseProject/Controller/Home/SearchDevicePage.m | 463 +++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 351 insertions(+), 112 deletions(-)
diff --git a/pregnancy_guard/BaseProject/Controller/Home/SearchDevicePage.m b/pregnancy_guard/BaseProject/Controller/Home/SearchDevicePage.m
index b939612..c99daa2 100644
--- a/pregnancy_guard/BaseProject/Controller/Home/SearchDevicePage.m
+++ b/pregnancy_guard/BaseProject/Controller/Home/SearchDevicePage.m
@@ -9,12 +9,26 @@
#import "SearchDevicePage.h"
#import "GloriaLabel.h"
#import "SearchDeviceCell.h"
+#import "DevicesTableViewCell.h"
+#import "BaseNaviController.h"
+#import "ProgressHandler.h"
+#import "UIView+Toast.h"
+#import "UIImage+animatedGIF.h"
+#import "SearchTipsCell.h"
@interface SearchDevicePage ()<UITableViewDelegate,UITableViewDataSource>
-
+{
+ BOOL isBluetoothON;
+ UIButton* ic_search_btn;
+ UIImageView * ic_search_done;
+ UIImageView * ic_searching;
+ CGFloat ic_top_bkH;
+ CGFloat ic_search_doneH;
+ GloriaLabel* _TitleLabel;
+ GloriaLabel* _SetTitleLabel;
+}
@property (nonatomic, strong) UITableView * tableView;
@property (nonatomic, assign) int currentStatus; // 0 ��������� 1 ��������� 2 ������������
-@property (nonatomic, strong) NSMutableArray * modelArray;
@end
@@ -35,7 +49,7 @@
[self.view addSubview:_tableView];
[_tableView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.edges.mas_equalTo(UIEdgeInsetsMake(325 , 0, 0, 0));
+ make.edges.mas_equalTo(UIEdgeInsetsMake(ic_top_bkH , 0, 0, 0));
}];
_tableView.tableFooterView = [UIView new];
@@ -43,25 +57,84 @@
return _tableView;
}
+-(void)viewDidAppear:(BOOL)animated
+{
+ [super viewDidAppear:animated];
+ [[CBMoralManager sharedManager] disconnectPeripheral:[[CBMoralManager sharedManager] myPeripheral]];
+
+
+}
+
+// ������������������
+//if (isBluetoothON) {
+// return [[[CBMoralManager sharedManager] foundPeripherals] count];
+//}
+
+-(void)viewDidDisappear:(BOOL)animated
+{
+ [[CBMoralManager sharedManager]stopScanning];
+}
+
+-(void)startScanning
+{
+ // Start scanning for devices
+ [[CBMoralManager sharedManager] startScanning];
+ [self performSelector:@selector(stopScanning) withObject:nil afterDelay:5.0f];
+}
+
+-(void)pullToRefresh
+{
+ [[CBMoralManager sharedManager] refreshPeripherals];
+ [self performSelector:@selector(stopScanning) withObject:nil afterDelay:5.0f];
+}
+
+-(void)stopScanning
+{
+ if([[[CBMoralManager sharedManager] foundPeripherals] count] == 0)
+ {
+ self.currentStatus = 0;
+
+ [self.tableView reloadData];
+ }
+
+ ic_search_done.hidden = NO;
+ ic_searching.hidden = YES;
+ [ic_search_btn setBackgroundImage:[UIImage imageNamed:@"ic_search_start_btn" ] forState:UIControlStateNormal];
+ [[CBMoralManager sharedManager]stopScanning];
+ //[self.tableView.header endRefreshing];
+}
+
- (void)viewDidLoad
{
[super viewDidLoad];
- self.title = @"������������";
+ self.title = @"������������";
[self setNavigationLeft:@"ic_back_arraw.png" sel:@selector(backAticon)];
- [self setNavigationRight:@"icon_story.png" sel:@selector(storyAticon)];
self.currentStatus = 0;
- UIImageView * ic_top_bk = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 325)];
+ ic_top_bkH = 325;
+ ic_search_doneH = 230;
+ if ( IsiPhone4 || IsiPhone5 )
+ {
+ ic_top_bkH = 260;
+ ic_search_doneH = 180;
+ }
+
+ UIImageView * ic_top_bk = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, ic_top_bkH)];
ic_top_bk.image = [UIImage imageNamed:@"ic_top_bk"];
[self.view addSubview:ic_top_bk];
- UIImageView * ic_search_done = [[UIImageView alloc] initWithFrame:CGRectMake((SCREEN_WIDTH-230)/2, 20, 230, 230)];
+ ic_search_done = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, ic_top_bkH)];
ic_search_done.image = [UIImage imageNamed:@"ic_search_done"];
[self.view addSubview:ic_search_done];
- UIButton* ic_search_btn = [UIButton buttonWithType:UIButtonTypeCustom];
- ic_search_btn.frame = CGRectMake((SCREEN_WIDTH-128)/2, 20+230+20, 128, 32);
+ ic_searching = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, ic_top_bkH)];
+ [ic_searching setImage:[UIImage animatedImageWithAnimatedGIFURL:[[NSBundle mainBundle] URLForResource:@"gif_searching" withExtension:@"gif"]]];
+ [self.view addSubview:ic_searching];
+ ic_searching.hidden = YES;
+
+ ic_search_btn = [UIButton buttonWithType:UIButtonTypeCustom];
+ ic_search_btn.frame = CGRectMake((SCREEN_WIDTH-128)/2, ic_search_doneH+55, 128, 32);
[ic_search_btn setBackgroundImage:[UIImage imageNamed:@"ic_search_start_btn" ] forState:UIControlStateNormal];
ic_search_btn.titleLabel.font = [UIFont systemFontOfSize: 18.0];
ic_search_btn.layer.masksToBounds=YES;
@@ -71,6 +144,8 @@
self.tableView.hidden = NO;
// Do any additional setup after loading the view.
+
+ [[CBMoralManager sharedManager] setCbDiscoveryDelegate:self];
}
@@ -86,9 +161,14 @@
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
- if (_currentStatus == 2)
+ if (_currentStatus == 2 && isBluetoothON )
{
- return self.modelArray.count;
+ if(section == 0)
+ {
+ return 1;
+ }
+ else
+ return [[[CBMoralManager sharedManager] foundPeripherals] count];
}
else
return 5;
@@ -101,123 +181,183 @@
{
if (_currentStatus != 2)
{
- static NSString *CellIdentifier = @"searchDeviceCell";
-
- UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
- if (cell == nil)
- {
- cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
- }
-
NSUInteger index = [indexPath row];
- switch (index)
+ if(index == 0 )
{
- case 0:
+ NSString *CellIdentifier = @"searchTipsCell";
+
+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
+ if (cell == nil)
{
- GloriaLabel* _TitleLabel = [[GloriaLabel alloc] initWithFrame:CGRectMake(10, 6,SCREEN_WIDTH/2, 30)];
- _TitleLabel.font = [UIFont systemFontOfSize:14];
- _TitleLabel.textAlignment = UITextAlignmentLeft;
- _TitleLabel.textColor = kUIColorFromRGB(0x595959);
- _TitleLabel.text = @"������������������";
- [cell.contentView addSubview:_TitleLabel];
-
+ cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
}
- break;
- case 1:
+
+ if(_SetTitleLabel==nil)
{
- UIImageView * icon_one = [[UIImageView alloc] initWithFrame:CGRectMake(10, 11, 22, 22)];
- icon_one.image = [UIImage imageNamed:@"icon_one"];
- [cell.contentView addSubview:icon_one];
-
- GloriaLabel* _TitleLabel = [[GloriaLabel alloc] initWithFrame:CGRectMake(10+22+10, 15,SCREEN_WIDTH-(10+22+10), 22)];
- _TitleLabel.font = [UIFont systemFontOfSize:14];
- _TitleLabel.textAlignment = UITextAlignmentLeft;
- _TitleLabel.textColor = kUIColorFromRGB(0x595959);
- _TitleLabel.text = @"������������������������������";
- [cell.contentView addSubview:_TitleLabel];
-
+ _SetTitleLabel = [[GloriaLabel alloc] initWithFrame:CGRectMake(10, 6,SCREEN_WIDTH/2, 30)];
+ _SetTitleLabel.font = [UIFont systemFontOfSize:14];
+ _SetTitleLabel.textAlignment = UITextAlignmentLeft;
+ _SetTitleLabel.textColor = kUIColorFromRGB(0x595959);
+ [cell.contentView addSubview:_SetTitleLabel];
}
-
- break;
- case 2:
- {
- UIImageView * icon_two = [[UIImageView alloc] initWithFrame:CGRectMake(10, 11, 22, 22)];
- icon_two.image = [UIImage imageNamed:@"icon-two"];
- [cell.contentView addSubview:icon_two];
-
- GloriaLabel* _TitleLabel = [[GloriaLabel alloc] initWithFrame:CGRectMake(10+22+10, 15,SCREEN_WIDTH-(10+22+10), 22)];
- _TitleLabel.font = [UIFont systemFontOfSize:14];
- _TitleLabel.textAlignment = UITextAlignmentLeft;
- _TitleLabel.textColor = kUIColorFromRGB(0x595959);
- _TitleLabel.text = @"������������������";
- [cell.contentView addSubview:_TitleLabel];
- }
-
- break;
- case 3:
- {
- UIImageView * icon_three = [[UIImageView alloc] initWithFrame:CGRectMake(10, 11, 22, 22)];
- icon_three.image = [UIImage imageNamed:@"icon-three"];
- [cell.contentView addSubview:icon_three];
-
- GloriaLabel* _TitleLabel = [[GloriaLabel alloc] initWithFrame:CGRectMake(10+22+10, 15,SCREEN_WIDTH-(10+22+10), 22)];
- _TitleLabel.font = [UIFont systemFontOfSize:14];
- _TitleLabel.textAlignment = UITextAlignmentLeft;
- _TitleLabel.textColor = kUIColorFromRGB(0x595959);
- _TitleLabel.text = @"������APP������[������������������]";
- [cell.contentView addSubview:_TitleLabel];
- }
-
- break;
- case 4:
- {
- UIImageView * icon_four = [[UIImageView alloc] initWithFrame:CGRectMake(10, 11, 22, 22)];
- icon_four.image = [UIImage imageNamed:@"icon-four"];
- [cell.contentView addSubview:icon_four];
-
- GloriaLabel* _TitleLabel = [[GloriaLabel alloc] initWithFrame:CGRectMake(10+22+10, 15,SCREEN_WIDTH-(10+22+10), 22)];
- _TitleLabel.font = [UIFont systemFontOfSize:14];
- _TitleLabel.textAlignment = UITextAlignmentLeft;
- _TitleLabel.textColor = kUIColorFromRGB(0x595959);
- _TitleLabel.text = @"������������������������������������������������������";
- [cell.contentView addSubview:_TitleLabel];
- }
-
- break;
+
+ _SetTitleLabel.text = @"������������������";
+
+ return cell;
+
}
-
- return cell;
+ else
+ {
+ NSString *CellIdentifier = @"searchTips2Cell";
+
+ SearchTipsCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
+ if (cell == nil)
+ {
+ cell = [[SearchTipsCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
+ }
+
+ switch (index)
+ {
+ case 1:
+ {
+ [cell setItemView:@"������������������������������" imgName:@"icon_one"];
+
+ }
+ break;
+ case 2:
+ {
+ [cell setItemView:@"������������������" imgName:@"icon-two"];
+ }
+
+ break;
+ case 3:
+ {
+ [cell setItemView:@"������APP������[������������������]" imgName:@"icon-three"];
+ }
+
+ break;
+ case 4:
+ {
+ [cell setItemView:@"������������������������������������������������������" imgName:@"icon-four"];
+ }
+
+ break;
+ }
+
+ return cell;
+ }
}
else
{
- static NSString *CellIdentifier = @"searchDeviceCell";
-
- SearchDeviceCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
- if (cell == nil)
- {
- cell = [[SearchDeviceCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
- }
-
NSUInteger section = [indexPath section];
if(section==0)
{
- GloriaLabel* _TitleLabel = [[GloriaLabel alloc] initWithFrame:CGRectMake(20, 15,SCREEN_WIDTH/2, 20)];
- _TitleLabel.font = [UIFont systemFontOfSize:14];
- _TitleLabel.textAlignment = UITextAlignmentLeft;
- _TitleLabel.textColor = kUIColorFromRGB(0x595959);
- _TitleLabel.text = @"������������";
- [cell.contentView addSubview:_TitleLabel];
+ NSString *CellIdentifier = @"searchDeviceCell1";
+
+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
+ if (cell == nil)
+ {
+ cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
+ }
+
+ if( _TitleLabel == nil)
+ {
+ _TitleLabel = [[GloriaLabel alloc] initWithFrame:CGRectMake(20, 15,SCREEN_WIDTH/2, 20)];
+ _TitleLabel.font = [UIFont systemFontOfSize:14];
+ _TitleLabel.textAlignment = UITextAlignmentLeft;
+ _TitleLabel.textColor = kUIColorFromRGB(0x595959);
+ _TitleLabel.text = @"������������";
+ [cell.contentView addSubview:_TitleLabel];
+ }
+
+ return cell;
}
else if(section==1)
{
- DeviceSpareModel* model = [self.modelArray objectAtIndex:indexPath.row];
+ NSString *CellIdentifier = @"searchDeviceCell";
- [cell setItemView:model];
+ SearchDeviceCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
+ if (cell == nil)
+ {
+ cell = [[SearchDeviceCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
+ }
+
+ CBPeripheralExt *newPeriPheral = [[[CBMoralManager sharedManager] foundPeripherals] objectAtIndex:indexPath.row];
+
+ NSString * bleName = [self nameForPeripheral:newPeriPheral];
+ NSString * bleUUID = [self UUIDStringfromPeripheral:newPeriPheral];
+ NSString * bleService = [self ServiceCountfromPeripheral:newPeriPheral];
+
+ [cell setItemView:bleName];
+
+ //[cell setDiscoveredPeripheralDataFromPeripheral:newPeriPheral];
+
+ return cell;
}
-
- return cell;
}
+ return nil;
+}
+
+/*!
+ * @method nameForPeripheral:
+ *
+ * @discussion Method to get the peripheral name
+ *
+ */
+-(NSString *)nameForPeripheral:(CBPeripheralExt *)ble
+{
+ NSString *bleName ;
+
+ if ([ble.mAdvertisementData valueForKey:CBAdvertisementDataLocalNameKey] != nil)
+ {
+ bleName = [ble.mAdvertisementData valueForKey:CBAdvertisementDataLocalNameKey];
+ }
+
+ if(bleName.length < 1 )
+ bleName = ble.mPeripheral.name;
+
+ if(bleName.length < 1 )
+ bleName = UNKNOWN_PERIPHERAL;
+
+ return bleName;
+}
+
+
+/*!
+ * @method UUIDStringfromPeripheral:
+ *
+ * @discussion Method to get the UUID from the peripheral
+ *
+ */
+-(NSString *)UUIDStringfromPeripheral:(CBPeripheralExt *)ble
+{
+
+ NSString *bleUUID = ble.mPeripheral.identifier.UUIDString;
+ if(bleUUID.length < 1 )
+ bleUUID = @"Nil";
+ else
+ bleUUID = [NSString stringWithFormat:@"%@",bleUUID];
+
+ return bleUUID;
+}
+
+/*!
+ * @method ServiceCountfromPeripheral:
+ *
+ * @discussion Method to get the number of services present in a device
+ *
+ */
+-(NSString *)ServiceCountfromPeripheral:(CBPeripheralExt *)ble
+{
+ NSString *bleService =@"";
+ NSInteger serViceCount = [[ble.mAdvertisementData valueForKey:CBAdvertisementDataServiceUUIDsKey] count];
+ if(serViceCount < 1 )
+ bleService = @"No Services";
+ else
+ bleService = [NSString stringWithFormat:@" %ld Service Advertised ",(long)serViceCount];
+
+ return bleService;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
@@ -232,7 +372,13 @@
if (_currentStatus == 2)
{
NSInteger index = [indexPath row];
- DeviceSpareModel* model = [self.modelArray objectAtIndex:index];
+ if (isBluetoothON)
+ {
+ [tableView deselectRowAtIndexPath:indexPath animated:YES];
+ [self connectPeripheral:indexPath.row];
+ }
+
+ // DeviceSpareModel* model = [self.modelArray objectAtIndex:index];
// ������������������������
//HotelSelPage* page = [[HotelSelPage alloc] initIsFirstPage:NO];
//page.bSelRoom = 2;
@@ -246,16 +392,109 @@
}
--(void)searchAction
+/**
+ *This method invoke after a new peripheral found.
+ */
+-(void)discoveryDidRefresh
{
-
+ _currentStatus = 2;
+ [self.tableView reloadData];
}
--(void)storyAticon
+
+#pragma mark - BlueTooth Turned Off Delegate
+
+/*!
+ * @method bluetoothStateUpdatedToState:
+ * ������������������
+ * @discussion Method to be called when state of Bluetooth changes
+ *
+ */
+
+-(void)bluetoothStateUpdatedToState:(BOOL)state
{
+ isBluetoothON = state;
+ [self.tableView reloadData];
+ isBluetoothON ? [self.tableView setScrollEnabled:YES] : [self.tableView setScrollEnabled:NO];
}
+
+
+#pragma mark - Connect
+
+/*!
+ * @method connectPeripheral:
+ *
+ * @discussion Method to connect the selected peripheral
+ *
+ */
+
+-(void)connectPeripheral:(NSInteger)index
+{
+
+ if ([[CBMoralManager sharedManager] foundPeripherals].count != 0)
+ {
+ CBPeripheralExt *selectedBLE = [[[CBMoralManager sharedManager] foundPeripherals] objectAtIndex:index];
+ [[ProgressHandler sharedInstance] showWithDetailsLabel:@"Connecting.." Detail:selectedBLE.mPeripheral.name];
+
+ [[CBMoralManager sharedManager] connectPeripheral:selectedBLE.mPeripheral CompletionBlock:^(BOOL success, NSError *error) {
+ [[ProgressHandler sharedInstance] hideProgressView];
+ if(success)
+ {
+ _bConnectSuccess = YES;
+ NSString * bleName = [self nameForPeripheral:selectedBLE];
+ NSString * bleUUID = [self UUIDStringfromPeripheral:selectedBLE];
+
+ [UserDefault setObject:bleUUID forKey:@"bleUUID"];
+ [UserDefault setObject:bleName forKey:@"bleName"];
+
+ [UserDefault synchronize];//������synchronize���������������������������������,���������������NSUserDefaults������������������������������������
+ //CBPeripheralExt *selBLE = [UserDefault objectForKey:@"Peripheral"];//������������������Peripheral
+ [self backAticon];
+ }
+ else
+ {
+ if(error)
+ {
+ NSString *errorString = [error.userInfo valueForKey:NSLocalizedDescriptionKey];
+
+ if(errorString.length)
+ {
+ [self.view makeToast:errorString];
+ }
+ else
+ {
+ [self.view makeToast:UNKNOWN_ERROR];
+ }
+ }
+ }
+
+ }];
+
+ }
+ else
+ {
+ NSLog(@"Array is nil");
+ [[CBMoralManager sharedManager] refreshPeripherals];
+ }
+}
+
+-(void)searchAction
+{
+ self.currentStatus = 1;
+
+ ic_search_done.hidden = YES;
+ ic_searching.hidden = NO;
+
+ //[mainImageView setImage:[UIImage animatedImageWithAnimatedGIFURL:[[NSBundle mainBundle] URLForResource:imageName withExtension:@"gif"]]];
+ [ic_search_btn setBackgroundImage:[UIImage imageNamed:@"ic_search_stop_btn"] forState:UIControlStateNormal];
+
+ [self startScanning];
+}
+
+
+
-(void)backAticon
{
//[self.navigationController popToViewController:self animated:YES];
--
Gitblit v1.8.0