// // ItemSearchViewController.m // iShop // // Created by Rui Zhang on 1/29/24. // #import "ItemSearchViewController.h" #import "const.h" #import "RAUtils.h" #import "RANetwork.h" #import "CatalogCellSmall.h" #import "FileCache.h" #import "CatalogFilterViewController.h" #import "CatalogModelDetailViewController.h" #define PAGE_ITEM 30 @interface ItemSearchViewController () @property (nonatomic,strong) NSOperationQueue *dataOperationQueue; @end @implementation ItemSearchViewController - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[self navigationController] setNavigationBarHidden:NO animated:NO]; // [self checkToolBar]; [self.collectionview layoutIfNeeded]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; } - (void)viewDidLoad { [super viewDidLoad]; // // // 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]; // #ifdef BUILD_UWAVER // self.addPortfolioBtn.title = @"Add to Hang Tag"; self.btn_select.hidden =true; #endif #if defined(BUILD_HOMER) || defined(BUILD_GATIT) self.categoryViewType = CATEGORY_VIEWTYPE_LARGE; #else self.categoryViewType = CATEGORY_VIEWTYPE_SMALL; #endif 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; // // // 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.collectionview.alwaysBounceVertical = YES; // self.collectionview.scrollEnabled = true; UIBarButtonItem *btnFilter = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"24_filter"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] style:UIBarButtonItemStylePlain target:self action:@selector( onFilterClicked:)]; UIBarButtonItem *btnChangeDisplay = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"24_layout_list"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] style:UIBarButtonItemStylePlain target:self action:@selector( onChangeDisplay:)]; btnChangeDisplay.tag=4; NSMutableArray * items = [[NSMutableArray alloc]init]; [items addObject:btnChangeDisplay]; [items addObject:btnFilter]; self.navigationItem.rightBarButtonItems =items; } -(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. } - (NSOperationQueue *)dataOperationQueue { if (!_dataOperationQueue) { _dataOperationQueue = [[NSOperationQueue alloc] init]; _dataOperationQueue.maxConcurrentOperationCount = 1; } return _dataOperationQueue; } -(void) logout { self.offset = 0; self.category_data=nil; [self refresh_ui]; } - (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]; // if (items == nil) { // items = [NSMutableDictionary dictionary]; // [items setObject:@(0) forKey:@"count"]; // } // 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; 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]; }; [self.navigationController pushViewController:filterVC animated:true]; } // //- (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 = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种 //// [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 //{ // //// __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Create Order" completion:^{ // PopWaitAlert* pop = [RAUtils waiting_pop:@"Create Order" completion:nil]; // [RANetwork request_create_order:^(NSMutableDictionary *result) { // NSMutableDictionary* return_json = result; // //// [waitalert dismissViewControllerAnimated:YES completion:^{ // [pop hide]; // 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]; // // } // } // else // { // [RAUtils message_box:@"Add To Cart" message:[return_json valueForKey:@"err_msg"] completion:nil] ; // } //// }]; // // // // // // // // // }]; // //// }]; // //} // // //- (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 =[[UIStoryboard storyboardWithName:@"Main" bundle:nil] 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 = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种 // [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_box:@"Loading Category" message:@"All loaded" completion:nil]; } return; } self.mum.hidden = false; [self.mum startAnimating]; self.mum.center = self.view.center; self.isrefreshing=true; [RANetwork request_itemsearch:self.offset limit:PAGE_ITEM covertype:self.covertype ctgid:self.ctgid modelname:self.modelname modeldescrip:self.modeldescrip alert:self.alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller completionHandler:^(NSMutableDictionary *result) { NSMutableDictionary* category_more = result; [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; [RANetwork request_itemsearch:0 limit:PAGE_ITEM covertype:self.covertype ctgid:self.ctgid modelname:self.modelname modeldescrip:self.modeldescrip alert:self.alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller completionHandler:^(NSMutableDictionary *result) { NSDictionary* category_data=result; [self.mum stopAnimating]; self.isrefreshing=false; if (self.dataOperationQueue.operationCount > 1) { return ; } 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.label_net_err.hidden=false; self.collectionview.hidden = true; } else { [RAUtils message_box:@"Search" message:[category_data valueForKey:@"err_msg"] completion:nil]; } }]; return; }); } } -(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]; //// ////} //- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator { // [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; // [coordinator animateAlongsideTransition:^(id _Nonnull context) { // // what ever you want to prepare // } completion:^(id _Nonnull context) { // // self.headerView.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.headerView.bounds].CGPath; // self.toOrientation = [RAUtils query_orientation:self];//= [UIApplication sharedApplication].statusBarOrientation; // [self.collectionview.collectionViewLayout invalidateLayout]; // }]; //} // //- (IBAction)onCategoryClick:(id)sender { // RAViewController * categorymenuVC =[[UIStoryboard storyboardWithName:@"ERP_Mobile_Search" bundle:nil] 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]; //} // //-(void)viewWillLayoutSubviews //{ // // // // 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:(UIBarButtonItem *)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]; [sender setImage:[[UIImage imageNamed:@"24_layout_list"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; // [self.btnDisplay setImage:[UIImage imageNamed:@"layout_list"] forState:UIControlStateNormal]; sender.tag=4; // CGPoint offset = self.collectionview.contentOffset; // offset.y=pos*self.collectionview.contentSize.height; // self.collectionview.contentOffset=offset; } 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]; [sender setImage:[[UIImage imageNamed:@"24_layout_grid"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; // [self.btnDisplay setImage:[UIImage imageNamed:@"layout_grid"] forState:UIControlStateNormal]; sender.tag=2; // 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 (RASingleton.sharedInstance.user && appDelegate.user_type == USER_ROLE_CUSTOMER && appDelegate.customer_type == CustomerTypeStore) { // // 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; // } // // } //} // #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 =nil;//[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 = @"CatalogCellSmall"; CatalogCellSmall * 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(closeout) cell.ic_closeout.hidden=false; else cell.ic_closeout.hidden=true; bool checked =[[item_json valueForKey:@"checked"] boolValue]; 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.4; cell.layer.cornerRadius=15; cell.layer.masksToBounds=true; #ifdef BUILD_UWAVER cell.mark_wish.hidden = YES; cell.mark_order.hidden = YES; cell.mark_closeout.hidden = YES; cell.mark_moreColor.hidden = YES; #endif return cell; } else { static NSString * CellIdentifier = @"CatalogCellList"; CatalogCellSmall * 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"]; if(closeout) cell.ic_closeout.hidden=false; else cell.ic_closeout.hidden=true; bool checked =[[item_json valueForKey:@"checked"] boolValue]; 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.4; // cell.layer.cornerRadius=15; cell.layer.masksToBounds=true; #ifdef BUILD_UWAVER cell.mark_wish.hidden = YES; cell.mark_order.hidden = YES; cell.mark_closeout.hidden = YES; cell.mark_moreColor.hidden = YES; #endif return cell; } } - (void)collectionCell:(CatalogCellSmall *)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 *loading = @"loading_l"; NSString *notFound = @"notfound_l"; if (self.categoryViewType == CATEGORY_VIEWTYPE_SMALL) { loading = @"loading_s"; notFound = @"notfound_s"; img_url =[item_json valueForKey:@"img"]; // small 小图 } NSString* file_name=[img_url lastPathComponent]; if (![cell.imageName isEqualToString:img_url]) { cell.imageName = img_url; cell.cellImageView.image = [UIImage imageNamed:loading]; NSData* img_data=[FileCache load_cached_img:file_name loadFrom:img_url]; if(img_data!=nil) { UIImage * img =[UIImage imageWithData:img_data]; cell.cellImageView.image = img; } else { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSData* downloadimg_data = nil; downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:img_url]]; dispatch_async(dispatch_get_main_queue(), ^{ if(downloadimg_data!=nil) { [FileCache 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 { CatalogCellSmall * son_cell = (CatalogCellSmall *)cell; son_cell.imageName = nil; [self collectionCell:son_cell setImageForIndexPath:indexPath]; } - (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath { CatalogCellSmall * son_cell = (CatalogCellSmall *)cell; NSString *loading = @"loading_s"; son_cell.cellImageView.image = [UIImage imageNamed:loading]; } #pragma mark --UICollectionViewDelegateFlowLayout - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { if(self.categoryViewType ==CATEGORY_VIEWTYPE_LIST) return CGSizeMake(self.view.frame.size.width, 80); return CGSizeMake((self.view.frame.size.width-30)/2, 251); } - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { if(self.categoryViewType ==CATEGORY_VIEWTYPE_LIST) return 0; return 10; } -(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { if(self.showDetail) return UIEdgeInsetsMake(10, 5, 10, 5); 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); } #pragma mark --UICollectionViewDelegate -(void) showDetailat:(NSString*) item_id category_id:(NSString*) category_id name:(NSString *)name index:(long)index { CatalogModelDetailViewController* dvc = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"CatalogModelDetailViewController" ]; dvc.OnBack=^(bool add_cart,bool add_wish,bool update_data) { NSMutableDictionary* items =[[self.category_data objectForKey:@"items"] mutableCopy]; NSMutableDictionary* item = [[items objectForKey:[NSString stringWithFormat:@"item_%ld",index]] mutableCopy]; if(add_cart) item[@"cart_exists"]=@"true"; if(add_wish) item[@"wish_exists"]=@"true"; items[[NSString stringWithFormat:@"item_%ld",index]] = item; self.category_data[@"items"]=items; [self.collectionview reloadData]; }; dvc.product_id = item_id; dvc.category_id=category_id; dvc.ispush = true; dvc.model_name = name; [dvc reload]; [self.navigationController pushViewController:dvc animated:true]; return; } //UICollectionView被选中时调用的方法 -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { // [self.collectionview cellForItemAtIndexPath:indexPath]; // self showdetail NSMutableDictionary* items =[[self.category_data objectForKey:@"items"] mutableCopy]; NSMutableDictionary* item = [[items objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy]; // if(self.isSelectionMode) // { // bool checked =[[item valueForKey:@"checked"] boolValue]; // // CategoryCellNPD *currentSelecteCell = (CategoryCellNPD *)[self.collectionview cellForItemAtIndexPath:indexPath]; // // // if(checked) // { // self.select_count--; // if(self.select_count==0) // { // // } // [item setValue:@"false" forKey:@"checked"]; // currentSelecteCell.checkImageView.hidden = true; // if(self.categoryViewType != CATEGORY_VIEWTYPE_LIST) // [currentSelecteCell setBackgroundColor: /*UIColorFromRGB(0x996633)*/[UIColor whiteColor]]; // else // [currentSelecteCell setBackgroundColor: [UIColor whiteColor]]; // } // else // { // self.select_count++; // // [item setValue:@"true" forKey:@"checked"]; // currentSelecteCell.checkImageView.hidden = false; // [currentSelecteCell setBackgroundColor: UIColorFromRGB(0x009966)]; // } // [items setObject:item forKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; // [self.category_data setObject:items forKey:@"items"]; // // // } // else { NSString* detail_id= [NSString stringWithFormat:@"%@", [item valueForKey:@"product_id"] ] ; [self showDetailat:detail_id category_id:self.categoryid name:[item valueForKey:@"name"] index:indexPath.row]; } } // //- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath //{ // NSMutableDictionary* items =[[self.category_data objectForKey:@"items"] mutableCopy]; // // NSMutableDictionary* item = [[items objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy]; // // if(self.isSelectionMode) // { // bool checked =[[item valueForKey:@"checked"] boolValue]; // // CategoryCellNPD *currentSelecteCell = (CategoryCellNPD *)[self.collectionview cellForItemAtIndexPath:indexPath]; // // // // if(checked) // { // [item setValue:@"false" forKey:@"checked"]; // // currentSelecteCell.checkImageView.hidden = true; // } // // else // // { // // [item setValue:@"true" forKey:@"checked"]; // // currentSelecteCell.checkImageView.hidden = false; // // } // [items setObject:item forKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; // [self.category_data setObject:items forKey:@"items"]; // // // } // else // { // NSString* detail_id= [item valueForKey:@"product_id"] ; // // [self showDetailat:detail_id category_id:nil]; // } //} // ////- (BOOL)collectionView:(UICollectionView *)collectionView shouldHighlightItemAtIndexPath:(NSIndexPath *)indexPath ////{ //// if(self.isSelectionMode) //// { //// bool checked= [[[[self.category_data objectForKey:@"items"] objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]valueForKey:@"checked"] boolValue] ; //// return checked; //// } //// return true; ////} //- (void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath //{ // // NSMutableDictionary* items =[[self.category_data objectForKey:@"items"] mutableCopy]; // // NSMutableDictionary* item = [[items objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy]; // // if(self.isSelectionMode) // { // bool checked =[[item valueForKey:@"checked"] boolValue]; // // CategoryCellNPD *cell = (CategoryCellNPD *)[self.collectionview cellForItemAtIndexPath:indexPath]; // // // if(!checked) // { // [cell setBackgroundColor: UIColorFromRGB(0x009966)]; // } // else // { //[cell setBackgroundColor: UIColorFromRGB(0x996633)]; // } // // // // } // //// CategoryCellNPD *cell = (CategoryCellNPD *)[self.collectionview cellForItemAtIndexPath:indexPath]; //// DebugLog(@"%d,%d",indexPath.section,indexPath.row); //// [cell setBackgroundColor: [UIColor redColor]];//UIColorFromRGB(0xf2f2f2)]; //} //- (void)collectionView:(UICollectionView *)colView didUnhighlightItemAtIndexPath:(NSIndexPath *)indexPath //{ // CategoryCellNPD *cell = (CategoryCellNPD *)[self.collectionview cellForItemAtIndexPath:indexPath]; // // DebugLog(@"%d,%d",indexPath.section,indexPath.row); // //设置(Nomal)正常状态下的颜色 // [cell setBackgroundColor: UIColorFromRGB(0x996633)]; //} // //#pragma mark SearchFilterDelegate //-(void) SearchFilterReturn:(NSMutableDictionary *)value //{ // self.filter_val = value; //} #pragma mark Deferred image loading (UIScrollViewDelegate) //// Load images for all onscreen rows when scrolling is finished //- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate //{ // if (!decelerate) // { // DebugLog(@"scrollViewDidEndDragging LOADMORE"); // } //} // //- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView //{ // DebugLog(@"scrollViewDidEndDecelerating LOADMORE"); //} - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ // [refreshHeaderViewegoRefreshScrollViewDidScroll:scrollView];//下拉刷新 CGPoint contentOffsetPoint = self.collectionview.contentOffset; CGRect frame =self.collectionview.frame; // CGSize size123 =self.collectionview.contentSize; UICollectionViewFlowLayout *flowLayout =(UICollectionViewFlowLayout*)[self.collectionview collectionViewLayout]; if(flowLayout.scrollDirection== UICollectionViewScrollDirectionVertical) { // DebugLog(@"contentOffsetPoint %f",contentOffsetPoint.y); // DebugLog(@"frame.size.height %f",frame.size.height); // DebugLog(@"self.collectionview.contentSize.height %f",self.collectionview.contentSize.height); // if ((contentOffsetPoint.y >= (self.collectionview.contentSize.height - frame.size.height)) || (self.collectionview.contentSize.height < frame.size.height&& [self.category_data[@"count"] intValue]>=30)) if (contentOffsetPoint.y >= (self.collectionview.contentSize.height - frame.size.height) && self.collectionview.contentSize.height > frame.size.height) { if(self.isrefreshing) return; DebugLog(@"scroll to the end,load more......"); [self loadMore]; // self.btnLoad.hidden = NO; } } else if(flowLayout.scrollDirection== UICollectionViewScrollDirectionHorizontal) { // DebugLog(@"contentOffsetPoint %f",contentOffsetPoint.y); // DebugLog(@"frame.size.height %f",frame.size.height); // DebugLog(@"self.collectionview.contentSize.height %f",self.collectionview.contentSize.height); // if (contentOffsetPoint.x >= (self.collectionview.contentSize.width - frame.size.width) || (self.collectionview.contentSize.width < frame.size.width && [self.category_data[@"count"] intValue]>=30)) if (contentOffsetPoint.x >= (self.collectionview.contentSize.width - frame.size.width) && self.collectionview.contentSize.width > frame.size.width) { if(self.isrefreshing) return; DebugLog(@"scroll to the end,load more......"); [self loadMore]; // self.btnLoad.hidden = NO; } } } #pragma mark Jack - (void)addALlModel { // self.addAll = !self.addAll; // if (self.addAll) { // [self.addAllCheckBtn setImage:[[UIImage imageNamed:@"check_1_24"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; // // // } else { // [self.addAllCheckBtn setImage:[[UIImage imageNamed:@"check_0_24"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; // // } } - (IBAction)addAllBtnClick:(id)sender { // [self addALlModel]; } - (IBAction)allAllCheckBtnClick:(id)sender { // [self addALlModel]; } // //#pragma mark - Private // //-(NSString*) categoryString:(NSString*) categoryid node:(NSDictionary*) json level:(int) level { // // if(categoryid.length==0) // return @">All 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; //} // //- (void)reRefreshView { // [self.tableview reloadData]; // [self.collectionview reloadData]; //} #pragma mark - RA_NOTIFICAITON -(void) refresh_ui { [self.collectionview reloadData]; } -(void) reload_data { [self reload]; } @end