// // CommonEditorViewController.m // RedAnt ERP Mobile // // Created by Ray on 14-7-16. // Copyright (c) 2014年 United Software Applications, Inc. All rights reserved. // #import "CommonEditorViewController.h" #import "CommonEditorCellEdit.h" #import "iSalesNetwork.h" #import "CommonEditorCellEnum.h" #import "CommonEditorCellSwitch.h" #import "CommonEditorCellModel.h" #import "CommonEditorCellAction.h" #import "EnumSelectViewController.h" #import "DatePickerViewController.h" #import "SignatureViewController.h" #import "CommonEditorCellSignature.h" #import "CommonEditorCellLabel.h" #import "AddressEditorViewController.h" #import "CreditCardEditorViewController.h" #import "MonthPickerViewController.h" #import "ContactListViewController.h" #import "CommonEditorCellMAction.h" #import "CommonEditorCellTextView.h" #import "RAUtils.h" #import "CommonEditorCellImg.h" #import "AFHTTPSessionManager.h" #import "CustomIOSAlertView.h" #import "DefaultAppearance.h" #import "DefaultTableHeaderView.h" #define INTNUMBERS @"0123456789\n" #define NUMBERS @"0123456789.\n" #import "OLDataProvider.h" #import @interface subitem_data () @end @implementation subitem_data @end @interface CommonEditorViewController () @property (nonatomic,copy) NSString *urgency_timer_name; @property (nonatomic,assign) int level;///= 5.0) { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil]; } #endif } -(void) viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [[NSNotificationCenter defaultCenter] removeObserver:self]; [self cancel_urgency_timer]; } -(void)manually_refresh { UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200]; reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Refreshing"]; if ([self respondsToSelector:@selector(reload_data)]) [self performSelector:@selector(reload_data) withObject:nil afterDelay:1]; // DebugLog(@"refresh!!!!!!!!"); } -(void)reload_data { [self.lastedit endEditing:true]; [self.lasttextview endEditing:true]; UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200]; [reF endRefreshing]; reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"]; [self refresh:nil]; } - (void)start_urgency_timer { if (!self.editable) { return; } __weak typeof(self) weakSelf = self; AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate; [appDelegate.urgencyDic setValue:appDelegate.user forKey:@"user"]; [appDelegate.urgencyDic setValue:[NSNumber numberWithBool:appDelegate.offline_mode] forKey:@"offline_mode"]; [[JKTimerManager sharedTimerManager] scheduledDispatchTimerWithName:self.urgency_timer_name timeInterval:1 queue:nil repeats:YES action:^{ NSMutableDictionary *urgencyDic = [NSMutableDictionary dictionary]; // DebugLog(@"timer start...."); [urgencyDic setValue:weakSelf.content_data_download forKey:[NSString stringWithFormat:@"%@_restored_data",self.class_name]]; [urgencyDic setValue:weakSelf.class_name forKey:@"class_name"]; if ([weakSelf.class_name isEqualToString:@"CustomerEditViewController"]) { // CustomerEditViewController __block NSString *contact_id = @""; [weakSelf.content_data_download enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { // section_0 if ([key isEqualToString:@"section_0"]) { NSDictionary *section_0 = (NSDictionary *)obj; [section_0 enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { // Contact ID if ([obj isKindOfClass:[NSDictionary class]]) { if ([[obj objectForKey:@"aname"] isEqualToString:@"Contact ID"]) { contact_id = [obj objectForKey:@"value"]; } } }]; } }]; [urgencyDic setValue:contact_id forKey:@"contact_id"]; } else if ([weakSelf.class_name isEqualToString:@"CreateOrderViewController"]) { // CreateOrderViewController [urgencyDic setValue:appDelegate.order_code forKey:@"order_code"]; [urgencyDic setValue:[NSNumber numberWithInt:appDelegate.order_status ] forKey:@"order_status"]; [urgencyDic setValue:appDelegate.order_customer_id forKey:@"order_customer_id"]; } else if ([weakSelf.class_name isEqualToString:@"AddressEditorViewController"]) { // AddressEditorViewController } [appDelegate.urgencyDic setValue:urgencyDic forKey:[NSString stringWithFormat:@"level_%d",weakSelf.level]]; [appDelegate.urgencyDic setValue:[NSNumber numberWithInteger:weakSelf.level + 1] forKey:@"count"]; }]; } - (void)cancel_urgency_timer { [[JKTimerManager sharedTimerManager] cancelTimerWithName:self.urgency_timer_name]; } - (void)viewDidLoad { [super viewDidLoad]; // self.switchlock = [[NSLock alloc] init]; // [self.editorTable setExclusiveTouch:false]; self.editable = NO; if(self.loading_msg==nil) self.loading_msg = @"Please Wait"; if(self.loading_title==nil) self.loading_title = @"Loading..."; UIRefreshControl *ref = [[UIRefreshControl alloc]init]; ref.tag = 200 ; ref.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"]; ref.tintColor = [UIColor colorWithRed:0.10 green:0.68 blue:0.94 alpha:0.7]; // ref.hidden = true; [ref addTarget:self action:@selector(manually_refresh) forControlEvents:UIControlEventValueChanged]; if(!self.disable_dropdown_refresh) [self.editorTable addSubview:ref]; self.level = -1; if (!self.changed_data) { self.changed_data = [[NSMutableDictionary alloc] init]; } // UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"close", nil) style:UIBarButtonItemStylePlain target:self action:@selector(onCloseClick:)]; // // closeButton.title = @"Close"; // // self.navigationItem.leftBarButtonItem = closeButton; if(self.url_type==URL_REMOTE) { UIAlertView * waitalert = [RAUtils waiting_alert:self.loading_msg title:self.loading_title]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSDictionary* editor_json = [iSalesNetwork request_Editor:self.request_url params:self.params]; dispatch_async(dispatch_get_main_queue(), ^{ [waitalert dismissWithClickedButtonIndex:0 animated:FALSE]; if([[editor_json valueForKey:@"result"] intValue]==2) { self.content_data_download = [editor_json mutableCopy]; self.content_data_control = [self translate_json:self.content_data_download changed: self.changed_data]; // self.content_data = [editor_json mutableCopy]; // self.content_data = [self translate_json:editor_json]; // NSMutableDictionary* content_data1 = [self translate_json:self.content_data]; [self download_success]; [self.editorTable reloadData]; // NSString * ttt=[self.content_data valueForKey:@"title"] ; self.navigationItem.title = [self.content_data_download valueForKey:@"title"] ; } else { [RAUtils message_alert:[editor_json valueForKey:@"err_msg"] title:nil controller:self] ; } }); }); } else if(self.url_type== URL_LOCAL ) { NSData* json =[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:self.request_url ofType:@"json" ]]; NSError *error=nil; self.content_data_download = [[NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error] mutableCopy]; self.content_data_control=[self translate_json:self.content_data_download changed:self.changed_data]; self.navigationItem.title = [self.content_data_download valueForKey:@"title"] ; [self.editorTable reloadData]; // NSString * ttt=[self.content_data valueForKey:@"title"] ; // self.navigationItem.title = [self.content_data_download valueForKey:@"title"] ; } else { self.content_data_control=[self translate_json:self.content_data_download changed: self.changed_data]; [self.editorTable reloadData]; // NSString * ttt=[self.content_data valueForKey:@"title"] ; self.navigationItem.title = [self.content_data_download valueForKey:@"title"] ; } self.requried = [[NSMutableDictionary alloc] init]; self.cancommit = true; } -(NSMutableDictionary*) check_cancommit :(bool) alert { [[[UIApplication sharedApplication] keyWindow] endEditing:YES]; // [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder)]; [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil]; self.first_miss_pos = nil; self.cancommit=true; NSMutableArray* fields=[[NSMutableArray alloc] init]; NSMutableDictionary* upparams=[[NSMutableDictionary alloc] init]; // [upparams setValue:[self.params valueForKey:@"cart2Checkbox"] forKey:@"cart2Checkbox"]; int section_count=self.content_data_control.count;//[[self.content_data_download valueForKey:@"section_count"] intValue]; // NSString* aaa = [RAUtils dict2string:self.content_data_control]; for(int i=0;i */ }else if([[itemjson valueForKey:@"control"] isEqualToString:@"action"]) { if([[itemjson valueForKey:@"required"] isEqualToString: @"true"] && [itemjson objectForKeyedSubscript:@"data"]==nil) { self.cancommit = false; NSString* mfield =[NSString stringWithFormat:@"%d. %@ is missing",fields.count+1,itemjson[@"aname"]]; [fields addObject:mfield]; NSIndexPath* indexpath =[self get_indexpath1:[itemjson valueForKey:@"name"]]; if(alert) [self unhide_section:indexpath.section]; if(fields.count==1) { self.first_miss_pos = indexpath; } } } else if([[itemjson valueForKey:@"control"] isEqualToString:@"signature"]) { if([[itemjson valueForKey:@"required"] isEqualToString: @"true"] && [itemjson objectForKeyedSubscript:@"value"] ==nil) { self.cancommit = false; NSString* mfield =[NSString stringWithFormat:@"%d. %@ is missing",fields.count+1,itemjson[@"aname"]]; [fields addObject:mfield]; NSIndexPath* indexpath =[self get_indexpath1:[itemjson valueForKey:@"name"]]; if(alert) [self unhide_section:indexpath.section]; if(fields.count==1) { self.first_miss_pos = indexpath; } } NSString* valuestr = [itemjson valueForKey:@"value"]; [upparams setValue:valuestr forKey:[itemjson valueForKey:@"name"]]; } else if([[itemjson valueForKey:@"control"] isEqualToString:@"switch"]) { NSString* valuestr = [itemjson valueForKey:@"value"]; [upparams setValue:valuestr forKey:[itemjson valueForKey:@"name"]]; NSString* value = [itemjson valueForKey:@"value"]; NSMutableDictionary* boolitem=nil; NSMutableDictionary* subjson=nil; if([value isEqualToString:@"true"]) { boolitem =[[itemjson objectForKey:@"true"] mutableCopy]; } else { boolitem =[[itemjson objectForKey:@"false"] mutableCopy]; } subjson=[[boolitem objectForKey:@"sub_item"] mutableCopy]; if( subjson!=nil /*&& !active*/) { int sub_count = [[subjson valueForKey:@"count"] intValue]; for(int l=0;l */ } else { if([itemjson valueForKey:@"value"]!=nil && ![[itemjson valueForKey:@"value"]isEqualToString:@""]) [upparam setValue:[itemjson valueForKey:@"value"] forKey:[itemjson valueForKey:@"name"]]; else { if([[itemjson valueForKey:@"required"] isEqualToString: @"true"] ) { self.cancommit = false; NSString* mfield =[NSString stringWithFormat:@"%d. %@ is missing",fields.count+1,itemjson[@"aname"]]; [fields addObject:mfield]; NSIndexPath* indexpath =[self get_indexpath1:[itemjson valueForKey:@"name"]]; if(alert) [self unhide_section:indexpath.section]; if(fields.count==1) { self.first_miss_pos = indexpath; } } } } subitem_data * data1=[self subitem_param:itemjson addto:upparam alert:alert]; upparam= data1.params; fields=[[fields arrayByAddingObjectsFromArray:data1.missingfields] mutableCopy]; // upparam= [self subitem_param:itemjson addto:upparam ]; } } } else { if([addjson valueForKey:@"value"]!=nil && ![[addjson valueForKey:@"value"]isEqualToString:@""]) [upparam setValue:[addjson valueForKey:@"value"] forKey:key]; else { if([[addjson valueForKey:@"required"] isEqualToString: @"true"] ) { self.cancommit = false; NSString* mfield =[NSString stringWithFormat:@"%d. %@ is missing",fields.count+1,addjson[@"aname"]]; [fields addObject:mfield]; NSIndexPath* indexpath =[self get_indexpath1:[addjson valueForKey:@"name"]]; if(alert) [self unhide_section:indexpath.section]; if(fields.count==1) { self.first_miss_pos = indexpath; } } } } subitem_data * data2=[self subitem_param:addjson addto:upparam alert:alert]; upparam= data2.params; fields=[[fields arrayByAddingObjectsFromArray:data2.missingfields] mutableCopy]; //upparam=[self subitem_param:addjson addto:upparam]; // [sectionjson setObject: addjson forKey:[NSString stringWithFormat:@"item_%d",item_count ]]; // item_count ++; // [addjson setValue:[NSString stringWithFormat:@"val_%d",k ]] forKey:@"parent"]; } //break; } } } data.params = upparam; data.missingfields = fields; return data; } -(NSMutableArray*) add_subitem:(NSDictionary*) itemjson addto:(NSMutableArray*) sectionarr parent:(NSString*) parent { NSString * control_type = [itemjson valueForKey:@"control"]; bool single_select = [[itemjson valueForKey:@"single_select"] boolValue]; if([control_type isEqual:@"enum"] && single_select) { NSMutableDictionary * cadedatejson=[[itemjson objectForKey:@"cadedate"] mutableCopy]; int cade_count = [[cadedatejson valueForKey:@"count"] intValue]; for(int k=0;k)#> // return nil; } /* -(NSMutableDictionary*) translate_json: (NSDictionary*) injson { if(injson == nil) return nil; NSMutableDictionary * retjson= [injson mutableCopy]; int section_count=[[retjson valueForKey:@"section_count"] intValue]; for(int i=0;i)#> return nil; }*/ //- (void)onCloseClick:(UIButton *)sender { // [self.navigationController dismissViewControllerAnimated:true completion:^{ // ; // }]; //} - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } -(void) prepareReturn:(NSMutableDictionary*) value { if(value==nil) value=[[NSMutableDictionary alloc]init]; value[@"is_subaction"] = self.params[@"is_subaction"]; value[@"subaction_tag"] = self.params[@"subaction_tag"]; if (self.delegate && [self.delegate respondsToSelector:@selector(returnValue:indexPath:)]) { [self.delegate returnValue:value indexPath:self.from]; } if(self.returnValue) self.returnValue(nil); } -(void) handle_action_return:(NSMutableDictionary *)value indexPath :(NSIndexPath*) indexPath action:(int) action_code { DebugLog(@"commoneditor return %ld_%ld",(long)indexPath.section,(long)indexPath.row); NSMutableDictionary* section_json=nil; NSMutableDictionary* item_json =[((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row] mutableCopy]; bool is_subaction = [value[@"is_subaction"] boolValue]; int subaction_tag= [value[@"subaction_tag"] intValue]; [value removeObjectForKey:@"is_subaction"]; [value removeObjectForKey:@"subaction_tag"]; if(is_subaction) { NSMutableDictionary* sub_action = [[item_json objectForKey:[NSString stringWithFormat:@"item_%d",subaction_tag]] mutableCopy]; int refresh = [[sub_action valueForKey:@"refresh"] intValue]; NSString* refresh_trigger = [sub_action valueForKey:@"name"]; NSDictionary * restore_json=[sub_action objectForKeyedSubscript:@"restore"]; NSString* subid=[sub_action valueForKey:@"subid"]; UITableViewCell *cell = [self.editorTable cellForRowAtIndexPath:indexPath]; NSString* required = [sub_action valueForKey:@"required"]; if([required isEqualToString:@"true"] && value.count==0) { CALayer *layer = [cell.contentView layer]; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 1.0; layer.shadowColor = [UIColor redColor].CGColor; layer.shadowOffset = CGSizeMake(0, 0); layer.shadowOpacity = 1; layer.shadowRadius = 2.0; } else { CALayer *layer = [cell.contentView layer]; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 1.0; layer.shadowColor = [UIColor clearColor].CGColor; layer.shadowOffset = CGSizeMake(0, 0); layer.shadowOpacity = 1; layer.shadowRadius = 2.0; } if(value.count!=0) { if(action_code==ACTION_SAVE_DATA) { [sub_action setObject:value forKey:@"data"]; if(subid==nil) { [sub_action setValue:@"true" forKey:@"dirty"]; section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]] mutableCopy]; int count=0; count=[[section_json valueForKey:@"count"] intValue]; for(int i=0;i=1) { firstname =_arr[0]; if(_arr.count>1) { lastname=[[_arr subarrayWithRange:NSMakeRange(1, _arr.count-1)] componentsJoinedByString:@" "]; } } } [ret setValue:firstname forKey:@"customer_first_name"]; [ret setValue:lastname forKey:@"customer_last_name"]; // [ret setValue:[self create_customer_ext:ret] forKey:@"customer_contact_ext"]; return ret; } -(NSString* )create_customer_ext:(NSDictionary*)customerinfo { NSString* ret=nil; NSString* customer_address1= [customerinfo valueForKey:@"customer_address1"]; NSString* customer_address2= [customerinfo valueForKey:@"customer_address2"]; NSString* customer_address3= [customerinfo valueForKey:@"customer_address3"]; NSString* customer_address4= [customerinfo valueForKey:@"customer_address4"]; NSMutableArray* arraddr = [[NSMutableArray alloc] init]; if(customer_address1.length>0) [arraddr addObject:customer_address1]; if(customer_address2.length>0) [arraddr addObject:customer_address2]; if(customer_address3.length>0) [arraddr addObject:customer_address3]; if(customer_address4.length>0) [arraddr addObject:customer_address4]; NSString *addr_string = [arraddr componentsJoinedByString:@"\r\n"]; NSString* customer_city= [customerinfo valueForKey:@"customer_city"]; NSString* customer_country= [customerinfo valueForKey:@"customer_country"]; NSString* customer_zipcode= [customerinfo valueForKey:@"customer_zipcode"]; NSString* customer_state= [customerinfo valueForKey:@"customer_state"]; NSMutableArray* arrcty = [[NSMutableArray alloc] init]; if(customer_city.length>0) [arrcty addObject:customer_city]; if(customer_state.length>0) [arrcty addObject:customer_state]; if(customer_zipcode.length>0) [arrcty addObject:customer_zipcode]; if(customer_country.length>0) [arrcty addObject:customer_country]; NSString *cty_string = [arrcty componentsJoinedByString:@", "]; // NSString* customer_phone= [customerinfo valueForKey:@"customer_phone"]; // NSString* customer_fax= [customerinfo valueForKey:@"customer_fax"]; // // NSMutableArray* arrpho = [[NSMutableArray alloc] init]; // if(customer_phone.length>0) // { // customer_phone = [NSString stringWithFormat:@"TEL: %@",customer_phone]; // [arrpho addObject:customer_phone]; // } // if(customer_fax.length>0) // { // customer_fax = [NSString stringWithFormat:@"FAX: %@",customer_fax]; // [arrpho addObject:customer_fax]; // } // NSString *phone_string = [arrpho componentsJoinedByString:@", "]; // // // NSString* customer_contact= [customerinfo valueForKey:@"customer_contact"]; // if(customer_contact.length>0) // { // customer_contact = [NSString stringWithFormat:@"ATTN: %@",customer_contact]; // // } // NSString *contact_string = customer_contact; // // // NSString* customer_email= [customerinfo valueForKey:@"customer_email"]; // if(customer_email.length>0) // { // customer_email = [NSString stringWithFormat:@"Email: %@",customer_email]; // // } // NSString *email_string = customer_email; NSMutableArray* arrext = [[NSMutableArray alloc] init]; if(addr_string.length>0) [arrext addObject:addr_string]; if(cty_string.length>0) [arrext addObject:cty_string]; // if(phone_string.length>0) // [arrext addObject:phone_string]; // if(contact_string.length>0) // [arrext addObject:contact_string]; // if(email_string.length>0) // [arrext addObject:email_string]; ret = [arrext componentsJoinedByString:@"\r\n"]; // NSString *string = [array componentsJoinedByString:@" "]; // NSString* customer_name= [customerinfo valueForKey:@"customer_name"]; return ret; } #pragma mark - hide section button clicked - (void)HideSction:(UIButton *)sender { NSMutableDictionary* section= [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",(long)sender.tag]] mutableCopy]; bool hide = [[section valueForKey:@"hide"]boolValue]; if(hide) { [section setValue:@"false" forKey:@"hide"]; [sender setTitle:@"Show" forState:UIControlStateNormal]; } else{ [section setValue:@"true" forKey:@"hide"]; [sender setTitle:@"Hide" forState:UIControlStateNormal]; } [self.content_data_download setObject:section forKey:[NSString stringWithFormat:@"section_%ld",(long)sender.tag]]; self.content_data_control = [self translate_json:self.content_data_download changed:self.changed_data]; NSRange range = NSMakeRange(sender.tag, 1); NSIndexSet *sectionToReload = [NSIndexSet indexSetWithIndexesInRange:range]; [self.editorTable reloadSections:sectionToReload withRowAnimation:UITableViewRowAnimationAutomatic]; } #pragma mark - multi_action sub action clicked - (IBAction)MActionClicked:(UIButton *)sender { UITableViewCell *cell = (UITableViewCell *) sender.superview.superview; NSIndexPath * indexPath = [self.editorTable indexPathForCell:cell]; int refresh =0; NSMutableDictionary* section_json=nil; NSMutableDictionary* item_json =[((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row] mutableCopy]; NSString* subid=[item_json valueForKey:@"subid"]; NSString* refresh_trigger = [item_json valueForKey:@"name"]; NSDictionary* sub_action = [item_json objectForKey:[NSString stringWithFormat:@"item_%ld",(long)sender.tag]]; NSString* type = [sub_action valueForKey:@"type"]; if([type isEqualToString:@"pull"]) { [self.lastedit endEditing:true]; refresh = [[sub_action valueForKey:@"refresh"] intValue]; NSDictionary* keymap= [sub_action objectForKey:@"key_map"]; NSMutableDictionary* value=[self create_value_map:keymap]; if(subid==nil) { NSDictionary* jsonmap=[sub_action valueForKey:@"key_map"]; section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]] mutableCopy]; int icount=[[section_json valueForKey:@"count"] intValue]; for (int ic=0;ic0) [modify_item setValue:valuestr forKey:@"value"]; else [modify_item setValue:@"" forKey:@"value"]; [modify_item setValue:@"true" forKey:@"dirty"]; [section_json setObject:modify_item forKey:[NSString stringWithFormat:@"item_%d",ic ]]; } } } else { NSArray* idarr=[subid componentsSeparatedByString:@"_"]; int section = [(NSString*)idarr[0] intValue]; int item=[(NSString*)idarr[1] intValue]; NSDictionary* jsonmap=[sub_action valueForKey:@"key_map"]; section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%d", section]] mutableCopy]; NSMutableDictionary * olditem=[[section_json objectForKey:[NSString stringWithFormat:@"item_%d",item ]] mutableCopy]; NSString* control_type = [olditem valueForKey:@"control"]; if([control_type isEqualToString:@"switch"]) olditem= [self fill_switch_subitem:olditem subid:nil source:value mapping:jsonmap ]; else if([control_type isEqualToString:@"enum"]) { olditem= [self fill_enum_subitem:olditem subid:nil source:value mapping:jsonmap ]; } else { [RAUtils alert_view:@"" title:@"not impl"]; } [olditem setValue:@"true" forKey:@"dirty"]; [section_json setObject:olditem forKey:[NSString stringWithFormat:@"item_%d",item ]]; } [self.content_data_download setObject:section_json forKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]]; self.content_data_control = [self translate_json:self.content_data_download changed:self.changed_data]; if(refresh==1) { // if(restore_json!=nil) // { // int rc=[[restore_json valueForKey:@"count"] intValue]; // for(int ir=0;ir0) // return 1; return self.content_data_control.count; // int section_count =[[self.content_data valueForKey:@"section_count"] intValue]; // return section_count; } //- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath //{ // DebugLog(@"canMoveRowAtIndexPath"); // // if([tableView numberOfRowsInSection:indexPath.section]>1) // return true; // else // return false; //} //- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath //{ // NSMutableArray * from; // NSMutableArray * to ; // if(fromIndexPath.section==0) // from = self.displayfields; // else // from = self.hidefields; // if(toIndexPath.section==0) // to = self.displayfields; // else // to = self.hidefields; // id content=from[fromIndexPath.row]; // [from removeObjectAtIndex:fromIndexPath.row]; // [to insertObject:content atIndex:toIndexPath.row]; // // [tableView reloadData]; // //} - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // if(self.content_data_control.count>0) // return 1; NSMutableDictionary* sectionjson= [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",(long)section]] mutableCopy]; bool hide = [[sectionjson valueForKey:@"hide"]boolValue]; if(hide) { return 0; // [sectionjson setValue:@"false" forKey:@"hide"]; // [sender setTitle:@"Show" forState:UIControlStateNormal]; } else{ return ((NSMutableArray*)self.content_data_control[section]).count; // [sectionjson setValue:@"true" forKey:@"hide"]; // [sender setTitle:@"Hide" forState:UIControlStateNormal]; } // return 0; // if(section==4) // return 1; // NSMutableDictionary* section_json = [self.content_data objectForKey:[NSString stringWithFormat:@"section_%ld",(long)section ]]; // // return [[section_json valueForKey:@"count" ] intValue]; } - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { if(section==0) return 44; return 33; } //- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section //{ // return 0.5; //} - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; { NSDictionary* item_json =((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row]; NSString* control = [item_json valueForKey:@"control"]; if([control isEqualToString:@"model"]) return 140; else if([control isEqualToString:@"signature"]) return 140; else if([control isEqualToString:@"text_view"]) return 140; else if([control isEqualToString:@"img"]) return 123; return 44; } // - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { bool readonly = [[self.content_data_download valueForKey:@"readonly"]boolValue]; // int d=0; // if(indexPath.section==4) // d=0; // DebugLog(@"%d,%d",indexPath.section,indexPath.row); // NSMutableDictionary* section_json = [self.content_data objectForKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]]; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; NSDictionary* item_json =((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row]; NSString* control = [item_json valueForKey:@"control"]; NSString* required = [item_json valueForKey:@"required"]; NSString *CellIdentifier = @""; if([control isEqualToString:@"text_view"]) { CellIdentifier = @"CommonEditorCellTextView"; CommonEditorCellTextView * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; NSMutableString* title = [[item_json valueForKey:@"aname"] mutableCopy]; NSString* value =[item_json valueForKey:@"value"]; NSString* align =[item_json valueForKey:@"align"]; if([align isEqualToString:@"right"]) cell.textview.textAlignment= kCTRightTextAlignment; else cell.textview.textAlignment =kCTLeftTextAlignment; int capital =[[item_json valueForKey:@"capital"] intValue]; switch (capital) { case 1: cell.textview.autocapitalizationType=UITextAutocapitalizationTypeWords; break; case 2: cell.textview.autocapitalizationType=UITextAutocapitalizationTypeSentences; break; case 3: cell.textview.autocapitalizationType=UITextAutocapitalizationTypeAllCharacters; break; default: cell.textview.autocapitalizationType=UITextAutocapitalizationTypeWords;//UITextAutocapitalizationTypeNone; break; } int disable = [[item_json valueForKey:@"disable"] intValue]; if(disable==1||readonly) { cell.textview.editable=NO; // cell.textfield.backgroundColor = [UIColor lightGrayColor]; cell.textview.textColor= [UIColor lightGrayColor]; } else { cell.textview.editable=YES; cell.textview.textColor= [UIColor blackColor]; // cell.textfield.backgroundColor = [UIColor whiteColor]; } // if([required isEqualToString:@"true"]) // { // [title appendString:@"*"]; // } cell.label_name.text=title; if([required isEqualToString:@"true"]) { [cell.label_name sizeToFit]; CGRect frame =cell.label_name.frame; frame= CGRectMake(frame.origin.x+frame.size.width, frame.origin.y, 10, 21); cell.starMark.frame = frame; cell.starMark.hidden=false; // [title appendString:@"*"]; // [title appendString:@"*"]; // NSString * htmlString = @" Some html string \n This is some text! "; } else { [cell.label_name sizeToFit]; cell.starMark.hidden=true; } cell.textview.text = value; cell.textview.delegate = self; cell.accessoryType = UITableViewCellAccessoryNone; if(self.cancommit==false && [required isEqualToString:@"true"] && (value==nil || value.length==0)) { CALayer *layer = [cell.contentView layer]; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 1.0; layer.shadowColor = [UIColor redColor].CGColor; layer.shadowOffset = CGSizeMake(0, 0); layer.shadowOpacity = 1; layer.shadowRadius = 2.0; } else { CALayer *layer = [cell.contentView layer]; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 1.0; layer.shadowColor = [UIColor clearColor].CGColor; layer.shadowOffset = CGSizeMake(0, 0); layer.shadowOpacity = 1; } cell.backgroundColor = [UIColor whiteColor]; return cell; }else if([control isEqualToString:@"img"]) { CellIdentifier = @"CommonEditorCellImg"; CommonEditorCellImg * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; NSString* title = [item_json valueForKey:@"aname"] ; NSString* value =[item_json valueForKey:@"value"]; int disable = [[item_json valueForKey:@"disable"] intValue]; if(disable==1||readonly) { cell.editable=false; } else cell.editable=true; cell.labelTitle.text = title; cell.labelDescription.text = value; cell.imgChanged = ^(NSString* url_down,NSString* url_up,int index ,NSString* url_index) { // NSMutableDictionary* editjson = [item_json mutableCopy]; // editjson[@"img_url"]=url; [self imgIsChanged:url_down url_up:url_up indexPath:indexPath index:index url_index:url_index]; }; { NSString* img_url0 = [item_json valueForKey:@"img_url_0"]; if(img_url0.length>0) { NSString* img_url_up=[item_json valueForKey:@"img_url_aname_0"]; if(img_url_up.length==0) img_url_up=@""; cell.imgs[0]=img_url_up; NSString* file_name=[img_url0 lastPathComponent]; NSData* img_data=[iSalesDB load_cached_img:file_name loadFrom:img_url0]; if(img_data!=nil) { UIImage * img =[UIImage imageWithData:img_data]; cell.touchImageView0.image=img; cell.img_validate = true; // [cell.touchImageView setImage:img forState:UIControlStateNormal]; } else { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSData* downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:img_url0]]; dispatch_async(dispatch_get_main_queue(), ^{ if(downloadimg_data!=nil) { [iSalesDB cache_img:downloadimg_data filename:file_name saveTo:img_url0]; UIImage * img =[UIImage imageWithData:downloadimg_data]; cell.touchImageView0.image=img; cell.img_validate = true; } else { cell.touchImageView0.image=[UIImage imageNamed:@"notfound_s"]; cell.img_validate = false; } }); }); } } else { cell.touchImageView0.image=nil; cell.imgs[0]=@""; } } { NSString* img_url1 = [item_json valueForKey:@"img_url_1"]; if(img_url1.length>0) { NSString* img_url_up=[item_json valueForKey:@"img_url_aname_1"]; if(img_url_up.length==0) img_url_up=@""; cell.imgs[1]=img_url_up; NSString* file_name=[img_url1 lastPathComponent]; NSData* img_data=[iSalesDB load_cached_img:file_name loadFrom:img_url1]; if(img_data!=nil) { UIImage * img =[UIImage imageWithData:img_data]; cell.touchImageView1.image=img; cell.img_validate = true; // [cell.touchImageView setImage:img forState:UIControlStateNormal]; } else { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSData* downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:img_url1]]; dispatch_async(dispatch_get_main_queue(), ^{ if(downloadimg_data!=nil) { [iSalesDB cache_img:downloadimg_data filename:file_name saveTo:img_url1]; UIImage * img =[UIImage imageWithData:downloadimg_data]; cell.touchImageView1.image=img; cell.img_validate = true; } else { cell.touchImageView1.image=[UIImage imageNamed:@"notfound_s"] ; cell.img_validate = false; } }); }); } } else { cell.touchImageView1.image=nil; cell.imgs[1]=@""; } } { NSString* img_url2 = [item_json valueForKey:@"img_url_2"]; if(img_url2.length>0) { NSString* img_url_up=[item_json valueForKey:@"img_url_aname_2"]; if(img_url_up.length==0) img_url_up=@""; cell.imgs[2]=img_url_up; NSString* file_name=[img_url2 lastPathComponent]; NSData* img_data=[iSalesDB load_cached_img:file_name loadFrom:img_url2]; if(img_data!=nil) { UIImage * img =[UIImage imageWithData:img_data]; cell.touchImageView2.image=img; cell.img_validate = true; // [cell.touchImageView setImage:img forState:UIControlStateNormal]; } else { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSData* downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:img_url2]]; dispatch_async(dispatch_get_main_queue(), ^{ if(downloadimg_data!=nil) { [iSalesDB cache_img:downloadimg_data filename:file_name saveTo:img_url2]; UIImage * img =[UIImage imageWithData:downloadimg_data]; cell.touchImageView2.image=img; cell.img_validate = true; } else { cell.touchImageView2.image=[UIImage imageNamed:@"notfound_s"] ; cell.img_validate = false; } }); }); }} else { cell.touchImageView2.image=nil; cell.imgs[2]=@""; } } cell.backgroundColor = [UIColor whiteColor]; return cell; }else if([control isEqualToString:@"edit"]) { CellIdentifier = @"CommonEditorCellEdit"; CommonEditorCellEdit * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; NSMutableString* title = [[item_json valueForKey:@"aname"] mutableCopy]; // title =[[NSString stringWithFormat:@"%@",title] mutableCopy]; NSString* value =[item_json valueForKey:@"value"]; NSString* align =[item_json valueForKey:@"align"]; if([align isEqualToString:@"right"]) cell.textfield.textAlignment= NSTextAlignmentRight; else cell.textfield.textAlignment =NSTextAlignmentLeft; int capital =[[item_json valueForKey:@"capital"] intValue]; switch (capital) { case 1: cell.textfield.autocapitalizationType=UITextAutocapitalizationTypeWords; break; case 2: cell.textfield.autocapitalizationType=UITextAutocapitalizationTypeSentences; break; case 3: cell.textfield.autocapitalizationType=UITextAutocapitalizationTypeAllCharacters; break; default: cell.textfield.autocapitalizationType=UITextAutocapitalizationTypeWords;//UITextAutocapitalizationTypeNone; break; } int disable = [[item_json valueForKey:@"disable"] intValue]; if(disable==1||readonly) { cell.textfield.enabled=NO; // cell.textfield.backgroundColor = [UIColor lightGrayColor]; cell.textfield.textColor= [UIColor lightGrayColor]; } else { cell.textfield.enabled=YES; cell.textfield.textColor= [UIColor blackColor]; // cell.textfield.backgroundColor = [UIColor whiteColor]; } NSString* keyboard = [item_json valueForKey:@"keyboard"]; if([keyboard isEqualToString:@"number"]) { // float f = [value floatValue]; // value = [NSString stringWithFormat:@"%.2f",f]; cell.textfield.keyboardType=UIKeyboardTypeNumbersAndPunctuation; } else if([keyboard isEqualToString:@"email"]) { cell.textfield.keyboardType=UIKeyboardTypeEmailAddress; } else if([keyboard isEqualToString:@"phone"]) { cell.textfield.keyboardType=UIKeyboardTypePhonePad; } else { cell.textfield.keyboardType=UIKeyboardTypeDefault; } // UIKIT_EXTERN NSString * const NSPlainTextDocumentType NS_AVAILABLE(10_0, 7_0); // UIKIT_EXTERN NSString * const NSRTFTextDocumentType NS_AVAILABLE(10_0, 7_0); // UIKIT_EXTERN NSString * const NSRTFDTextDocumentType NS_AVAILABLE(10_0, 7_0); // UIKIT_EXTERN NSString * const NSHTMLTextDocumentType NS_AVAILABLE(10_0, 7_0); // // NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[title dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil]; // UILabel * myLabel = [[UILabel alloc] initWithFrame:self.view.bounds]; // myLabel.attributedText = attrStr; // cell.labelTitle.attributedText = attrStr; cell.labelTitle.text=title; if([required isEqualToString:@"true"]) { [cell.labelTitle sizeToFit]; CGRect frame =cell.labelTitle.frame; frame= CGRectMake(frame.origin.x+frame.size.width, frame.origin.y, 10, 21); cell.starMark.frame = frame; cell.starMark.hidden=false; // [title appendString:@"*"]; // [title appendString:@"*"]; // NSString * htmlString = @" Some html string \n This is some text! "; } else { [cell.labelTitle sizeToFit]; cell.starMark.hidden=true; } cell.textfield.text = value; cell.textfield.delegate = self; cell.accessoryType = UITableViewCellAccessoryNone; if(self.cancommit==false && [required isEqualToString:@"true"] && (value==nil || value.length==0)) { CALayer *layer = cell.labelTitle.layer; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 1.0; layer.shadowColor = [UIColor redColor].CGColor; layer.shadowOffset = CGSizeMake(0, 0); layer.shadowOpacity = 1; layer.shadowRadius = 2.0; layer = cell.starMark.layer; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 1.0; layer.shadowColor = [UIColor redColor].CGColor; layer.shadowOffset = CGSizeMake(0, 0); layer.shadowOpacity = 1; layer.shadowRadius = 2.0; //UIImageView * iv = cell.textfield.rightView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"mark_attention_24"]]; cell.textfield.rightViewMode=UITextFieldViewModeUnlessEditing; cell.textfield.layer.cornerRadius=8.0f; cell.textfield.layer.borderWidth= 1.0f; cell.textfield.layer.masksToBounds=YES; cell.textfield.layer.borderColor=[[UIColor redColor]CGColor]; } else { CALayer *layer = cell.labelTitle.layer;//[cell.contentView layer]; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 1.0; layer.shadowColor = [UIColor clearColor].CGColor; layer.shadowOffset = CGSizeMake(0, 0); layer.shadowOpacity = 1; layer = cell.starMark.layer;//[cell.contentView layer]; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 1.0; layer.shadowColor = [UIColor clearColor].CGColor; layer.shadowOffset = CGSizeMake(0, 0); layer.shadowOpacity = 1; cell.textfield.rightViewMode=UITextFieldViewModeNever; //cell.textfield.layer.borderColor= [[UIColor lightGrayColor] CGColor]; cell.textfield.rightView = nil; cell.textfield.layer.cornerRadius=8.0f; cell.textfield.layer.borderWidth= 1.0f; cell.textfield.layer.masksToBounds=YES; cell.textfield.layer.borderColor=[[UIColor lightGrayColor]CGColor]; } cell.backgroundColor = [UIColor whiteColor]; return cell; } else if([control isEqualToString:@"text"]) { CellIdentifier = @"CommonEditorCellLabel"; CommonEditorCellLabel * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; //CGRect titleframe = cell.labelTitle.frame; NSString* title = [item_json valueForKey:@"aname"] ; NSString* value =[item_json valueForKey:@"value"]; NSString* color =[item_json valueForKey:@"color"]; cell.labelValue.textColor = [RAUtils strColor:color]; NSString* align =[item_json valueForKey:@"align"]; if([align isEqualToString:@"right"]) { cell.labelTitle.frame =CGRectMake(15,11,350,21); cell.labelValue.textAlignment= NSTextAlignmentRight; } else { cell.labelTitle.frame =CGRectMake(15,11,150,21); cell.labelValue.textAlignment =NSTextAlignmentLeft; } NSString* type=[item_json valueForKey:@"type"] ; if([type isEqualToString:@"price"]) { if(appDelegate.can_see_price&&appDelegate.price_hidden==false) { } else { value=nil; } } cell.labelTitle.text=title; cell.labelValue.text = value; cell.backgroundColor = [UIColor whiteColor]; return cell; } else if([control isEqualToString:@"action"]) { CellIdentifier = @"CommonEditorCellAction"; CommonEditorCellAction * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; NSMutableString* title = [[item_json valueForKey:@"aname"] mutableCopy]; NSString* value =[item_json valueForKey:@"value"]; if([required isEqualToString:@"true"]) { [title appendString:@"*"]; } NSDictionary* data = [item_json objectForKey:@"data"]; cell.labelAction.text=title; cell.action_code = value; //cell.labelValue.text = value; if(self.cancommit==false && [required isEqualToString:@"true"] && (data==nil)) { CALayer *layer = [cell.contentView layer]; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 1.0; layer.shadowColor = [UIColor redColor].CGColor; layer.shadowOffset = CGSizeMake(0, 0); layer.shadowOpacity = 1; layer.shadowRadius = 2.0; } else { CALayer *layer = [cell.contentView layer]; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 1.0; layer.shadowColor = [UIColor clearColor].CGColor; layer.shadowOffset = CGSizeMake(0, 0); layer.shadowOpacity = 1; } cell.backgroundColor = [UIColor whiteColor]; return cell; } if([control isEqualToString:@"multi_action"]) { CellIdentifier = @"CommonEditorCellMAction"; CommonEditorCellMAction * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; int count = [[item_json valueForKey:@"count"]intValue]; for(int i=0;i*"]; // NSString * htmlString = @" Some html string \n This is some text! "; } else { [cell.labelTitle sizeToFit]; cell.starMark.hidden=true; } [cell.switchCtrl addTarget:self action:@selector(switchIsChanged:) forControlEvents:UIControlEventValueChanged]; if([[value lowercaseString] isEqualToString:@"true"]) cell.switchCtrl.on = true; else cell.switchCtrl.on = false; cell.accessoryType = UITableViewCellAccessoryNone; cell.backgroundColor = [UIColor whiteColor]; return cell; } else if([control isEqualToString:@"enum"]) { CellIdentifier = @"CommonEditorCellEnum"; CommonEditorCellEnum * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; NSMutableString* title = [[item_json valueForKey:@"aname"] mutableCopy]; NSDictionary* cadedate_json =[item_json objectForKey:@"cadedate"]; int disable = [[item_json valueForKey:@"disable"] intValue]; if(disable==1||readonly) { cell.labelValue.textColor= [UIColor lightGrayColor]; } else { cell.labelValue.textColor= [UIColor blackColor]; // cell.textfield.backgroundColor = [UIColor whiteColor]; } NSString* align =[item_json valueForKey:@"align"]; if([align isEqualToString:@"right"]) cell.labelValue.textAlignment= NSTextAlignmentRight; else cell.labelValue.textAlignment =NSTextAlignmentLeft; // if([required isEqualToString:@"true"]) // { // [title appendString:@"*"]; // } NSString* value =@""; int count = [[cadedate_json valueForKey:@"count"] intValue]; for(int i=0;i=1) value=[value substringToIndex:value.length-1]; cell.labelTitle.text=title; if([required isEqualToString:@"true"]) { [cell.labelTitle sizeToFit]; CGRect frame =cell.labelTitle.frame; frame= CGRectMake(frame.origin.x+frame.size.width, frame.origin.y, 10, 21); cell.starMark.frame = frame; cell.starMark.hidden=false; // [title appendString:@"*"]; // [title appendString:@"*"]; // NSString * htmlString = @" Some html string \n This is some text! "; } else { [cell.labelTitle sizeToFit]; cell.starMark.hidden=true; } cell.labelValue.text = value; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; if(self.cancommit==false && [required isEqualToString:@"true"] && (value==nil || value.length==0)) { CALayer *layer = [cell.contentView layer]; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 1.0; layer.shadowColor = [UIColor redColor].CGColor; layer.shadowOffset = CGSizeMake(0, 0); layer.shadowOpacity = 1; layer.shadowRadius = 2.0; } else { CALayer *layer = [cell.contentView layer]; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 1.0; layer.shadowColor = [UIColor clearColor].CGColor; layer.shadowOffset = CGSizeMake(0, 0); layer.shadowOpacity = 1; } cell.backgroundColor = [UIColor whiteColor]; return cell; } else if([control isEqualToString:@"model"]) { CommonEditorCellModel * cell= [tableView dequeueReusableCellWithIdentifier:@"CommonEditorCellModel" forIndexPath:indexPath]; int count = [[item_json valueForKey:@"count"] intValue]; NSDictionary * combine_json =[item_json objectForKey:@"combine"]; cell.bundle_item=combine_json; double dprice=0.0; if(cell.bundle_item!=nil) { int citem=0; int bcount=[[cell.bundle_item valueForKey:@"count"] intValue]; for(int bc=0;bc 0) { available_str = [NSString stringWithFormat:@"Available: %@",availability]; } else { available_str = @"Available: In Production"; } cell.avalibilityLabel.text = available_str; NSString* img_url = [item_json valueForKey:@"img_url"]; NSString* description = [item_json valueForKey:@"description"]; // NSString* identifier = [item_json valueForKey:@"identifier"]; // NSString* attribute = [item_json valueForKey:@"attribute"]; // NSString* total_price = [item_json valueForKey:@"total_price"] ; // NSString* unit_price = [item_json valueForKey:@"unit_price"] ; // NSString* mp = [item_json valueForKey:@"stockUom"]; double unitprice=[[item_json valueForKey:@"unit_price"] doubleValue]; int stockUom =[[item_json valueForKey:@"stockUom"] intValue]; double discount =[[item_json valueForKey:@"discount"] doubleValue]; NSString* discountstr=[NSString stringWithFormat:@"%@%% off", [RAUtils FloatFormat:discount]]; NSString* oldprice =[NSString stringWithFormat:@"%.2f",unitprice]; NSString* newunitprice=@""; if(dprice>0) newunitprice = [NSString stringWithFormat:@"%.2f+%.2f",unitprice* (1.0-discount/100),dprice]; else newunitprice = [NSString stringWithFormat:@"%.2f",unitprice* (1.0-discount/100)]; NSString* totalprice = [NSString stringWithFormat:@"%.2f",(unitprice* (1.0-discount/100)+dprice)*count]; if(appDelegate.can_see_price&&appDelegate.price_hidden==false) { } else { oldprice=nil; newunitprice=nil; totalprice=nil; } cell.labelDiscount.text = discountstr; cell.labelOldPrice.text = oldprice; cell.labelMasterPack.text =[NSString stringWithFormat:@"Sold in QTY of:%d", stockUom]; bool isfree = [[item_json valueForKey:@"is_free"]boolValue]; if(isfree) { cell.labelOldPrice.hidden = false; cell.labelOldPrice.textColor = [UIColor redColor]; cell.labelOldPrice.text=@"Free"; cell.labelOldPrice.hideline = true; cell.labelDiscount.hidden = true; } else { cell.labelOldPrice.textColor = [UIColor blackColor]; cell.labelOldPrice.hideline = false; if(discount==0) { cell.labelOldPrice.hidden = true; cell.labelDiscount.hidden = true; } else { cell.labelOldPrice.hidden = false; cell.labelDiscount.hidden = false; } } // if(discount==0) // { // cell.labelOldPrice.hidden = true; // cell.labelDiscount.hidden = true; // // } // else // { // cell.labelOldPrice.hidden = false; // cell.labelDiscount.hidden = false; // } // NSString* currency = [item_json valueForKey:@"currency"]; // int count =[[item_json valueForKey:@"count"] intValue]; cell.labelDescription.text = description; cell.labelCount.text = [NSString stringWithFormat:@"x %d",count]; // cell.labelID.text = identifier; // cell.labelSubtype.text = attribute; cell.labelTotalPrice.text= totalprice; // cell.labelUnitPrice.text=unit_price; cell.labelUnitPrice.text = newunitprice; cell.imgModel.image = [UIImage imageNamed:@"loading_s"]; NSString* file_name=[img_url lastPathComponent]; NSData* img_data=[iSalesDB load_cached_img:file_name loadFrom:img_url]; if(img_data!=nil) { UIImage * img =[UIImage imageWithData:img_data]; cell.imgModel.image = img; } else { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSData* downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:img_url]]; dispatch_async(dispatch_get_main_queue(), ^{ if(downloadimg_data!=nil) { [iSalesDB cache_img:downloadimg_data filename:file_name saveTo:img_url]; UIImage * img =[UIImage imageWithData:downloadimg_data]; cell.imgModel.image = img; } else cell.imgModel.image = [UIImage imageNamed:@"notfound_s"]; }); }); } cell.backgroundColor = [UIColor whiteColor]; return cell; }else if([control isEqualToString:@"datepicker"]) { CellIdentifier = @"CommonEditorCellEnum"; CommonEditorCellEnum * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; NSMutableString* title = [[item_json valueForKey:@"aname"] mutableCopy]; NSString* value =[item_json valueForKey:@"value"]; // if([required isEqualToString:@"true"]) // { // [title appendString:@"*"]; // } cell.labelTitle.text=title; if([required isEqualToString:@"true"]) { [cell.labelTitle sizeToFit]; CGRect frame =cell.labelTitle.frame; frame= CGRectMake(frame.origin.x+frame.size.width, frame.origin.y, 10, 21); cell.starMark.frame = frame; cell.starMark.hidden=false; // [title appendString:@"*"]; // [title appendString:@"*"]; // NSString * htmlString = @" Some html string \n This is some text! "; } else { [cell.labelTitle sizeToFit]; cell.starMark.hidden=true; } cell.labelValue.text = value; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; if(self.cancommit==false && [required isEqualToString:@"true"] && (value==nil || value.length==0)) { CALayer *layer = [cell.contentView layer]; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 1.0; layer.shadowColor = [UIColor redColor].CGColor; layer.shadowOffset = CGSizeMake(0, 0); layer.shadowOpacity = 1; layer.shadowRadius = 2.0; } else { CALayer *layer = [cell.contentView layer]; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 1.0; layer.shadowColor = [UIColor clearColor].CGColor; layer.shadowOffset = CGSizeMake(0, 0); layer.shadowOpacity = 1; } cell.backgroundColor = [UIColor whiteColor]; return cell; } else if([control isEqualToString:@"monthpicker"]) { CellIdentifier = @"CommonEditorCellEnum"; CommonEditorCellEnum * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; NSMutableString* title = [[item_json valueForKey:@"aname"] mutableCopy]; NSString* value =[item_json valueForKey:@"value"]; // if([required isEqualToString:@"true"]) // { // [title appendString:@"*"]; // } cell.labelTitle.text=title; if([required isEqualToString:@"true"]) { [cell.labelTitle sizeToFit]; CGRect frame =cell.labelTitle.frame; frame= CGRectMake(frame.origin.x+frame.size.width, frame.origin.y, 10, 21); cell.starMark.frame = frame; cell.starMark.hidden=false; // [title appendString:@"*"]; // [title appendString:@"*"]; // NSString * htmlString = @" Some html string \n This is some text! "; } else { [cell.labelTitle sizeToFit]; cell.starMark.hidden=true; } cell.labelValue.text = value; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; if(self.cancommit==false && [required isEqualToString:@"true"] && (value==nil || value.length==0)) { CALayer *layer = [cell.contentView layer]; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 1.0; layer.shadowColor = [UIColor redColor].CGColor; layer.shadowOffset = CGSizeMake(0, 0); layer.shadowOpacity = 1; layer.shadowRadius = 2.0; } else { CALayer *layer = [cell.contentView layer]; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 1.0; layer.shadowColor = [UIColor clearColor].CGColor; layer.shadowOffset = CGSizeMake(0, 0); layer.shadowOpacity = 1; } cell.backgroundColor = [UIColor whiteColor]; return cell; } else if([control isEqualToString:@"signature"]) { CellIdentifier = @"CommonEditorCellSignature"; CommonEditorCellSignature * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; NSMutableString* title = [[item_json valueForKey:@"aname"] mutableCopy]; // if([required isEqualToString:@"true"]) // { // [title appendString:@"*"]; // } cell.labelTitle.text = title; if([required isEqualToString:@"true"]) { [cell.labelTitle sizeToFit]; CGRect frame =cell.labelTitle.frame; frame= CGRectMake(frame.origin.x+frame.size.width, frame.origin.y, 10, 21); cell.starMark.frame = frame; cell.starMark.hidden=false; // [title appendString:@"*"]; // [title appendString:@"*"]; // NSString * htmlString = @" Some html string \n This is some text! "; } else { [cell.labelTitle sizeToFit]; cell.starMark.hidden=true; } NSString* img_url = [item_json valueForKey:@"avalue"]; NSString* file_name=[img_url lastPathComponent]; NSData* img_data=[iSalesDB load_cached_img:file_name loadFrom:img_url]; if(img_data!=nil) { UIImage * img =[UIImage imageWithData:img_data]; cell.imageviewSignature.image=img ; } else { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSData* downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:img_url]]; dispatch_async(dispatch_get_main_queue(), ^{ if(downloadimg_data!=nil) { [iSalesDB cache_img:downloadimg_data filename:file_name saveTo:img_url]; UIImage * img =[UIImage imageWithData:downloadimg_data]; cell.imageviewSignature.image=img ; } else cell.imageviewSignature.image=[UIImage imageNamed:@"taptosign_s"]; }); }); } cell.backgroundColor = [UIColor whiteColor]; return cell; // CommonEditorCellSignature* cell = (CommonEditorCellSignature*) [self.editorTable cellForRowAtIndexPath:indexPath]; //cell.imageviewSignature.image = image; } else { CellIdentifier = @"CommonEditorCellEdit"; UITableViewCell * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; cell.backgroundColor = [UIColor whiteColor]; return cell; } } - (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { NSString* value =[DefaultAppearance get_noneappearance_value:@"DefaultTableHeaderView" valuename:@"title_text_color"]; if(value==nil) value=@""; unsigned long color = strtoul([value UTF8String],0,16); NSString* btntitle=nil ; NSString*labeltitle = nil; NSMutableDictionary* sectionjson= [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",(long)section]] mutableCopy]; labeltitle= [sectionjson valueForKey:@"title"]; bool hide = [[sectionjson valueForKey:@"hide"]boolValue]; if(hide) { btntitle=@"Show"; // [section setValue:@"false" forKey:@"hide"]; // [sender setTitle:@"Show" forState:UIControlStateNormal]; } else{ btntitle=@"Hide"; } DefaultTableHeaderView* myView = [[DefaultTableHeaderView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 0.0001)]; // myView.backgroundColor = [UIColor whiteColor];//UIColorFromRGB(0x996633);; myView.layer.shadowPath =[UIBezierPath bezierPathWithRect:myView.bounds].CGPath; myView.layer.shadowColor = [UIColor blackColor].CGColor; myView.layer.shadowOffset = CGSizeMake(0, 0); myView.layer.shadowOpacity = 0.5; myView.layer.shadowRadius = 2.0; int linespace=0; if(section==0) linespace=11; UIButton * btn =[[UIButton alloc] initWithFrame:CGRectMake(tableView.bounds.size.width-50-15, 0+linespace, 50, 33)]; btn.tag=section; // [btn setTitleColor:UIColorFromRGB(0x996633) forState:UIControlStateNormal]; [btn addTarget:self action:@selector(HideSction:) forControlEvents:UIControlEventTouchUpInside]; [btn setTitle:btntitle forState:UIControlStateNormal]; [myView addSubview:btn]; btn.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; myView.autoresizingMask = UIViewAutoresizingFlexibleWidth; UILabel *titlelabel = [[UILabel alloc] initWithFrame:CGRectMake(15, 5.5+linespace, 200, 20)]; titlelabel.textColor=UIColorFromRGB(color);//[UIColor whiteColor]; titlelabel.backgroundColor = [UIColor clearColor]; titlelabel.text=NSLocalizedString(labeltitle, nil); titlelabel.font = [UIFont boldSystemFontOfSize:20]; [titlelabel sizeToFit]; [myView addSubview:titlelabel]; // // UILabel *contactlabel = [[UILabel alloc] initWithFrame:CGRectMake(300, 0, 90, 22)]; // contactlabel.textColor=[UIColor whiteColor]; // contactlabel.backgroundColor = [UIColor clearColor]; // contactlabel.text=NSLocalizedString(@"Contact", nil); // [contactlabel sizeToFit]; // [myView addSubview:contactlabel]; // // // UILabel *modellabel = [[UILabel alloc] initWithFrame:CGRectMake(400, 0, 90, 22)]; // modellabel.textColor=[UIColor whiteColor]; // modellabel.backgroundColor = [UIColor clearColor]; // modellabel.text=NSLocalizedString(@"Model", nil); // [modellabel sizeToFit]; // [myView addSubview:modellabel]; // // UILabel *pricelabel = [[UILabel alloc] initWithFrame:CGRectMake(500, 0, 90, 22)]; // pricelabel.textColor=[UIColor whiteColor]; // pricelabel.backgroundColor = [UIColor clearColor]; // pricelabel.text=NSLocalizedString(@"Price", nil); // [pricelabel sizeToFit]; // [myView addSubview:pricelabel]; // // // // UILabel *timelabel = [[UILabel alloc] initWithFrame:CGRectMake(630, 0, 90, 22)]; // timelabel.textColor=[UIColor whiteColor]; // timelabel.backgroundColor = [UIColor clearColor]; // timelabel.text=NSLocalizedString(@"Create time", nil); // [timelabel sizeToFit]; // [myView addSubview:timelabel]; // // // // UILabel *statuslabel = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, 60, 22)]; // statuslabel.textColor=[UIColor whiteColor]; // statuslabel.backgroundColor = [UIColor clearColor]; // statuslabel.text=NSLocalizedString(@"Status", nil); // [statuslabel sizeToFit]; // [myView addSubview:statuslabel]; // return myView; } // -(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath { bool readonly = [[self.content_data_download valueForKey:@"readonly"]boolValue]; DebugLog(@"tableView willSelectRowAtIndexPath"); NSDictionary* item_json =((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row]; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; NSString* control = [item_json valueForKey:@"control"]; if([control isEqualToString:@"enum"])//||[control isEqualToString:@"ui"]) { int disable = [[item_json valueForKey:@"disable"] intValue]; if(disable==1||readonly) return nil; // NSDictionary * item_json = [self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",indexPath.row]]; NSDictionary* cadedate_json = [item_json objectForKey:@"cadedate"]; // NSDictionary* value_json = [item_json objectForKey:@"value"]; NSString* single_select = [item_json valueForKey:@"single_select"]; // NSString* required =[item_json valueForKey:@"required"]; NSString* title = [item_json valueForKey:@"aname"]; int max_select = [[item_json valueForKey:@"max"] intValue]; EnumSelectViewController* enumvc =[ self.storyboard instantiateViewControllerWithIdentifier:@"EnumSelectorViewController"]; enumvc.delegate = self; enumvc.max_select = max_select; enumvc.updatePosition = indexPath; // if([[required lowercaseString] isEqualToString:@"true"]) // enumvc.canbeEmpty = false; // else // enumvc.canbeEmpty =true; enumvc.cadedate = [cadedate_json mutableCopy]; enumvc.title = title; // enumvc.value = [value_json mutableCopy]; enumvc.single_select =[[single_select lowercaseString] isEqualToString:@"true"]; [self.navigationController pushViewController:enumvc animated:true]; }else if([control isEqualToString:@"action"]) { NSString* value = [item_json valueForKey:@"value"]; if([value isEqualToString:@"new_addr"]) { AddressEditorViewController * addressVC =[ self.storyboard instantiateViewControllerWithIdentifier:@"AddressEditorViewController"]; addressVC.url_type = URL_REMOTE; addressVC.request_url=URL_ADDRESS_EDOTOR; NSMutableDictionary * params= [[NSMutableDictionary alloc] init]; // NSString * string = [checked componentsJoinedByString:@","]; // [params setValue:string forKey:@"cart2Checkbox"]; addressVC.params = params; addressVC.delegate = self; addressVC.from = indexPath; // orderinfoVC.params = params; [self.navigationController pushViewController:addressVC animated:true]; }else if([value isEqualToString:@"credit_card"]) { CreditCardEditorViewController * cardVC =[ self.storyboard instantiateViewControllerWithIdentifier:@"CreditCardEditorViewController"]; NSDictionary *data = [item_json objectForKey:@"data"]; if(data!=nil) { cardVC.content_data_download = [data mutableCopy]; cardVC.url_type = URL_NONE; cardVC.request_url=nil; } else { cardVC.url_type = URL_REMOTE; cardVC.request_url=URL_CREDITCARD_EDOTOR; } NSMutableDictionary * params= [[NSMutableDictionary alloc] init]; params[@"orderCode"]=appDelegate.order_code; cardVC.params = params; cardVC.delegate = self; cardVC.from = indexPath; // orderinfoVC.params = params; [self.navigationController pushViewController:cardVC animated:true]; } else if([value isEqualToString:@"Sales_Order_Freight_Bill_To"]) { ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ]; cvc.showNavibar = true; cvc.contact_type = value; cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){ [self handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION]; // // if(self.returnValue) // self.returnValue(value); }; [self.navigationController pushViewController:cvc animated:true]; } else if([value isEqualToString:@"Sales_Order_Ship_From"]) { ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ]; cvc.showNavibar = true; cvc.contact_type = value; cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){ [self handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION]; // // if(self.returnValue) // self.returnValue(value); }; [self.navigationController pushViewController:cvc animated:true]; } else if([value isEqualToString:@"Sales_Order_Customer"]) { ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ]; cvc.contact_type = value; cvc.showNavibar = true; cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){ [self handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION]; // // if(self.returnValue) // self.returnValue(value); }; [self.navigationController pushViewController:cvc animated:true]; } else if([value isEqualToString:@"Sales_Order_Merchandise_Bill_To"]) { ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ]; cvc.showNavibar = true; cvc.contact_type = value; cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){ [self handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION]; // // if(self.returnValue) // self.returnValue(value); }; [self.navigationController pushViewController:cvc animated:true]; } else if([value isEqualToString:@"Contact_Return_To"]) { ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ]; cvc.showNavibar = true; cvc.contact_type = value; cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){ [self handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION]; // // if(self.returnValue) // self.returnValue(value); }; [self.navigationController pushViewController:cvc animated:true]; } else if([value isEqualToString:@"Sales_Order_Ship_To"]) { ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ]; cvc.showNavibar = true; cvc.contact_type = value; cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){ [self handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION]; // // if(self.returnValue) // self.returnValue(value); }; [self.navigationController pushViewController:cvc animated:true]; } } else if([control isEqualToString:@"datepicker"]) { // NSString* title = [item_json valueForKey:@"aname"]; NSString* value =[item_json valueForKey:@"value"]; NSString* type =[item_json valueForKey:@"type"]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; DatePickerViewController* dpvc =[ self.storyboard instantiateViewControllerWithIdentifier:@"DatePickerViewController"]; if([[type lowercaseString] isEqualToString:@"date"]) { dpvc.pickerMode = UIDatePickerModeDate; [dateFormatter setDateFormat:@"yyyy/MM/dd"]; } else if([[type lowercaseString] isEqualToString:@"time"]) { dpvc.pickerMode = UIDatePickerModeTime; [dateFormatter setDateFormat:@"HH:mm:ss"]; } else { dpvc.pickerMode = UIDatePickerModeDateAndTime; [dateFormatter setDateFormat:@"yyyy/MM/dd HH:mm:ss"]; } NSDate *date = [dateFormatter dateFromString:value]; dpvc.date = date; dpvc.formatter = dateFormatter; dpvc.labelTime.text = value; [self.navigationController pushViewController:dpvc animated:true]; }else if([control isEqualToString:@"monthpicker"]) { // NSString* title = [item_json valueForKey:@"aname"]; NSString* value =[item_json valueForKey:@"value"]; if (value==nil || value.length==0) { value=@"1/2015"; } // NSString* type =[item_json valueForKey:@"type"]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; MonthPickerViewController* mpvc =[ self.storyboard instantiateViewControllerWithIdentifier:@"MonthPickerViewController"]; // if([[type lowercaseString] isEqualToString:@"date"]) // { // dpvc.pickerMode = UIDatePickerModeDate; [dateFormatter setDateFormat:@"MM/yyyy"]; NSDate *date = [dateFormatter dateFromString:value]; mpvc.current_date =date; mpvc.updatePosition = indexPath; mpvc.delegate = self; // } // else if([[type lowercaseString] isEqualToString:@"time"]) // { // dpvc.pickerMode = UIDatePickerModeTime; // [dateFormatter setDateFormat:@"HH:mm:ss"]; // } // else // { // dpvc.pickerMode = UIDatePickerModeDateAndTime; // [dateFormatter setDateFormat:@"yyyy/MM/dd HH:mm:ss"]; // } // NSDate *date = [dateFormatter dateFromString:value]; // dpvc.date = date; // dpvc.formatter = dateFormatter; // dpvc.labelTime.text = value; [self.navigationController pushViewController:mpvc animated:true]; } else if([control isEqualToString:@"signature"]) { // SignatureViewController * signvc =[ self.storyboard instantiateViewControllerWithIdentifier:@"SignatureViewController"]; // signvc.title = [item_json valueForKey:@"aname"]; // signvc.indexPath = indexPath; // // signvc.delegate = self; // CommonEditorCellSignature* cell = (CommonEditorCellSignature*) [self.editorTable cellForRowAtIndexPath:indexPath]; // // signvc.existSignature = cell.imageviewSignature.image ; // // // // [self.navigationController pushViewController:signvc animated:true]; __block UIImage* signimg=nil; SignatureViewController * vc =[ self.storyboard instantiateViewControllerWithIdentifier:@"SignatureViewController"]; vc.onReturnImg = ^(UIImage* img) { signimg = img; if(signimg!=nil) { if(appDelegate.offline_mode) { NSData *data = [OLDataProvider offline_saveBusinesscard:UIImagePNGRepresentation(img)];; // 再将NSData转为字符串 NSString *jsonStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; // NSMutableString *str = [[NSMutableString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; DebugLog(@"data string: %@",jsonStr); NSError *error=nil; NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error]; //NSMutableArray* arr_ret = [[NSMutableArray alloc] init]; if([[json valueForKey:@"result"] intValue]==2) { NSString* img_url_down = json[@"img_url_aname"]; // if(img_url_down.length==0) // img_url_down=@""; NSString* img_url_up = json[@"img_url"]; // if(img_url_up.length==0) // img_url_up=@""; NSMutableDictionary* item_json =((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row]; [item_json setValue:img_url_down forKey:@"avalue"]; [item_json setValue:img_url_up forKey:@"value"]; [item_json setValue:@"true" forKey:@"dirty"]; NSMutableDictionary* section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]] mutableCopy]; [section_json setObject:item_json forKey:[NSString stringWithFormat:@"item_%d",indexPath.row]]; [self.content_data_download setObject:section_json forKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]]; self.content_data_control = [self translate_json:self.content_data_download changed:self.changed_data]; CommonEditorCellSignature* cell = (CommonEditorCellSignature*) [self.editorTable cellForRowAtIndexPath:indexPath]; cell.imageviewSignature.image = signimg; } else { [RAUtils message_alert:[json valueForKey:@"err_msg"] title:@"Upload Image" controller:self] ; } } else { NSData *imageData = UIImagePNGRepresentation(img); AFHTTPRequestSerializer* serializer=[AFHTTPRequestSerializer serializer] ; NSMutableDictionary* params = [[NSMutableDictionary alloc] init]; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if(appDelegate.user!=nil) [params setValue:appDelegate.user forKey:@"user"]; // if(appDelegate.contact_id!=nil) // [params setValue:appDelegate.contact_id forKey:@"contactId"]; if(appDelegate.password!=nil) [params setValue:appDelegate.password forKey:@"password"]; NSMutableURLRequest *request = [serializer multipartFormRequestWithMethod:@"POST" URLString:URL_UPLOAD_IMG parameters:params constructingBodyWithBlock:^(id formData) { [formData appendPartWithFileData:imageData name:@"upfile" fileName:@"test.jpg" mimeType:@"image/png"]; } error:nil]; AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; NSProgress *progress = nil; UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait..." title:@"Upload Signature"]; NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:&progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { // [progress removeObserver:self forKeyPath:@"fractionCompleted"]; [waitalert dismissWithClickedButtonIndex:0 animated:FALSE]; if (error) { NSString* err_msg = [error localizedDescription]; DebugLog(@"%@",err_msg);// [self.view updateWithMessage:[NSString stringWithFormat:@"Error : %@!", error.debugDescription]]; NSMutableString *str = [[NSMutableString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; DebugLog(@"data string: %@",str); [RAUtils message_alert:@"Can not connect to server please try again." title:@"Upload Image" controller:self] ; } else { DebugLog(@"response "); NSData *data = [NSJSONSerialization dataWithJSONObject:(NSDictionary*)responseObject options:kNilOptions error:nil]; // 再将NSData转为字符串 NSString *jsonStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; // NSMutableString *str = [[NSMutableString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; DebugLog(@"data string: %@",jsonStr); NSDictionary* json = responseObject; //NSMutableArray* arr_ret = [[NSMutableArray alloc] init]; if([[json valueForKey:@"result"] intValue]==2) { NSString* img_url_down = json[@"img_url_aname"]; // if(img_url_down.length==0) // img_url_down=@""; NSString* img_url_up = json[@"img_url"]; // if(img_url_up.length==0) // img_url_up=@""; NSMutableDictionary* item_json =((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row]; [item_json setValue:img_url_down forKey:@"avalue"]; [item_json setValue:img_url_up forKey:@"value"]; [item_json setValue:@"true" forKey:@"dirty"]; NSMutableDictionary* section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]] mutableCopy]; [section_json setObject:item_json forKey:[NSString stringWithFormat:@"item_%d",indexPath.row]]; [self.content_data_download setObject:section_json forKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]]; self.content_data_control = [self translate_json:self.content_data_download changed:self.changed_data]; CommonEditorCellSignature* cell = (CommonEditorCellSignature*) [self.editorTable cellForRowAtIndexPath:indexPath]; cell.imageviewSignature.image = signimg; } else { [RAUtils message_alert:[json valueForKey:@"err_msg"] title:@"Upload Image" controller:self] ; } } // }]; [uploadTask resume]; } } }; [self.navigationController pushViewController:vc animated:true]; } // else if([control isEqualToString:@"action "]) // { // // DebugLog(@"action push"); // // SignatureViewController * signvc =[ self.storyboard instantiateViewControllerWithIdentifier:@"SignatureViewController"]; // // signvc.title = [item_json valueForKey:@"aname"]; // // signvc.indexPath = indexPath; // // signvc.delegate = self; // // CommonEditorCellSignature* cell = (CommonEditorCellSignature*) [self.editorTable cellForRowAtIndexPath:indexPath]; // // // // signvc.existSignature = cell.imageviewSignature.image ; // // // // // // // // [self.navigationController pushViewController:signvc animated:true]; // } return nil; } //- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath //{ // // NSDictionary * item_json = [self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",indexPath.row]]; // // NSString* orderid = [item_json valueForKey:@"id"]; // // // if (self.delegate && [self.delegate respondsToSelector:@selector(SelectOrder:)]) { // // [self.delegate SelectOrder:orderid]; // // } // // // // [self dismissViewControllerAnimated:YES // // completion:^{ // // //一定要移除手势 否则下次 没有子视图的时候 点击 会崩溃拉 // // AppDelegate *app = [[UIApplication sharedApplication] delegate]; // // [app.window removeGestureRecognizer:self.tapGesture]; // // }]; // // [pvc categoryMenuSelected:indexPath.row]; //} #pragma mark monthpicker ViewControllerDelegate -(void) MPValueChanged:(NSString *)value indexPath :(NSIndexPath*) indexPath { CommonEditorCellEnum * cell= (CommonEditorCellEnum*) [self.editorTable cellForRowAtIndexPath:indexPath]; cell.labelValue.text = value; { CALayer *layer = [cell.contentView layer]; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 1.0; layer.shadowColor = [UIColor clearColor].CGColor; layer.shadowOffset = CGSizeMake(0, 0); layer.shadowOpacity = 1; layer.shadowRadius = 2.0; } // NSMutableString* title = [[item_json valueForKey:@"aname"] mutableCopy]; // UITableViewCell *cell = (UITableViewCell *) paramSender.superview.superview; // NSIndexPath * indexPath = [self.editorTable indexPathForCell:cell]; NSMutableDictionary* section_json=nil; // DebugLog(@"endedit %d_%d",indexPath.section,indexPath.row); NSMutableDictionary* item_json =[((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row] mutableCopy]; // NSString* check=@"false"; // if([paramSender isOn]) // check=@"true"; // [item_json setValue:value forKey:@"dirty"]; NSString* subid=[item_json valueForKey:@"subid"]; [item_json setValue:value forKey:@"value"]; if(subid==nil) { section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]] mutableCopy]; int count=0; count=[[section_json valueForKey:@"count"] intValue]; for(int i=0;itextField.text.length ||[string isEqualToString:@""]); } } - (void)textFieldDidEndEditing:(UITextField *)textField { DebugLog(@"textFieldDidEndEditing"); // UITableViewCell *cell = (UITableViewCell *) textField.superview.superview; NSIndexPath * indexPath = self.lastedit_from; [self textfieldSetValue:indexPath value:textField.text]; // NSMutableDictionary* section_json=nil; // // // // textField.text = [textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; // // // DebugLog(@"endedit %d_%d",indexPath.section,indexPath.row); // NSMutableDictionary* item_json =[((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row] mutableCopy]; // // NSString* subid=[item_json valueForKey:@"subid"]; // NSString* refresh_trigger = [item_json valueForKey:@"name"]; // // [item_json setValue:@"true" forKey:@"dirty"]; // [item_json setValue:textField.text forKey:@"value"]; // if([[item_json valueForKey:@"keyboard"] isEqualToString:@"number"]) // { // float f = [ textField.text floatValue]; // [item_json setValue:[NSString stringWithFormat:@"%.2f",f] forKey:@"value"]; // // } // // // [self.content_data_control[indexPath.section] setObject:item_json forKey:indexPath.row]; // if(subid==nil) // { // section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]] mutableCopy]; // int count=0; // // count=[[section_json valueForKey:@"count"] intValue]; // // for(int i=0;i0) [modify_item setValue:valuestr forKey:@"value"]; else [modify_item setValue:@"" forKey:@"value"]; [modify_item setValue:@"true" forKey:@"dirty"]; [subjson setObject:modify_item forKey:[NSString stringWithFormat:@"item_%d",l ]]; } } [boolitem setObject:subjson forKey:@"sub_item"]; if([value isEqualToString:@"true"]) [switch_item setObject:boolitem forKey:@"true"]; else [switch_item setObject:boolitem forKey:@"false"]; } return switch_item; } -(NSMutableDictionary*) fill_enum_subitem:(NSMutableDictionary *) enum_item subid:(NSArray*) subid source:(NSMutableDictionary*)source mapping:(NSDictionary*)mapping //step:(int) step { NSMutableDictionary* cadedatejson = [[enum_item objectForKey:@"cadedate"] mutableCopy]; int count = [[cadedatejson valueForKey:@"count"]intValue]; for(int i=0;i0) [modify_item setValue:valuestr forKey:@"value"]; else [modify_item setValue:@"" forKey:@"value"]; //[modify_item setValue:valuestr forKey:@"value"]; // [modify_item setValue:@"true" forKey:@"dirty"]; } } [modify_item setValue:@"true" forKey:@"dirty"]; [subjson setObject:modify_item forKey:[NSString stringWithFormat:@"item_%d",l ]]; // [section_json setObject:olditem forKey:[NSString stringWithFormat:@"item_%d",item ]]; // NSMutableDictionary* modify_item= [[section_json objectForKey:[NSString stringWithFormat:@"item_%d",ic ]] mutableCopy]; } [val_json setObject:subjson forKey:@"sub_item"]; } } [cadedatejson setObject:val_json forKey:[NSString stringWithFormat:@"val_%d",i]]; } [enum_item setObject:cadedatejson forKey:@"cadedate"]; return enum_item; } -(NSMutableDictionary*) switch_subitem_changed:(NSMutableDictionary *) switch_item subid:(NSArray*) subid value:(NSMutableDictionary*)valuejson step:(int) step { int index = [(NSString*)subid[step] intValue]; NSString* value = [switch_item valueForKey:@"value"]; NSMutableDictionary* boolitem=nil; NSMutableDictionary* subjson=nil; if([value isEqualToString:@"true"]) { boolitem =[[switch_item objectForKey:@"true"] mutableCopy]; } else { boolitem =[[switch_item objectForKey:@"false"] mutableCopy]; } subjson=[[boolitem objectForKey:@"sub_item"] mutableCopy]; if(subjson!=nil) { NSMutableDictionary * itemjson=[[subjson objectForKey:[NSString stringWithFormat:@"item_%d",index]] mutableCopy]; if(step==subid.count-1) { itemjson =valuejson; } [subjson setObject:itemjson forKey:[NSString stringWithFormat:@"item_%d",index]]; [boolitem setObject:subjson forKey:@"sub_item"]; if([value isEqualToString:@"true"]) [switch_item setObject:boolitem forKey:@"true"]; else [switch_item setObject:boolitem forKey:@"false"]; return switch_item; } return nil; } #pragma mark - #pragma mark Responding to keyboard events - (void)keyboardWillChangeFrame:(NSNotification *)notification { DebugLog(@"keyboardWillChangeFrame"); } - (void)keyboardWillShow:(NSNotification *)notification { DebugLog(@"keyboardWillShow"); if(self.keyboard_show) return; self.keyboard_show=true; /* Reduce the size of the text view so that it's not obscured by the keyboard. Animate the resize so that it's in sync with the appearance of the keyboard. */ NSDictionary *userInfo = [notification userInfo]; // Get the origin of the keyboard when it's displayed. NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]; // Get the top of the keyboard as the y coordinate of its origin in self's view's coordinate system. The bottom of the text view's frame should align with the top of the keyboard's final position. // CGRect keyboardRect = [aValue CGRectValue]; CGSize keyboardSize = [aValue CGRectValue].size; DebugLog(@"keyboard height:%f",keyboardSize.height); // Get the duration of the animation. NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]; NSTimeInterval animationDuration; [animationDurationValue getValue:&animationDuration]; // if(self.keyboard_h==0) // { self.keyboard_h =keyboardSize.height; CGRect cellrect_screen = [RAUtils relativeFrameForScreenWithView:self.editingcell]; CGRect rect_screen = [ UIScreen mainScreen ].bounds; // int vpos =self.view.frame.origin.y+self.view.frame.size.height; // int loginpos = self.editingcell.frame.origin.y+self.editingcell.frame.size.height; // int cellpos = cellrect_screen.origin.y+cellrect_screen.size.height; // screen.size.height-keyboardSize.height-(cellpos_screen.origin.x+cellpos_screen.size.height); self.ioffset = cellpos-(rect_screen.size.height-keyboardSize.height);//rect_screen.size.height-keyboardSize.height-(rect_screen.origin.y+rect_screen.size.height);//keyboardSize.height -(self.view.frame.size.height-loginpos); if(self.ioffset>0) { // self.resize = true; CGPoint contentOffsetPoint = self.editorTable.contentOffset; contentOffsetPoint.y+=self.ioffset; self.editorTable.contentOffset=contentOffsetPoint; // NSTimeInterval animationDuration = 0.30f; // CGRect frame = self.view.frame; // frame.origin.y -=self.ioffset;//view的Y轴上移 // frame.size.height +=self.ioffset; //View的高度增加 // self.view.frame = frame; // [UIView beginAnimations:@"ResizeView" context:nil]; // [UIView setAnimationDuration:animationDuration]; // self.view.frame = frame; // [UIView commitAnimations];//设置调整界面的动画效果 } self.editorTable.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height-self.keyboard_h); // CGSize tablecontent =self.editorTable.contentSize; // tablecontent.height=tablecontent.height+self.keyboard_h; // self.editorTable.contentSize=tablecontent; // } // Animate the resize of the text view's frame in sync with the keyboard's appearance. // [self moveInputBarWithKeyboardHeight:keyboardRect.size.height withDuration:animationDuration]; } - (void)keyboardWillHide:(NSNotification *)notification { DebugLog(@"keyboardWillHide"); self.keyboard_show=false; NSDictionary* userInfo = [notification userInfo]; /* Restore the size of the text view (fill self's view). Animate the resize so that it's in sync with the disappearance of the keyboard. */ NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]; NSTimeInterval animationDuration; [animationDurationValue getValue:&animationDuration]; CGSize tablecontent =self.editorTable.contentSize; tablecontent.height=tablecontent.height-self.keyboard_h; // self.editorTable.contentSize=tablecontent; self.editorTable.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); self.keyboard_h= 0; DebugLog(@"before refresh %@",NSStringFromCGSize(self.editorTable.contentSize)); // if(self.resize) // { // NSTimeInterval animationDuration = 0.30f; // CGRect frame = self.view.frame; // // if(prewTag == textField.tag) //当结束编辑的View的TAG是上次的就移动 // // { //还原界面 // // moveY = prewMoveY; // frame.origin.y +=self.ioffset; // frame.size. height -=self.ioffset; // self.view.frame = frame; // // } // //self.view移回原位置 // [UIView beginAnimations:@"ResizeView" context:nil]; // [UIView setAnimationDuration:animationDuration]; // self.view.frame = frame; // [UIView commitAnimations]; // //[textField resignFirstResponder]; // self.ioffset=0; // } // [self moveInputBarWithKeyboardHeight:0.0 withDuration:animationDuration]; } @end