// // CategoryViewController.m // RedAnt ERP Mobile // // Created by Ray on 14-5-27. // Copyright (c) 2014年 United Software Applications, Inc. All rights reserved. // #import "CategoryViewController.h" #import "CategorySearchFilterViewController.h" #import "DetailHeaderCell.h" #import "DetailImageCell.h" #import "iSalesNetwork.h" #import "DetailTopicCell.h" #import "RTLabel.h" #import "DetailKVCell.h" #import "LineView.h" #import "PopupNavigationController.h" #import "RAViewController.h" #import "LoginViewController.h" #import "ContactListViewController.h" //#import "RAUtils.h" #import "OrderListViewController.h" //#import "CategoryCellLarge.h" //#import "CategoryCellSmall.h" #import "DetailViewController.h" #import "CategoryCellNPD.h" #import "DefaultAppearance.h" #import "MainViewController.h" //#import "ScannerViewController.h" #import "UIColor+JK_HEX.h" #import "CartUtils.h" #define DEF_CELL_HEIGHT 44 #define DEF_TABLE_HEIGHT 44 #define LINE_WIDTH 0 #define CELL_MARGIN 0 #define LABEL_MARGIN 5 @interface CategoryViewController () @property (nonatomic,assign) BOOL addAll; @property (nonatomic,strong) NSOperationQueue *dataOperationQueue; @property (nonatomic,assign) UIInterfaceOrientation toOrientation;///<屏幕将要旋转到的方向 @end @implementation CategoryViewController - (NSOperationQueue *)dataOperationQueue { if (!_dataOperationQueue) { _dataOperationQueue = [[NSOperationQueue alloc] init]; _dataOperationQueue.maxConcurrentOperationCount = 1; } return _dataOperationQueue; } -(void) logout { self.offset = 0; self.category_data=nil; } - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } -(void)begin_select { // self.addCartBtn.enabled=false; // self.addWishBtn.enabled=false; // self.addPortfolioBtn.enabled=false; self.selectToolbar.hidden=false; // self.collectionview.allowsMultipleSelection = YES; self.isSelectionMode=true; self.select_count=0; } -(void)end_select:(int) type { self.select_count=0; self.selectToolbar.hidden=true; // self.collectionview.allowsMultipleSelection = NO; NSMutableDictionary* items =[[self.category_data objectForKey:@"items"] mutableCopy]; int count = [[items valueForKey:@"count"] intValue]; for(int i=0;iMultiple Category>"; } // idArr = [idArr sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { // // NSString *id0 = (NSString *)obj1; // NSString *id1 = (NSString *)obj2; // // if (id1.length > id0.length && [id1 hasPrefix:id0]) { // return NSOrderedAscending; // } // // return NSOrderedDescending; // return NSOrderedAscending; // }]; // self.cagegoryLabel.text =self.categoryString; self.categoryid = ids; #endif self.modelname = modelname; self.modeldescrip = modeldescrip; self.p_alert=alert; self.p_QTY=QTY; self.p_available=available; self.p_price=price; self.p_bestseller=bestseller; self.offset = 0; [self reload]; }; filterVC.ResetClick =^() { self.modelname = nil; self.modeldescrip = nil; self.p_alert=nil; self.p_QTY=nil; self.p_available=nil; self.p_price=nil; self.p_bestseller=nil; self.offset = 0; [self reload]; }; UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:filterVC] ; navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种 [self presentViewController:navi animated:YES completion:^{ // navi.view.superview.bounds = CGRectMake(0, 0, 480, 320); DebugLog(@"bundle present........."); // self.btop = false; // <#code#> }]; } - (IBAction)onSelectClick:(id)sender { [self begin_select]; } - (IBAction)onCancelSelectClick:(id)sender { [self end_select:0]; } - (IBAction)onSelectAllClick:(id)sender { // int tag =self.selectallBtn.tag; if(self.category_data==nil) return; NSMutableDictionary* items =[[self.category_data objectForKey:@"items"] mutableCopy]; if(items==nil) return; int count = [[items valueForKey:@"count"] intValue]; NSString* checked; if (self.selectallBtn.tag == 0) { self.selectallBtn.tag = 1; [self.selectallBtn setTitle:@"Deselect"]; if(count>0) { // self.addWishBtn.enabled = true; // self.addCartBtn.enabled = true; // self.addPortfolioBtn.enabled=true; } self.select_count=count; checked=@"true"; } else { self.selectallBtn.tag = 0; [self.selectallBtn setTitle:@"Select"]; // self.addWishBtn.enabled = false; // self.addCartBtn.enabled = false; // self.addPortfolioBtn.enabled=false; checked=@"false"; } for(int i=0;i0) { 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:false]; [self addtocart]; } } // 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) neworder { UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Create Order"]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSDictionary* return_json = [iSalesNetwork new_Order]; dispatch_async(dispatch_get_main_queue(), ^{ [waitalert dismissWithClickedButtonIndex:0 animated:FALSE]; if([[return_json valueForKey:@"result"] intValue]==2) { int result=[[return_json valueForKey:@"result"] intValue]; if(result==2) { //successed. NSString* order_code = [return_json valueForKey:@"orderCode"]; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; appDelegate.order_code = order_code; [self addtocart]; // [self ReloadData]; // if(self.shopCartBlock!=nil) // { // UIImage* img=[self photoStackView:self.photoStack photoForIndex:0]; // // // CGRect iv_rect = CGRectMake(self.btnaddCart.center.x-50, self.btnaddCart.center.y-50, 100, 100); // UIImageView* iv = [[UIImageView alloc] initWithFrame:iv_rect]; // iv.image = img; // // [self.contentView addSubview:iv]; // self.shopCartBlock(iv); // // } } } else { [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Add To Cart" controller:self] ; } }); }); } - (IBAction)onAddPortfolioClick:(id)sender { 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){ if(blogin) { [main_vc checklogin:false]; [self checkToolBar]; [self addtoportfolio]; } }; 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 { [self addtoportfolio]; } } - (IBAction)onAddWishlistClick:(id)sender { 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){ if(blogin) { [main_vc checklogin:false]; [self addtowish]; } }; 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 { [self addtowish]; } } -(void) addtocart { NSMutableDictionary* items =[[self.category_data objectForKey:@"items"] mutableCopy]; int count = [[items valueForKey:@"count"] intValue]; NSMutableArray* checked = [[NSMutableArray alloc] init]; for(int i=0;i 1) { return ; } dispatch_async(dispatch_get_main_queue(), ^{ if(self.loadall) { if(self.showalert) { self.showalert=false; [RAUtils message_alert:@"All loaded" title:@"Loading Category" controller:self] ; } return; } self.mum.hidden = false; [self.mum startAnimating]; self.mum.center = self.view.center; self.isrefreshing=true; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSDictionary* category_more=[iSalesNetwork Category:self.categoryid customid:0 price_template:0 sort:0 filter:nil keyword:nil offset:self.offset limit:20 alert:self.p_alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller modelname:self.modelname modeldescrip:self.modeldescrip] ; dispatch_async(dispatch_get_main_queue(), ^{ [self.mum stopAnimating]; self.isrefreshing=false; if (self.dataOperationQueue.operationCount > 1) { return ; } NSDictionary* more_items=[category_more objectForKey:@"items"]; if([[category_more valueForKey:@"result"] intValue]==2) { // self.category_data = category_data; NSMutableDictionary* items_json= [[self.category_data objectForKey:@"items"] mutableCopy]; int count =[[more_items valueForKey:@"count"] intValue]; for(int i=0;i 1) { return; } dispatch_async(dispatch_get_main_queue(), ^{ if(self.isrefreshing) return; self.showalert=true; self.isrefreshing=true; self.loadall = false; // UICollectionViewFlowLayout* layout =(UICollectionViewFlowLayout*)self.collectionview.collectionViewLayout; // UICollectionViewFlowLayout *flowLayout =[self.collectionview collectionViewLayout]; // layout.scrollDirection= UICollectionViewScrollDirectionVertical; UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200]; [reF endRefreshing]; reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"]; // // self.mum.hidden = false; [self.mum startAnimating]; self.mum.center = self.view.center; self.label_net_err.hidden=true; self.collectionview.hidden=true; // self.collectionview.userInteractionEnabled = false; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSDictionary* category_data=[iSalesNetwork Category:self.categoryid customid:0 price_template:0 sort:0 filter:nil keyword:nil offset:0 limit:20 alert:self.p_alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller modelname:self.modelname modeldescrip:self.modeldescrip]; dispatch_async(dispatch_get_main_queue(), ^{ [self.mum stopAnimating]; self.isrefreshing=false; if (self.dataOperationQueue.operationCount > 1) { return ; } // self.collectionview.userInteractionEnabled = true; self.category_data = [category_data mutableCopy]; [self.collectionview reloadData]; if([[category_data valueForKey:@"result"] intValue]==2) { self.collectionview.hidden=false; NSDictionary * item_json = [self.category_data objectForKey:@"items"]; self.offset =[[item_json valueForKey:@"count"] intValue]; int total = [[self.category_data valueForKey:@"item_total_count"]intValue]; if(total<2) self.labelTotal.text = [NSString stringWithFormat:@"Total %d item",total]; else self.labelTotal.text = [NSString stringWithFormat:@"Total %d items",total]; } else if([[category_data valueForKey:@"result"] intValue]==RESULT_NET_ERROR) { self.collectionview.hidden=true; self.label_net_err.hidden=false; } else { [RAUtils message_alert:[category_data valueForKey:@"err_msg"] title:@"Loading Category" controller:self] ; } }); }); }); } } -(void) reload { __weak typeof(self) weakself = self; NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{ if (weakself) { __strong typeof(weakself) strongself = weakself; [strongself operation_reload]; } }]; [self.dataOperationQueue addOperation:operation]; } #pragma mark - CategoryMenuDelegate -(void)SelectCategory:(NSString *)category { //[self switchToCagegory:category]; } -(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; UIInterfaceOrientation orientation = [[UIApplication sharedApplication]statusBarOrientation]; if (UIInterfaceOrientationIsLandscape(orientation)|| UIInterfaceOrientationIsPortrait(orientation)) { self.orientation = orientation; [self.collectionview.collectionViewLayout invalidateLayout]; DebugLog(@"routed"); } } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; self.toOrientation = toInterfaceOrientation; [self.collectionview.collectionViewLayout invalidateLayout]; } - (IBAction)onCategoryClick:(id)sender { RAViewController * categorymenuVC =[ self.storyboard instantiateViewControllerWithIdentifier:@"RAViewController"]; // categorymenuVC.rootViewController = self; categorymenuVC.CateMenu_delegate = self; categorymenuVC.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种 [self presentViewController:categorymenuVC animated:YES completion:^{ DebugLog(@"login........."); // <#code#> }]; [categorymenuVC SetMenu:self.categoryMenu]; } // //- (IBAction)onSortClick:(id)sender { // // // NSMutableDictionary* sort_json = [self.category_data objectForKey:@"sort"]; // // NSDictionary* item_json =[section_json objectForKey:[NSString stringWithFormat:@"item_%d",indexPath.row ]]; // // NSString* control = [item_json valueForKey:@"control"]; // // if([control isEqualToString:@"enum"])//||[control isEqualToString:@"ui"]) // // { // // // NSDictionary * item_json = [self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",indexPath.row]]; // // NSDictionary* cadedate_json = [sort_json objectForKey:@"cadedate"]; // // NSDictionary* value_json = [item_json objectForKey:@"value"]; // // NSString* single_select = [item_json valueForKey:@"single_select"]; // // NSString* required =[item_json valueForKey:@"required"]; // // // // EnumSelectViewController* enumvc =[ self.storyboard instantiateViewControllerWithIdentifier:@"EnumSelectorViewController"]; // // if([[required lowercaseString] isEqualToString:@"true"]) // // enumvc.canbeEmpty = false; // // else // // enumvc.canbeEmpty =true; // enumvc.cadedate = [sort_json mutableCopy]; // // enumvc.value = [value_json mutableCopy]; // enumvc.single_select =true; // enumvc.auto_close = true; // enumvc.title = @"sort"; // enumvc.is_dialog = true; // // // enumvc.returnValue = ^(NSMutableDictionary* value, int idx){ // [self.category_data setObject:value forKey:@"sort"]; // // DebugLog(@"点击了第%d个",pageIndex); // }; // // /// PopupNavigationController * navi=[[PopupNavigationController alloc] initWithRootViewController:enumvc]; // // // self.aBNewPersonNav = [[UINavigationController alloc] initWithRootViewController:enumvc] ; // // enumvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种 // // // enumvc.delegate = self; // [self presentViewController:enumvc animated:YES completion:^{ // // DebugLog(@"login........."); // // <#code#> // }]; // // [self.navigationController pushViewController:enumvc animated:true]; // //} -(void)viewWillLayoutSubviews { // if(self.showDetail==true) // { // UIInterfaceOrientation orientation =[UIApplication sharedApplication].statusBarOrientation; // int width=175; // // int height; // if(orientation == UIDeviceOrientationLandscapeLeft ||orientation == UIDeviceOrientationLandscapeRight) // { // width = 370; // // height = 400; // } // else // { // // height = 300; // width = 175; // } // // // CGRect frame = CGRectMake(0, 64, width, self.view.bounds.size.height-64); // // self.collectionview.frame=frame; // // // // CGRect framedetail = CGRectMake(width,64 ,self.view.bounds.size.width-width,self.view.bounds.size.height-64); // self.detailView.frame = framedetail; // } self.headerView.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.headerView.bounds].CGPath; self.collectionview.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.collectionview.bounds].CGPath; } -(void) showCategory { if(self.showDetail==false) return; // UIInterfaceOrientation orientation =[UIApplication sharedApplication].statusBarOrientation; // int width=175; // // int height; // if(orientation == UIDeviceOrientationLandscapeLeft ||orientation == UIDeviceOrientationLandscapeRight) // { // width = 370; // // height = 400; // } // else // { // // height = 300; // width = 175; // } // CGRect frame = CGRectMake(0, 48, self.view.bounds.size.width , self.view.bounds.size.height-48); [UIView animateWithDuration:0.5 animations:^{ self.collectionview.frame=frame; }]; self.collectionview.autoresizingMask = self.collectionview.autoresizingMask | UIViewAutoresizingFlexibleWidth; self.showDetail = false; self.cagegoryLabel.hidden = false; } - (IBAction)onChangeDisplay:(UIButton *)sender { UICollectionViewFlowLayout *flowLayout =(UICollectionViewFlowLayout*)[self.collectionview collectionViewLayout]; flowLayout.scrollDirection= UICollectionViewScrollDirectionVertical; if(sender.tag==2&&self.categoryViewType != CATEGORY_VIEWTYPE_SMALL) { self.categoryViewType = CATEGORY_VIEWTYPE_SMALL; // [self.collectionview.collectionViewLayout invalidateLayout]; // DebugLog(@"frame %f",self.collectionview.frame.size.height); // DebugLog(@"offset %f",self.self.collectionview.contentOffset.y); // DebugLog(@"content %f",self.collectionview.contentSize.height); // float pos =self.collectionview.contentOffset.y/self.collectionview.contentSize.height; [self.collectionview reloadData]; // CGPoint offset = self.collectionview.contentOffset; // offset.y=pos*self.collectionview.contentSize.height; // self.collectionview.contentOffset=offset; } else if(sender.tag==3&&self.categoryViewType != CATEGORY_VIEWTYPE_LARGE) { self.categoryViewType = CATEGORY_VIEWTYPE_LARGE; // DebugLog(@"frame %f",self.collectionview.frame.size.height); // DebugLog(@"offset %f",self.self.collectionview.contentOffset.y); // DebugLog(@"content %f",self.collectionview.contentSize.height); // float pos =self.collectionview.contentOffset.y/self.collectionview.contentSize.height; // [self.collectionview reloadData]; // [self.collectionview.collectionViewLayout invalidateLayout]; [self.collectionview reloadData]; // CGPoint offset = self.collectionview.contentOffset; // offset.y=pos*self.collectionview.contentSize.height; // self.collectionview.contentOffset=offset; // // self.collectionview move } else if(sender.tag==4&&self.categoryViewType != CATEGORY_VIEWTYPE_LIST) { self.categoryViewType = CATEGORY_VIEWTYPE_LIST; // DebugLog(@"frame %f",self.collectionview.frame.size.height); // DebugLog(@"offset %f",self.self.collectionview.contentOffset.y); // DebugLog(@"content %f",self.collectionview.contentSize.height); // float pos =self.collectionview.contentOffset.y/self.collectionview.contentSize.height; // [self.collectionview reloadData]; // [self.collectionview.collectionViewLayout invalidateLayout]; [self.collectionview reloadData]; // CGPoint offset = self.collectionview.contentOffset; // offset.y=pos*self.collectionview.contentSize.height; // self.collectionview.contentOffset=offset; // // self.collectionview move } [self showCategory]; // [self showCategory]; } - (void)checkToolBar { // customer 隐藏add to portfolio AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate; NSMutableArray *items = [self.selectToolbar.items mutableCopy]; if (appDelegate.user && appDelegate.user_type == USER_ROLE_CUSTOMER) { if ([items containsObject:self.addPortfolioBtn]) { [items removeObject:self.addPortfolioBtn]; self.selectToolbar.items = items; } } else { if (![items containsObject:self.addPortfolioBtn]) { [items insertObject:self.addPortfolioBtn atIndex:4]; self.selectToolbar.items = items; } } } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[self navigationController] setNavigationBarHidden:YES animated:NO]; // AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; // // [appDelegate test_onDecodedDataResult:@"371252"]; [self checkToolBar]; self.toOrientation = [[UIApplication sharedApplication] statusBarOrientation]; // [self.collectionview scrollToItemAtIndexPath:self.selectedIndexPath atScrollPosition:16 animated:YES]; [self.collectionview layoutIfNeeded]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; } - (void)viewDidLoad { [super viewDidLoad]; self.toOrientation = [[UIApplication sharedApplication] statusBarOrientation]; self.refresh_type = REFRESH_NONE; 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; self.addWishBtn.enabled = true; self.addCartBtn.enabled = true; self.addPortfolioBtn.enabled=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.addAll = NO; [self.addAllCheckBtn setImage:[[UIImage imageNamed:@"check_0_24"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(refresh_btn_click:)]; // tap.minimumPressDuration = 0.8; //定义按的时间 [self.label_net_err addGestureRecognizer:tap]; // self.detailView.hidden = true; self.selectallBtn.possibleTitles = [NSSet setWithObjects:@"Selece", @"Deselect", nil]; self.categoryViewType = CATEGORY_VIEWTYPE_SMALL; UICollectionViewFlowLayout* layout =(UICollectionViewFlowLayout*)self.collectionview.collectionViewLayout; CGSize cellsize = CGSizeMake(175, 250); layout.itemSize =cellsize; layout.minimumLineSpacing = 15; self.collectionview.collectionViewLayout = layout; // self.display_type = [[NSMutableDictionary alloc] init]; [self.display_type setValue:@3 forKey:@"count"]; NSMutableDictionary* val_0 = [[NSMutableDictionary alloc] init]; [val_0 setValue:@1 forKey:@"check"]; [val_0 setValue:@"small icon" forKey:@"value"]; [val_0 setValue:@"" forKey:@"img"]; [self.display_type setObject:val_0 forKey:@"val_0"]; NSMutableDictionary* val_1 = [[NSMutableDictionary alloc] init]; [val_1 setValue:@0 forKey:@"check"]; [val_1 setValue:@"large icon" forKey:@"value"]; [val_1 setValue:@"" forKey:@"img"]; [self.display_type setObject:val_1 forKey:@"val_1"]; NSMutableDictionary* val_2 = [[NSMutableDictionary alloc] init]; [val_2 setValue:@2 forKey:@"check"]; [val_2 setValue:@"detail" forKey:@"value"]; [val_2 setValue:@"" forKey:@"img"]; [self.display_type setObject:val_2 forKey:@"val_2"]; // self.collectionview. self.cagegoryLabel.text = self.categoryString; self.showDetail = false; //添加边框 // CALayer *layer = [self.collectionview layer]; // layer.borderColor = [[UIColor redColor] CGColor]; // layer.borderWidth = 5.0f; self.headerView.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.headerView.bounds].CGPath; self.headerView.layer.masksToBounds = false; //添加四个边阴影 self.headerView.layer.shadowColor = [UIColor grayColor].CGColor; self.headerView.layer.shadowOffset = CGSizeMake(0, 0); self.headerView.layer.shadowOpacity = 0.5; self.headerView.layer.shadowRadius = 2.0; //添加两个边阴影 self.collectionview.layer.masksToBounds = false; self.collectionview.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.collectionview.bounds].CGPath; self.collectionview.layer.shadowColor = [UIColor grayColor].CGColor; self.collectionview.layer.shadowOffset = CGSizeMake(0, 0); self.collectionview.layer.shadowOpacity = 0.5; self.collectionview.layer.shadowRadius = 2.0; 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.collectionview addSubview:ref]; // // self.detailTable.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.detailTable.bounds.size.width, 0.0001)]; // // self.detailTable.sectionHeaderHeight = 0.0001; // self.detailTable.sectionFooterHeight = 0.0001; // self.detailTable.dis // self.detailTable.tableHeaderView //self.automaticallyAdjustsScrollViewInsets = false; //self.edgesForExtendedLayout = UIRectEdgeNone; //detailview // // self.photoStack = [self.storyboard instantiateViewControllerWithIdentifier:@"PhotoStackViewController"]; // // self.photoStack.view.frame =CGRectMake(0, 0, self.detailView.frame.size.width, 400); // //view.autoresizingMask = UIViewAutoresizingFlexibleHeight |UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleBottomMargin; //// [self.photoStack itemCount:8]; //// self.photoStack.view.frame = CGRectMake(0, 330, width, 2 * 230+29+20+20); //// self.photoStack.TopicCollection.frame =CGRectMake(0, 20+29, width, 2 * 230); //// self.photoStack.topicTitle.text = @"New!"; // // [self.detailView addSubview:self.photoStack.view]; // // Do any additional setup after loading the view. } -(void)manually_refresh { UIRefreshControl *reF = (UIRefreshControl *)[self.collectionview viewWithTag:200]; // UIRefreshControl *reF1 = (UIRefreshControl *)[self.view viewWithTag:200]; // // // UIViewController* vc1=[RAUtils getViewController:reF]; // UIViewController* vc2=[RAUtils getViewController:reF1]; reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Refreshing"]; [self performSelector:@selector(ReloadData) withObject:nil afterDelay:1]; // DebugLog(@"refresh!!!!!!!!"); } -(void) ReloadData { UIRefreshControl *reF = (UIRefreshControl *)[self.collectionview viewWithTag:200]; [reF endRefreshing]; reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"]; [self reload]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark -- UICollectionViewDataSource -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { // 每个Section的item个数 NSDictionary * item_json = [self.category_data objectForKey:@"items"]; int count =[[item_json valueForKey:@"count"] intValue]; return count; } -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { return 1; } -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { NSString* value =[DefaultAppearance get_noneappearance_value:@"CategoryViewController" valuename:@"cell_border_color"]; if(value==nil) value=@""; unsigned long color = strtoul([value UTF8String],0,16); if(self.categoryViewType == CATEGORY_VIEWTYPE_SMALL) { static NSString * CellIdentifier = @"CategoryCellNPD"; CategoryCellNPD * cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath]; NSDictionary * item_json =[[self.category_data objectForKey:@"items" ] objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; // NSString* img_url =[item_json valueForKey:@"img"]; NSString* description =[item_json valueForKey:@"description"]; NSString* name =[item_json valueForKey:@"name"]; bool wish_exist = [[item_json valueForKey:@"wish_exists"]boolValue]; bool cart_exists = [[item_json valueForKey:@"cart_exists"]boolValue]; bool closeout = [[item_json valueForKey:@"is_closeout"]boolValue]; BOOL more_color = [[item_json valueForKey:@"more_color"] boolValue]; cell.mark_moreColor.hidden = !more_color; if(wish_exist) cell.mark_wish.hidden=false; else cell.mark_wish.hidden=true; if(cart_exists) cell.mark_order.hidden=false; else cell.mark_order.hidden=true; if(closeout) cell.mark_closeout.hidden=false; else cell.mark_closeout.hidden=true; // NSString* old_price =[item_json valueForKey:@"old_price"]; // NSString* price =[item_json valueForKey:@"price"]; bool checked =[[item_json valueForKey:@"checked"] boolValue]; if(!checked) { cell.checkImageView.hidden = true; [cell setBackgroundColor:[UIColor whiteColor]/* UIColorFromRGB(0x996633)*/]; } else { cell.checkImageView.hidden = false; [cell setBackgroundColor: UIColorFromRGB(0x009966)]; } cell.nameLabel.text = description; cell.modelNoLabel.text=name; // cell.cellDescription.text = description; // cell.oldPrice.text = old_price; // cell.Price.text = price; cell.layer.borderColor = UIColorFromRGB(color).CGColor; cell.layer.borderWidth = 0.5; //cell.layer.cornerRadius=15; cell.layer.masksToBounds=true; return cell; } else if(self.categoryViewType == CATEGORY_VIEWTYPE_LARGE) { static NSString * CellIdentifier = @"CategoryCellNPDLarge"; CategoryCellNPD * cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath]; NSDictionary * item_json =[[self.category_data objectForKey:@"items" ] objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; // NSString* img_url =[item_json valueForKey:@"img_big"]; NSString* description =[item_json valueForKey:@"description"]; NSString* name =[item_json valueForKey:@"name"]; // NSString* old_price =[item_json valueForKey:@"old_price"]; // NSString* price =[item_json valueForKey:@"price"]; bool checked =[[item_json valueForKey:@"checked"] boolValue]; bool wish_exist = [[item_json valueForKey:@"wish_exists"]boolValue]; bool cart_exists = [[item_json valueForKey:@"cart_exists"]boolValue]; bool closeout = [[item_json valueForKey:@"is_closeout"]boolValue]; BOOL more_color = [[item_json valueForKey:@"more_color"] boolValue]; cell.mark_moreColor.hidden = !more_color; if(wish_exist) cell.mark_wish.hidden=false; else cell.mark_wish.hidden=true; if(cart_exists) cell.mark_order.hidden=false; else cell.mark_order.hidden=true; if(closeout) cell.mark_closeout.hidden=false; else cell.mark_closeout.hidden=true; if(!checked) { cell.checkImageView.hidden = true; [cell setBackgroundColor: /*UIColorFromRGB(0x996633)*/[UIColor whiteColor]]; } else { cell.checkImageView.hidden = false; [cell setBackgroundColor: UIColorFromRGB(0x009966)]; } cell.nameLabel.text = description; cell.modelNoLabel.text=name; // cell.cellDescription.text = description; // cell.oldPrice.text = old_price; // cell.Price.text = price; cell.layer.borderColor = UIColorFromRGB(color).CGColor; cell.layer.borderWidth = 0.5; //cell.layer.cornerRadius=15; cell.layer.masksToBounds=true; return cell; } else { static NSString * CellIdentifier = @"CategoryCellNPDList"; CategoryCellNPD * cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath]; NSDictionary * item_json =[[self.category_data objectForKey:@"items" ] objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; // NSString* img_url =[item_json valueForKey:@"img"]; NSString* description =[item_json valueForKey:@"description"]; NSString* name =[item_json valueForKey:@"name"]; bool wish_exist = [[item_json valueForKey:@"wish_exists"]boolValue]; bool cart_exists = [[item_json valueForKey:@"cart_exists"]boolValue]; bool closeout = [[item_json valueForKey:@"is_closeout"]boolValue]; BOOL more_color = [[item_json valueForKey:@"more_color"] boolValue]; cell.mark_moreColor.hidden = !more_color; if(wish_exist) cell.mark_wish.hidden=false; else cell.mark_wish.hidden=true; if(cart_exists) cell.mark_order.hidden=false; else cell.mark_order.hidden=true; if(closeout) cell.mark_closeout.hidden=false; else cell.mark_closeout.hidden=true; // NSString* old_price =[item_json valueForKey:@"old_price"]; // NSString* price =[item_json valueForKey:@"price"]; bool checked =[[item_json valueForKey:@"checked"] boolValue]; if(!checked) { cell.checkImageView.hidden = true; [cell setBackgroundColor: [UIColor whiteColor]]; } else { cell.checkImageView.hidden = false; [cell setBackgroundColor: UIColorFromRGB(0x009966)]; } cell.nameLabel.text = description; cell.modelNoLabel.text=name; // cell.cellDescription.text = description; // cell.oldPrice.text = old_price; // cell.Price.text = price; cell.layer.borderColor = UIColorFromRGB(color).CGColor; cell.layer.borderWidth = 0.5; // cell.layer.cornerRadius=15; cell.layer.masksToBounds=true; return cell; } } - (void)collectionCell:(CategoryCellNPD *)cell setImageForIndexPath:(NSIndexPath *)indexPath { NSDictionary * item_json =[[self.category_data objectForKey:@"items" ] objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; NSString* img_url =[item_json valueForKey:@"img"]; NSString* file_name=[img_url lastPathComponent]; NSString *loading = @"loading_l"; NSString *notFound = @"notfound_l"; if (self.categoryViewType == CATEGORY_VIEWTYPE_LARGE) { loading = @"loading_l"; notFound = @"notfound_l"; } else if (self.categoryViewType == CATEGORY_VIEWTYPE_SMALL) { loading = @"loading_s"; notFound = @"notfound_s"; } if (![cell.imageName isEqualToString:img_url]) { cell.imageName = img_url; cell.cellImageView.image = [UIImage imageNamed:loading]; NSData* img_data=[iSalesDB load_cached_img:file_name loadFrom:img_url]; if(img_data!=nil) { UIImage * img =[UIImage imageWithData:img_data]; cell.cellImageView.image = img; } else { AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSData* downloadimg_data = nil; if (!appDelegate.offline_mode) { 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.cellImageView.image = img; } else cell.cellImageView.image = [UIImage imageNamed:notFound]; }); }); } } } - (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath { CategoryCellNPD * son_cell = (CategoryCellNPD *)cell; son_cell.imageName = nil; [self collectionCell:son_cell setImageForIndexPath:indexPath]; } - (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath { CategoryCellNPD * son_cell = (CategoryCellNPD *)cell; NSString *loading = @"loading_l"; if (self.categoryViewType == CATEGORY_VIEWTYPE_LARGE) { loading = @"loading_l"; } else if (self.categoryViewType == CATEGORY_VIEWTYPE_SMALL) { loading = @"loading_s"; } son_cell.cellImageView.image = [UIImage imageNamed:loading]; } #pragma mark --UICollectionViewDelegateFlowLayout ////定义每个UICollectionView 的大小 //- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath //{ // return CGSizeMake(96, 100); //} //定义每个UICollectionView 的 margin - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { UIInterfaceOrientation orientation = [[UIApplication sharedApplication]statusBarOrientation]; orientation = self.toOrientation; // 避免横排转竖屏时UICollectionViewFlowLayoutBreakForInvalidSizes警告 if (UIInterfaceOrientationIsLandscape(orientation)) { // DebugLog(@"横"); // if(self.showDetail) // return CGSizeMake(96, 100); if(self.categoryViewType ==CATEGORY_VIEWTYPE_LARGE) return CGSizeMake(328, 391); else if(self.categoryViewType ==CATEGORY_VIEWTYPE_LIST) return CGSizeMake(1024, 120); return CGSizeMake(193, 269); } else if(UIInterfaceOrientationIsPortrait(orientation)) { // DebugLog(@"竖"); // if(self.showDetail) // return CGSizeMake(96, 100); if(self.categoryViewType ==CATEGORY_VIEWTYPE_LARGE) return CGSizeMake(369, 440); else if(self.categoryViewType ==CATEGORY_VIEWTYPE_LIST) return CGSizeMake(768, 120); return CGSizeMake(180, 251); } DebugLog(@"error , %ld",(long)orientation ); return CGSizeMake(96, 100); } - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { if(self.categoryViewType ==CATEGORY_VIEWTYPE_LIST) return 1; return 15; } -(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { if(self.showDetail) return UIEdgeInsetsMake(10, 5, 10, 5); // if(self.categoryViewType ==CATEGORY_VIEWTYPE_LIST) // return UIEdgeInsetsMake(1, 1, 1, 1); if(self.categoryViewType ==CATEGORY_VIEWTYPE_LARGE) return UIEdgeInsetsMake(10, 10, 10, 10); else if(self.categoryViewType ==CATEGORY_VIEWTYPE_LIST) return UIEdgeInsetsMake(10, 0, 10, 0); return UIEdgeInsetsMake(10, 10, 10, 10); return UIEdgeInsetsMake(10, 10, 10, 10); } -(void) reload_container_getdata:(bool) update_data { if(self.disable_refresh) return; [super reload_container_getdata:update_data]; if(update_data) { [self reload]; } else { [self.collectionview reloadData]; } // if(!self.showDetail) // return; // NSArray* a= self.childViewControllers; // // for (int i=0;iAll Products>"; //NSString* idString = [NSString stringWithFormat:@"%d",categoryid]; NSString* categoryString =@">"; int count = [[json valueForKey:@"count"] intValue]; for(int i=0;i"]; categoryString =[categoryString stringByAppendingString: [category_json valueForKey:@"title" ] ]; categoryString = [categoryString stringByAppendingString:[ self categoryString:categoryid node:category_json level:level+1]]; break; } } return categoryString; } @end