diff --git a/contrib/mobile/CMakeLists.txt b/contrib/mobile/CMakeLists.txt index 2115bbe21a8e162d6842633261d3754d701fe0fa..19ec84210b1202ea1b8d5d51f73cb4ecc80896d4 100644 --- a/contrib/mobile/CMakeLists.txt +++ b/contrib/mobile/CMakeLists.txt @@ -72,7 +72,7 @@ if(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS) COMMAND ${CMAKE_COMMAND} -E copy ${PETSC_FRAMEWORK}/petsc ${CMAKE_CURRENT_BINARY_DIR}/Onelab/Onelab/frameworks/petsc.framework/ ) copy_headers(${GETDP_FRAMEWORK}/Headers/ ${CMAKE_CURRENT_BINARY_DIR}/Onelab/Onelab/frameworks/GetDP.framework/Headers/) - copy_headers(${GMSH_FRAMEWORK}/Headers/ ${CMAKE_CURRENT_BINARY_DIR}/Onelab/Onelab/frameworks/Gmsh.framework/Headers/) + copy_headers(${GMSH_FRAMEWORK}/Headers/gmsh/ ${CMAKE_CURRENT_BINARY_DIR}/Onelab/Onelab/frameworks/Gmsh.framework/Headers/) copy_headers(${PETSC_FRAMEWORK}/Headers/ ${CMAKE_CURRENT_BINARY_DIR}/Onelab/Onelab/frameworks/petsc.framework/Headers/) endif(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS) diff --git a/contrib/mobile/iOS/Onelab/OptionsViewController.mm b/contrib/mobile/iOS/Onelab/OptionsViewController.mm index d963c7d70e3499129c8fbd7db31aad734222c164..5cd24e5faa284a21954af06d012c6a221e1ce57f 100644 --- a/contrib/mobile/iOS/Onelab/OptionsViewController.mm +++ b/contrib/mobile/iOS/Onelab/OptionsViewController.mm @@ -14,6 +14,7 @@ #include <gmsh/PView.h> #include <gmsh/PViewData.h> #include <gmsh/PViewOptions.h> +#include <gmsh/GmshDefines.h> @interface OptionsViewController () @@ -34,7 +35,8 @@ { [super viewDidLoad]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshParameters:) name:@"refreshParameters" object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshOptions:) name:@"refreshParameters" object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshOptions:) name:@"resetParameters" object:nil]; self.navigationItem.title = @"Options"; @@ -64,10 +66,23 @@ // Dispose of any resources that can be recreated. } -- (void)refreshParameters:(id)sender +- (void)refreshOptions:(id)sender +{ + [self performSelectorOnMainThread:@selector(refreshOptions) withObject:nil waitUntilDone:NO]; +} +- (void)refreshOptions { NSInteger nrow = [self.tableView numberOfRowsInSection:1]; - if(nrow < PView::list.size()-1) + if(PView::list.size() == 0) + { + NSMutableArray *array = [[NSMutableArray alloc] init]; + for(NSInteger i = 0; i<nrow; i++) + [array addObject:[NSIndexPath indexPathForRow:i inSection:1]]; + [self.tableView beginUpdates]; + [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithArray:array] withRowAnimation:UITableViewRowAnimationAutomatic]; + [self.tableView endUpdates]; + } + else if(nrow < PView::list.size()) { NSMutableArray *array = [[NSMutableArray alloc] init]; for(NSInteger i = nrow; i<PView::list.size(); i++) @@ -119,8 +134,10 @@ UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; if(cell == nil) cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"postproCell"]; - else - return cell; + else { + cell = nil; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"postproCell"]; + } [cell setFrame:CGRectMake(cell.frame.origin.x, cell.frame.origin.x, tableView.frame.size.width, cell.frame.size.height)]; switch (indexPath.section) { case 0: @@ -139,14 +156,14 @@ [showHideOptions addTarget:self action:@selector(setShowGeomLines:) forControlEvents:UIControlEventValueChanged]; } else if(indexPath.row == 2) { - [lblOptions setText:@"Show mesh lines"]; - [showHideOptions setOn:(CTX::instance()->mesh.lines)]; - [showHideOptions addTarget:self action:@selector(setShowMeshLines:) forControlEvents:UIControlEventValueChanged]; + [lblOptions setText:@"Show mesh surface edges"]; + [showHideOptions setOn:(CTX::instance()->mesh.surfacesEdges)]; + [showHideOptions addTarget:self action:@selector(setShowMeshSurfacesEdges:) forControlEvents:UIControlEventValueChanged]; } else if(indexPath.row == 3) { - [lblOptions setText:@"Show mesh edges"]; - [showHideOptions setOn:(CTX::instance()->mesh.surfacesEdges || CTX::instance()->mesh.volumesEdges)]; - [showHideOptions addTarget:self action:@selector(setShowMeshEdges:) forControlEvents:UIControlEventValueChanged]; + [lblOptions setText:@"Show mesh volumes edges"]; + [showHideOptions setOn:CTX::instance()->mesh.volumesEdges]; + [showHideOptions addTarget:self action:@selector(setShowMeshVolumesEdges:) forControlEvents:UIControlEventValueChanged]; } [cell addSubview:showHideOptions]; [cell addSubview:lblOptions]; @@ -191,17 +208,16 @@ CTX::instance()->geom.lines = sender.on; [[NSNotificationCenter defaultCenter] postNotificationName:@"requestRender" object:nil]; } -- (void)setShowMeshEdges:(UISwitch*)sender +- (void)setShowMeshVolumesEdges:(UISwitch*)sender { - CTX::instance()->mesh.surfacesEdges = sender.on; CTX::instance()->mesh.volumesEdges = sender.on; - CTX::instance()->mesh.changed = YES; + CTX::instance()->mesh.changed = ENT_VOLUME; [[NSNotificationCenter defaultCenter] postNotificationName:@"requestRender" object:nil]; } -- (void)setShowMeshLines:(UISwitch*)sender +- (void)setShowMeshSurfacesEdges:(UISwitch*)sender { - CTX::instance()->mesh.lines = sender.on; - CTX::instance()->mesh.changed = YES; + CTX::instance()->mesh.surfacesEdges = sender.on; + CTX::instance()->mesh.changed = ENT_SURFACE; [[NSNotificationCenter defaultCenter] postNotificationName:@"requestRender" object:nil]; } -(IBAction)PViewVisible:(id)sender diff --git a/contrib/mobile/iOS/Onelab/Parameter.mm b/contrib/mobile/iOS/Onelab/Parameter.mm index 34641030613b9237519968261f87dd089629e2a4..c82b60f033ad1d20cd1e93ab25caaea7fb4d1e1b 100644 --- a/contrib/mobile/iOS/Onelab/Parameter.mm +++ b/contrib/mobile/iOS/Onelab/Parameter.mm @@ -355,6 +355,7 @@ if(number.size() < 1) return YES; number[0].setValue([textField.text doubleValue]); onelab::server::instance()->set(number[0]); + [textField setText:[NSString stringWithFormat:@"%f", number[0].getValue()]]; return YES; } -(BOOL)textFieldShouldReturn:(UITextField *)textField diff --git a/contrib/mobile/iOS/Onelab/ParametersViewController.mm b/contrib/mobile/iOS/Onelab/ParametersViewController.mm index 879b214f9ed4dd330dfad1e2f2df234e8f209c94..c008f84d655b7e9a57601f6a43e9deec543bb8d7 100644 --- a/contrib/mobile/iOS/Onelab/ParametersViewController.mm +++ b/contrib/mobile/iOS/Onelab/ParametersViewController.mm @@ -128,11 +128,6 @@ } - (void)refreshTableView { - if(!_lastRefresh) _lastRefresh = [NSDate date]; - else { - if([_lastRefresh timeIntervalSinceNow] >= -1) return; - _lastRefresh = [NSDate date]; - } std::vector<onelab::number> number; onelab::server::instance()->get(number); @@ -209,8 +204,16 @@ } - (void)refreshParameters:(id)sender { + [self performSelectorOnMainThread:@selector(refreshParameters) withObject:nil waitUntilDone:NO]; +} +- (void)refreshParameters +{ + if(!_lastRefresh) _lastRefresh = [NSDate date]; + else { + if([_lastRefresh timeIntervalSinceNow] >= -1) return; + _lastRefresh = [NSDate date]; + } [self refreshTableView]; // Get the param - [self.tableView setNeedsDisplay]; } - (void)resetParameters:(id)sender { @@ -218,8 +221,8 @@ [_sections removeAllObjects]; [_sectionstitle removeAllObjects]; [self.tableView reloadData]; - [self refreshParameters:sender]; - onelab_cb("check"); + onelab_cb("check"); + [self refreshTableView]; [[NSNotificationCenter defaultCenter] postNotificationName:@"requestRender" object:nil]; } @@ -283,8 +286,10 @@ UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; if(cell == nil) cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; - else - return cell; + else { + cell = nil; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; + } [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; [cell setUserInteractionEnabled:!([tmp isReadOnly])]; [tmp setLabelFrame:CGRectMake(20, 5, cell.frame.size.width - 40, cell.frame.size.height/2)];