// // WatchListViewController.m // RedAnt ERP Mobile // // Created by Ray on 14-8-1. // Copyright (c) 2014年 United Software Applications, Inc. All rights reserved. // #import "WatchListViewController.h" #import "iSalesNetwork.h" #import "ModelItemCell.h" #import "DetailViewController.h" #import "LoginViewController.h" #import "MainViewController.h" #import "TearSheetParamViewController.h" #import "EditModelPriceViewController.h" #import "ContactListViewController.h" #import "DefaultTableHeaderView.h" #import "DefaultAppearance.h" #import "SortItemViewController.h" #import "SortButton.h" #import "UIColor+JK_HEX.h" #import "CartUtils.h" #import "PDFViewController.h" #import "JKMessageBoxController.h" #define ALERT_DEL 1025 //#import "PDFViewController.h" @interface WatchListViewController () @property (nonatomic,strong) SortItemViewController *sortItemController; @property (nonatomic,assign) int sortIndex; @property (nonatomic,strong) SortButton *sortButton; @property (nonatomic,strong) UILabel *qtyLabel; @property (nonatomic,strong) NSOperationQueue *dataOperationQueue; @property (nonatomic,copy) NSString *print_url; @end @implementation WatchListViewController - (NSOperationQueue *)dataOperationQueue { if (!_dataOperationQueue) { _dataOperationQueue = [[NSOperationQueue alloc] init]; _dataOperationQueue.maxConcurrentOperationCount = 1; } return _dataOperationQueue; } -(void) logout { self.content_data = nil; } - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } -(void) reload_container_getdata:(bool) update_data { [super reload_container_getdata:update_data]; if(update_data) [self reload_data]; else [self.itemListTable reloadData]; } - (IBAction)onAddtoCart:(id)sender { [CartUtils add_to_cart:self selectorholder:self selector:@selector(addtocart)]; return; UIApplication * app = [UIApplication sharedApplication]; AppDelegate *appDelegate = (AppDelegate *)[app delegate]; MainViewController* main_vc=(MainViewController*)appDelegate.main_vc; if(appDelegate.bLogin==false) { LoginViewController * loginvc =[ self.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"]; // loginvc.delegate = self; // loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种 loginvc.returnValue = ^(bool blogin){ // UIApplication * app = [UIApplication sharedApplication]; // AppDelegate *appDelegate = (AppDelegate *)[app delegate]; if(blogin) { if(/*appDelegate.user_type==USER_ROLE_EMPLOYEE*/ true) { [main_vc checklogin:false]; if(appDelegate.can_create_order) { NSString* msg =@""; if(appDelegate.contact_id.length>0) { msg = [msg stringByAppendingString:@"\n\nCustomer:"]; msg = [msg stringByAppendingString:appDelegate.customerInfo[@"customer_name"]]; } UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Add to cart", nil) message:msg delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Add to pending order", nil),NSLocalizedString(@"Add to new order", nil), nil]; // alert. [alert show]; } else { UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Add to cart", nil) message:NSLocalizedString(@"", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Add to pending order", nil), nil]; // alert. [alert show]; } } else { [main_vc checklogin:true]; } } // self.offset = 0; // [self.content_data removeAllObjects]; // [self loadpage]; // // [[self navigationController] setNavigationBarHidden:YES animated:NO]; }; UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:loginvc] ; // [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi]; navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种 [self presentViewController:navi animated:YES completion:^{ // navi.view.superview.bounds = CGRectMake(0, 0, 480, 320); DebugLog(@"LoginViewController present........."); // self.btop = false; // <#code#> }]; } else { if(/*appDelegate.user_type==USER_ROLE_EMPLOYEE&&/*appDelegate.contact_id==nil&&*/appDelegate.order_code==nil) { [main_vc checklogin:false]; if(appDelegate.can_create_order) { NSString* msg =@""; if(appDelegate.contact_id.length>0) { msg = [msg stringByAppendingString:@"\n\nCustomer:"]; msg = [msg stringByAppendingString:appDelegate.customerInfo[@"customer_name"]]; } UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Add to cart", nil) message:msg delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Add to pending order", nil),NSLocalizedString(@"Add to new order", nil), nil]; // alert. [alert show]; } else { UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Add to cart", nil) message:NSLocalizedString(@"", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Add to pending order", nil), nil]; // alert. [alert show]; } } else { if(appDelegate.order_code==nil) [ self neworder]; else [self addtocart]; } } } -(void) addtocart { NSMutableArray* checked = [[NSMutableArray alloc] init]; NSMutableArray* checked_iid = [[NSMutableArray alloc] init]; int count = [[self.content_data valueForKey:@"count"] intValue]; for(int i=0;i // }]; // // [self.btnselect setTitle:@"Select all"]; // // //} - (void)viewDidLoad { [super viewDidLoad]; DebugLog(@"%@",NSStringFromCGRect(self.itemListTable.frame)); 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]; [self.itemListTable addSubview:ref]; DebugLog(@"%@",NSStringFromCGRect(self.itemListTable.frame)); // [[UIToolbar appearance] setBackgroundColor: [UIColor whiteColor]]; self.label_net_err.layer.borderColor = [UIColor darkGrayColor].CGColor; self.label_net_err.layer.borderWidth = 2.0; self.label_net_err.layer.cornerRadius=15; self.label_net_err.layer.masksToBounds=true; CGPoint center = self.mum.center; self.mum.frame = CGRectMake(0, 0, 100, 100); self.mum.center = center; self.mum.backgroundColor = [UIColor colorWithHEX:0xA5A5A5 alpha:0.5]; self.mum.layer.cornerRadius = 5.0f; self.mum.layer.masksToBounds = YES; self.sortIndex = 0; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(refresh_btn_click:)]; // tap.minimumPressDuration = 0.8; //定义按的时间 [self.label_net_err addGestureRecognizer:tap]; // [self reload_data]; } -(void)manually_refresh { UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200]; if(self.isrefreshing) { [reF endRefreshing]; return; } reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Refreshing"]; [self performSelector:@selector(reload_data) withObject:nil afterDelay:1]; // DebugLog(@"refresh!!!!!!!!"); } - (IBAction)onSelectClick:(id)sender { // self.total=0; if([self.btnselect.title isEqualToString:@"Select all"]) { int count =[[self.content_data valueForKey:@"count"] intValue]; for(int i=0;i 1) { return; } dispatch_async(dispatch_get_main_queue(), ^{ if(self.isrefreshing) return; // [self.content_data removeAllObjects]; // [self.itemListTable reloadData]; self.isrefreshing=true; self.label_net_err.hidden=true; self.itemListTable.hidden=true; self.mum.center = self.view.center; self.mum.hidden = false; [self.mum startAnimating]; UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200]; [reF endRefreshing]; reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSDictionary* cart_json = [iSalesNetwork request_WatchList:self.sortIndex]; dispatch_async(dispatch_get_main_queue(), ^{ [self.mum stopAnimating]; self.isrefreshing=false; if (self.dataOperationQueue.operationCount > 1) { return ; } int result=[[cart_json valueForKey:@"result"] intValue]; self.content_data = [cart_json mutableCopy]; [self.itemListTable reloadData]; self.print_url = [cart_json objectForKey:@"wishlist_print_url"]; if(result==2||result==1||result==0) { self.itemListTable.hidden=false; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; appDelegate.wish_count =[[self.content_data valueForKey:@"count"] intValue]; } else if(result==RESULT_NET_ERROR) { self.label_net_err.hidden=false; self.itemListTable.hidden=true; } else { [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Loading Wish list" controller:self] ; } self.isrefreshing=false; }); }); }); } -(void) reload_data { __weak typeof(self) weakself = self; NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{ if (weakself) { __strong typeof(weakself) strongself = weakself; [strongself operation_reload_data]; } }]; [self.dataOperationQueue addOperation:operation]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } //-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation //{ // // [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; // // // //// [self.itemListTable reloadData]; // DebugLog(@"%@",NSStringFromCGRect(self.itemListTable.frame)); // // //} #pragma mark - Table view data source //- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section //{ // return 0; //} //- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section //{ // return 0; //} //- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section //{ // UIView* myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 0.0001)]; // return myView; // //} //- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section //{ // UIView* myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 0.0001)]; //// myView.backgroundColor = [UIColor colorWithRed:0.10 green:0.68 blue:0.94 alpha:0.7]; //// UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 90, 22)]; //// titleLabel.textColor=[UIColor whiteColor]; //// titleLabel.backgroundColor = [UIColor clearColor]; //// if(section==0) //// titleLabel.text=NSLocalizedString(@"display_items", nil); //// else //// titleLabel.text=NSLocalizedString(@"hide_items", nil); //// [titleLabel sizeToFit]; //// [myView addSubview:titleLabel]; //// // return myView; //} // //- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { // if(section==0) // return nil; // else // return @"detail section"; //} - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 33; } -(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 *sectionTitle = @"Wish List"; DefaultTableHeaderView* myView = [[DefaultTableHeaderView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 33)]; // UIButton *sortButton = [UIButton buttonWithType:UIButtonTypeCustom]; // sortButton.frame = CGRectMake(20, 5.5, (33 - 5.5 * 2), (33 - 5.5 * 2)); // [sortButton setImage:[UIImage imageNamed:@"check_1_24"] forState:UIControlStateNormal]; // [sortButton addTarget:self action:@selector(wishlistSortButtonClicked:) forControlEvents:UIControlEventTouchUpInside]; // [myView addSubview:sortButton]; [myView addSubview:self.sortButton]; UILabel *titlelabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 5.5, tableView.bounds.size.width, 22)]; titlelabel.textColor=UIColorFromRGB(color); titlelabel.textAlignment=NSTextAlignmentCenter; titlelabel.autoresizingMask=UIViewAutoresizingFlexibleWidth; titlelabel.text=sectionTitle; titlelabel.center = myView.center; myView.autoresizesSubviews=true; [myView addSubview:titlelabel]; [myView addSubview:self.qtyLabel]; return myView; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // NSDictionary * item_json = [self.content_data objectForKey:@"items"]; int count =[[self.content_data valueForKey:@"count"] intValue]; return count; } - (IBAction)imgbtnClicked:(UIButton *)sender { UITableViewCell* cell =(UITableViewCell*) sender.superview.superview; NSIndexPath * indexPath = [self.itemListTable indexPathForCell:cell]; // DebugLog(@"shouldchangeedit %d_%d",indexPath.section,indexPath.row); NSDictionary * item_json = [self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; NSString* product_id = [item_json valueForKey:@"product_id"]; NSString *name = [item_json objectForKey:@"description"]; NSRange subRange = [name rangeOfString:@"\n"]; name = [name substringToIndex:subRange.location]; DetailViewController* dvc = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController" ]; // dvc dvc.product_id=product_id; dvc.category_id=nil; dvc.ispush=true; dvc.model_name = name; [dvc reload]; [self.navigationController pushViewController:dvc animated:true]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // if(tableView==self.itemListTable) // { NSString *CellIdentifier = @"WatchListItemCell"; ModelItemCell * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; NSDictionary * item_json = [self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; NSString* img_url = [item_json valueForKey:@"img"]; NSString* description = [item_json valueForKey:@"description"]; // NSString* identifier = [item_json valueForKey:@"identifier"]; // NSString* attribute = [item_json valueForKey:@"attribute"]; // NSString* currency = [item_json valueForKey:@"currency"]; // int count =[[item_json valueForKey:@"count"] intValue]; NSString* price =[item_json valueForKey:@"tear_sheet_price"]; // cell.labelAttribute.text = attribute; // cell.labelCurrency.text = currency; cell.labelDescription.text = description; // cell.labelIdentifier.text = identifier; cell.labelPrice.text = price; // cell.editCount.text =[NSString stringWithFormat:@"%d",count]; // NSDictionary* val_json =[cadedate_json objectForKey:[NSString stringWithFormat:@"val_%d",i]]; int check = [[item_json valueForKey:@"check"] intValue]; if(check==1) cell.img_checkmark.hidden=false; else cell.img_checkmark.hidden=true; // UIImageView* iv =cell.btnImage.imageView; [cell.btnImage setBackgroundImage:[UIImage imageNamed:@"loading_s"] forState:UIControlStateNormal]; 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.btnImage setBackgroundImage:img forState:UIControlStateNormal]; // cell.btnImage.imageView.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.btnImage setBackgroundImage:img forState:UIControlStateNormal]; } else [cell.btnImage setBackgroundImage:[UIImage imageNamed:@"notfound_s"] forState:UIControlStateNormal]; }); }); } cell.backgroundColor = [UIColor whiteColor];// [UIColor whiteColor];; int qty = [item_json[@"cart_count"] integerValue]; cell.qty_Label.text = [NSString stringWithFormat:@"QTY: %d",qty]; return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { ModelItemCell* cell = (ModelItemCell*)[tableView cellForRowAtIndexPath:indexPath]; cell.selected = false; // self.dirty = true; NSMutableDictionary * item_json = [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy]; int check = [[item_json valueForKey:@"check"] intValue]; if(check==1) { [item_json setValue:@"0" forKey:@"check"]; cell.img_checkmark.hidden=true; [self.btnselect setTitle: @"Select all"]; } else { [item_json setValue:@"1" forKey:@"check"]; cell.img_checkmark.hidden=false; } [self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; } - (UITableViewCellEditingStyle)tableView:(UITableView *)tv editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { return UITableViewCellEditingStyleDelete; } //#pragma mark - UIAlertViewDelegate //// Called when a button is clicked. The view will be automatically dismissed after this call returns //- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex //{ // // // //} - (BOOL)isPureFloat:(NSString*)string{ NSScanner* scan = [NSScanner scannerWithString:string]; float val; return[scan scanFloat:&val] && [scan isAtEnd]; } #pragma mark 在滑动手势删除某一行的时候,显示出更多的按钮 - (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath { // 添加一个删除按钮 self.indexPath=indexPath; UITableViewRowAction *deleteRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Delete" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { DebugLog(@"delete click"); UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Delete confirm", nil) message:NSLocalizedString(@"Are you sure remove model from wishlist?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil]; alert.tag = ALERT_DEL; // alert. [alert show]; }]; deleteRowAction.backgroundColor = UIColorFromRGB(0x336699); // 添加一个编辑按钮 // UITableViewRowAction *editRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@" Edit "handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { // // DebugLog(@"edit click"); // // // // UIViewController* parentvc=self; // // // // // EditModelPriceViewController * vc =[ parentvc.storyboard instantiateViewControllerWithIdentifier:@"EditModelPriceViewController"]; // // // NSMutableDictionary * item_json = [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy]; // // // // vc.set_watch_list=true; // vc.discount=[[item_json valueForKey:@"discount"] floatValue]; // vc.price = [[item_json valueForKey:@"tear_sheet_price"] floatValue]; // vc.cart_id = [NSString stringWithFormat:@"%d",[[item_json valueForKey:@"item_id"] intValue]]; // // vc.delegate = parentvc.self; // // loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种 // vc.onSetValue = ^(){ // [self reload_data];//[main_vc checklogin:true]; // }; // // // UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:vc] ; // // // // // // // [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi]; // // navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种 // [parentvc presentViewController:navi animated:YES completion:^{ // // // navi.view.superview.bounds = CGRectMake(0, 0, 480, 320); // // DebugLog(@"EditModelPriceViewController present........."); // // // self.btop = false; // // <#code#> // }]; // // [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle]; // // // }]; // editRowAction.backgroundColor = UIColorFromRGB(0xff9933); AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if(appDelegate.user_type==USER_ROLE_EMPLOYEE) return @[deleteRowAction]; else return @[deleteRowAction]; } - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { } #pragma mark - UIAlertViewDelegate // Called when a button is clicked. The view will be automatically dismissed after this call returns - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { UIApplication * app = [UIApplication sharedApplication]; AppDelegate *appDelegate = (AppDelegate *)[app delegate]; // if(alertView.tag==1234) // { // // // availability warring; // // // if(buttonIndex!=alertView.cancelButtonIndex) // { // if(appDelegate.order_code==nil) // { // [self neworder]; // } // else // { // [self addtocart]; // } // } // return; // } // int count=[self.quantity_text.text intValue]; if(alertView.tag==ALERT_DEL) { if(buttonIndex!=alertView.cancelButtonIndex) { [self.itemListTable reloadRowsAtIndexPaths:@[self.indexPath]withRowAnimation:UITableViewRowAnimationMiddle]; NSMutableDictionary * item_json = [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)self.indexPath.row]] mutableCopy]; NSString *ids=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"item_id"] intValue]]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSDictionary* cart_json = [iSalesNetwork watchlist_remove:ids]; dispatch_async(dispatch_get_main_queue(), ^{ if([[cart_json valueForKey:@"result"] intValue]==2) { [self reload_data]; } else { [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Delete Model" controller:self] ; } }); }); } return; } MainViewController* main_vc=(MainViewController*)appDelegate.main_vc; if(buttonIndex==alertView.cancelButtonIndex) { } else if(buttonIndex==1) { //open exist OrderListViewController* ovc =[ self.storyboard instantiateViewControllerWithIdentifier:@"OrderListViewController"]; ovc.showNavibar = true; ovc.selectOrder = ^(NSMutableDictionary* order_detail){ if(appDelegate.order_code==nil) { [self neworder]; } else { [self addtocart]; [main_vc checklogin:true]; } }; ovc.init_style = OL_OPEN; ovc.onCancel = ^(){ [main_vc checklogin:true]; }; [self.navigationController pushViewController:ovc animated:true]; } else { //create new; if(appDelegate.customerInfo==nil)// select contact if current contact not exist { ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ]; cvc.showNavibar = true; cvc.contact_type = @"Sales_Order_Customer"; cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){ appDelegate.contact_id=[value valueForKey:@"customer_cid"]; appDelegate.customerInfo = value; if(appDelegate.order_code==nil) [self neworder]; // [main_vc checklogin:true]; // [self handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION]; // // if(self.returnValue) // self.returnValue(value); }; cvc.onCancel = ^(){ [RAUtils message_alert:@"Cannot create order without cursomer infomation." title:@"" controller:self]; }; cvc.onReset = ^(){ [main_vc checklogin:true]; }; [self.navigationController pushViewController:cvc animated:true]; } else { [self neworder]; } } } #pragma mark - sort button - (void)wishlistSortButtonClicked:(UIButton *)sender { DebugLog(@"wish list sort button clicked"); [self.view addSubview:self.sortItemController.view]; } - (SortItemViewController *)sortItemController { if (!_sortItemController) { _sortItemController = [[SortItemViewController alloc] initWithTableOrigin:CGPointMake(40, 40)]; _sortItemController.sortIndex = self.sortIndex; _sortItemController.sortData = @[ @{@"title":@"Last",@"icon":@"TX_18"}, @{@"title":@"First",@"icon":@"TS_18"}, @{@"title":@"Item number a-z",@"icon":@"IX_18"}, @{@"title":@"Item number z-a",@"icon":@"IS_18"}, @{@"title":@"Description",@"icon":@"DX_18"}, ]; __weak typeof(self) weakSelf = self; _sortItemController.sortBlock = ^(int sort){ weakSelf.sortIndex = sort; [weakSelf reload_data]; }; } // _sortItemController.sortIndex = self.sortIndex; return _sortItemController; } - (SortButton *)sortButton { if (!_sortButton) { _sortButton = [SortButton sortButtonWithHeight:33]; [_sortButton addTarget:self action:@selector(wishlistSortButtonClicked:) forControlEvents:UIControlEventTouchUpInside]; } return _sortButton; } - (void)setSortIndex:(int)sortIndex { _sortIndex = sortIndex; NSString *selectedImageName = @""; switch (sortIndex) { case 0:{ selectedImageName = @"TX_22"; } break; case 1:{ selectedImageName = @"TS_22"; } break; case 2:{ selectedImageName = @"IX_22"; } break; case 3:{ selectedImageName = @"IS_22"; } break; case 4:{ selectedImageName = @"DX_22"; } break; default: break; } self.sortButton.imageView.image = [UIImage imageNamed:selectedImageName]; } - (UILabel *)qtyLabel { if (!_qtyLabel) { _qtyLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.itemListTable.bounds.size.width - 200, 5.5, 40, 22)]; _qtyLabel.text = @"QTY"; _qtyLabel.textAlignment = NSTextAlignmentCenter; _qtyLabel.autoresizingMask= UIViewAutoresizingFlexibleLeftMargin; } return _qtyLabel; } #pragma mark - rotation - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { self.sortItemController.view.frame = self.view.bounds; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; } - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { self.sortItemController.view.frame = self.view.bounds; self.qtyLabel.frame = CGRectMake(self.itemListTable.bounds.size.width - 200, 5.5, 40, 22); } #pragma mark - Action - (IBAction)printWishlistClick:(UIBarButtonItem *)sender { if (self.print_url.length == 0) { [RAUtils message_alert:@"There is no resource to print" title:@"Warning" controller:self]; } PDFViewController *ViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PDFViewController"]; ViewController.url = self.print_url; ViewController.canSave = false; ViewController.isLocalfile=NO; NSString* subject; NSString* cur_time =[RAUtils current_date]; subject =@"Wishlist Print"; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; NSString* customer_email= [appDelegate.customerInfo valueForKey:@"customer_email"]; NSMutableArray* send_to = [[NSMutableArray alloc]init]; if(customer_email.length>0) { send_to=[[customer_email componentsSeparatedByString:NSLocalizedString(@";", nil)] mutableCopy]; } ViewController.mail_to = send_to; ViewController.attachment_name = [NSString stringWithFormat:@"NPD_Wish_List %@.pdf",cur_time]; ViewController.mail_subject = subject; ViewController.hidenavi = false; [self.navigationController pushViewController:ViewController animated:YES]; } - (IBAction)emailWishlistClick:(UIBarButtonItem *)sender { JKMessageBoxController *emailAddrVC = [JKMessageBoxController messageBoxControllerWithTip:@"Please enter email address"]; emailAddrVC.textFiled.secureTextEntry = NO; emailAddrVC.yesButtonTitle = @"send"; __weak typeof(emailAddrVC) weakVC = emailAddrVC; __weak typeof(self) weakself = self; emailAddrVC.textHandler = ^(NSString *text){ // 验证邮箱格式是否正确 // NSString *match = EMAIL_MATCHES; // NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",match]; // BOOL isEmailAddr = [predicate evaluateWithObject:text]; BOOL isEmailAddr = YES; if (isEmailAddr) { // 验证是邮件地址,发送邮件 [weakVC dismissViewControllerAnimated:YES completion:^{ UIAlertView *waitting_alert = [RAUtils waiting_alert:@"Sending Email" title:@"Waiting"]; dispatch_async(dispatch_get_global_queue(0, 0), ^{ NSDictionary *result = [iSalesNetwork quoteWishlist2EmailAddr:text]; DebugLog(@"email wishlist result: %@",result); dispatch_async(dispatch_get_main_queue(), ^{ [waitting_alert dismissWithClickedButtonIndex:0 animated:YES]; if ([[result objectForKey:@"result"] integerValue] != RESULT_TRUE) { UIAlertController *errorAlertVC = [UIAlertController alertControllerWithTitle:@"Warning" message:[NSString stringWithFormat:@"The email send to %@ failed",text] preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *action = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { }]; [errorAlertVC addAction:action]; [weakself presentViewController:errorAlertVC animated:YES completion:nil]; }else { [RAUtils message_alert:@"Send Email Success" title:@"Message" controller:weakself]; } }); }); }]; } else { // 非邮件地址,警告 [weakVC warning:@"Please enter right email address"]; } }; [self presentViewController:emailAddrVC animated:YES completion:nil]; } @end