From cd6498ee8dc8700e73e00bf3a49f8d15fe14872f Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Sat, 24 Sep 2016 15:17:45 +0000 Subject: [PATCH] correctly handle dynamic changes of "readOnly" status --- contrib/mobile/iOS/Onelab/Parameter.h | 1 - contrib/mobile/iOS/Onelab/Parameter.mm | 63 +++++-------------- .../iOS/Onelab/ParametersViewController.mm | 4 +- 3 files changed, 16 insertions(+), 52 deletions(-) diff --git a/contrib/mobile/iOS/Onelab/Parameter.h b/contrib/mobile/iOS/Onelab/Parameter.h index 6fd94dfd34..5b0af90ec1 100644 --- a/contrib/mobile/iOS/Onelab/Parameter.h +++ b/contrib/mobile/iOS/Onelab/Parameter.h @@ -14,7 +14,6 @@ -(void)setLabelFrame:(CGRect)frame; -(NSString *)getName; -(UILabel *)getLabel; --(bool)isReadOnly; +(double)getHeight; -(void)refresh; @end diff --git a/contrib/mobile/iOS/Onelab/Parameter.mm b/contrib/mobile/iOS/Onelab/Parameter.mm index 43ff566713..0bb9760b2f 100644 --- a/contrib/mobile/iOS/Onelab/Parameter.mm +++ b/contrib/mobile/iOS/Onelab/Parameter.mm @@ -45,8 +45,6 @@ } } --(bool) isReadOnly {return NO;} - +(double)getHeight { return 60.0f; @@ -58,7 +56,6 @@ { self = [super init]; if(self){ - label.alpha = (string.getReadOnly())? 0.439216f : 1.0f; [label setText:[Utils getStringFromCString:string.getShortName().c_str()]]; name = [Utils getStringFromCString:string.getName().c_str()]; button = [UIButton buttonWithType:UIButtonTypeSystem]; @@ -102,7 +99,10 @@ { std::vector<onelab::string> string; onelab::server::instance()->get(string, [name UTF8String]); + if(string.size() < 1) return; [button setTitle:[Utils getStringFromCString:string[0].getValue().c_str()] forState:UIControlStateNormal]; + [button setEnabled:(string[0].getReadOnly() ? FALSE : TRUE)]; + [label setEnabled:(string[0].getReadOnly() ? FALSE : TRUE)]; } -(void)setFrame:(CGRect)frame @@ -115,14 +115,6 @@ return button; } --(bool)isReadOnly -{ - std::vector<onelab::string> string; - onelab::server::instance()->get(string, [name UTF8String]); - if(string.size() < 1) return YES; - return string[0].getReadOnly(); -} - +(double)getHeight { return 60.f; @@ -134,7 +126,6 @@ { self = [super init]; if(self) { - label.alpha = (number.getReadOnly())? 0.439216f : 1.0f; [label setText:[Utils getStringFromCString:number.getShortName().c_str()]]; name = [Utils getStringFromCString:number.getName().c_str()]; button = [UIButton buttonWithType:UIButtonTypeSystem]; @@ -194,8 +185,11 @@ { std::vector<onelab::number> number; onelab::server::instance()->get(number, [name UTF8String]); + if(number.size() < 1) return; [button setTitle:[Utils getStringFromCString:number[0].getValueLabel(number[0].getValue()).c_str()] forState:UIControlStateNormal]; + [button setEnabled:(number[0].getReadOnly() ? FALSE : TRUE)]; + [label setEnabled:(number[0].getReadOnly() ? FALSE : TRUE)]; } -(void)setFrame:(CGRect)frame @@ -208,14 +202,6 @@ return button; } --(bool)isReadOnly -{ - std::vector<onelab::number> number; - onelab::server::instance()->get(number, [name UTF8String]); - if(number.size() < 1) return YES; - return number[0].getReadOnly(); -} - +(double)getHeight { return 60.f; @@ -227,7 +213,6 @@ { self = [super init]; if(self) { - label.alpha = (number.getReadOnly())? 0.439216f : 1.0f; [label setText:[Utils getStringFromCString:number.getShortName().c_str()]]; name = [Utils getStringFromCString:number.getName().c_str()]; checkbox = [[UISwitch alloc] init]; @@ -241,7 +226,10 @@ { std::vector<onelab::number> number; onelab::server::instance()->get(number, [name UTF8String]); + if(number.size() < 1) return; [checkbox setSelected:(number[0].getValue() == 1)]; + [checkbox setEnabled:(number[0].getReadOnly() ? FALSE : TRUE)]; + [label setEnabled:(number[0].getReadOnly() ? FALSE : TRUE)]; } -(void) valueChange:(UISwitch *)sender @@ -264,14 +252,6 @@ return checkbox; } --(bool)isReadOnly -{ - std::vector<onelab::number> number; - onelab::server::instance()->get(number, [name UTF8String]); - if(number.size() < 1) return YES; - return number[0].getReadOnly(); -} - +(double)getHeight { return 40.0f; @@ -284,7 +264,6 @@ self = [super init]; if(self) { name = [Utils getStringFromCString:number.getName().c_str()]; - label.alpha = (number.getReadOnly())? 0.439216f : 1.0f; stepper = [[UIStepper alloc] init]; [stepper setValue:number.getValue()]; [stepper setStepValue:1]; @@ -317,6 +296,8 @@ [stepper setValue:number[0].getValue()]; [label setText:[NSString stringWithFormat:@"%@ %d", [Utils getStringFromCString:number[0].getShortName().c_str()], (int)number[0].getValue()]]; + [stepper setEnabled:(number[0].getReadOnly() ? FALSE : TRUE)]; + [label setEnabled:(number[0].getReadOnly() ? FALSE : TRUE)]; } -(void)setFrame:(CGRect)frame @@ -340,7 +321,6 @@ { self = [super init]; if(self) { - label.alpha = (number.getReadOnly())? 0.439216f : 1.0f; name = [Utils getStringFromCString:number.getName().c_str()]; slider = [[UISlider alloc] init]; [slider setMaximumValue:number.getMax()]; @@ -365,6 +345,8 @@ [slider setValue:number[0].getValue()]; [label setText:[NSString stringWithFormat:@"%@ %g", [Utils getStringFromCString:number[0].getShortName().c_str()], number[0].getValue()]]; + [slider setEnabled:(number[0].getReadOnly() ? FALSE : TRUE)]; + [label setEnabled:(number[0].getReadOnly() ? FALSE : TRUE)]; } -(void)sliderValueChanged:(UISlider *)sender @@ -389,14 +371,6 @@ return slider; } --(bool)isReadOnly -{ - std::vector<onelab::number> number; - onelab::server::instance()->get(number, [name UTF8String]); - if(number.size() < 1) return YES; - return number[0].getReadOnly(); -} - +(double)getHeight { return 65.0f; @@ -408,7 +382,6 @@ { self = [super init]; if(self) { - label.alpha = (number.getReadOnly())? 0.439216f : 1.0f; [label setText:[Utils getStringFromCString:number.getShortName().c_str()]]; name = [Utils getStringFromCString:number.getName().c_str()]; textbox = [[UITextField alloc] init]; @@ -432,6 +405,8 @@ onelab::server::instance()->get(number, [name UTF8String]); if(number.size() < 1) return; [textbox setText:[NSString stringWithFormat:@"%g", number[0].getValue()]]; + [textbox setEnabled:(number[0].getReadOnly() ? FALSE : TRUE)]; + [label setEnabled:(number[0].getReadOnly() ? FALSE : TRUE)]; [textbox reloadInputViews]; } @@ -467,14 +442,6 @@ return textbox; } --(bool)isReadOnly -{ - std::vector<onelab::number> number; - onelab::server::instance()->get(number, [name UTF8String]); - if(number.size() < 1) return YES; - return number[0].getReadOnly(); -} - +(double)getHeight { return 60.f; diff --git a/contrib/mobile/iOS/Onelab/ParametersViewController.mm b/contrib/mobile/iOS/Onelab/ParametersViewController.mm index 42a66cf253..e2ce710778 100644 --- a/contrib/mobile/iOS/Onelab/ParametersViewController.mm +++ b/contrib/mobile/iOS/Onelab/ParametersViewController.mm @@ -133,8 +133,7 @@ } else if(p.getMin() >= p.getMax() || p.getMin() == -onelab::number::maxNumber() || - p.getMax() == onelab::number::maxNumber() || - p.getReadOnly()) { // text box + p.getMax() == onelab::number::maxNumber()) { // text box ParameterNumberTextbox *param = [[ParameterNumberTextbox alloc] initWithNumber:p]; [section addObject:param]; } @@ -378,7 +377,6 @@ NSString *GetSectionTitle(NSString *name) cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; - [cell setUserInteractionEnabled:!([tmp isReadOnly])]; [tmp setLabelFrame:CGRectMake(20, 5, tableView.frame.size.width - 40, cell.frame.size.height/2)]; [cell addSubview:[tmp getLabel]]; if([tmp isKindOfClass:[ParameterStringList class]]) { -- GitLab