diff options
author | VladiMihaylenko <vxmihaylenko@gmail.com> | 2016-02-09 15:07:00 +0300 |
---|---|---|
committer | Sergey Yershov <yershov@corp.mail.ru> | 2016-03-23 16:17:01 +0300 |
commit | 4390c5a893683fb8ce8be326821e72d837b6c097 (patch) | |
tree | cb55050f3a140fb92d028f3ff5741bd7ece8be7d | |
parent | 004d20ca90f22789b190feb1a4ad3e8da0a3807a (diff) |
[ios] Added search in cuisine editor.
4 files changed, 111 insertions, 45 deletions
diff --git a/iphone/Maps/Classes/Editor/Cuisine/MWMCuisineEditorViewController.h b/iphone/Maps/Classes/Editor/Cuisine/MWMCuisineEditorViewController.h index 030028eee9..d8fd5e22b9 100644 --- a/iphone/Maps/Classes/Editor/Cuisine/MWMCuisineEditorViewController.h +++ b/iphone/Maps/Classes/Editor/Cuisine/MWMCuisineEditorViewController.h @@ -1,4 +1,4 @@ -#import "ViewController.h" +#import "TableViewController.h" @protocol MWMCuisineEditorProtocol <NSObject> @@ -6,7 +6,7 @@ @end -@interface MWMCuisineEditorViewController : ViewController +@interface MWMCuisineEditorViewController : TableViewController @property (weak, nonatomic) id<MWMCuisineEditorProtocol> delegate; diff --git a/iphone/Maps/Classes/Editor/Cuisine/MWMCuisineEditorViewController.mm b/iphone/Maps/Classes/Editor/Cuisine/MWMCuisineEditorViewController.mm index 5d8ec6a5a2..5959b168f8 100644 --- a/iphone/Maps/Classes/Editor/Cuisine/MWMCuisineEditorViewController.mm +++ b/iphone/Maps/Classes/Editor/Cuisine/MWMCuisineEditorViewController.mm @@ -7,32 +7,82 @@ namespace NSString * const kCuisineEditorCell = @"MWMCuisineEditorTableViewCell"; } // namespace -@interface MWMCuisineEditorViewController ()<UITableViewDelegate, UITableViewDataSource, - MWMCuisineEditorTableViewCellProtocol> +@interface MWMCuisineEditorViewController ()<MWMCuisineEditorTableViewCellProtocol, UISearchBarDelegate> -@property (weak, nonatomic) IBOutlet UITableView * tableView; -@property (nonatomic) NSArray<NSString *> * cuisineKeys; +@property (copy, nonatomic) NSArray<NSString *> * cuisineKeys; +@property (copy, nonatomic) NSArray<NSString *> * filtredKeys; @property (nonatomic) NSMutableSet<NSString *> * selectedCuisines; +@property (weak, nonatomic) IBOutlet UISearchBar * searchBar; + @end @implementation MWMCuisineEditorViewController -- (void)awakeFromNib -{ - self.tableView.separatorColor = [UIColor blackDividers]; -} - - (void)viewDidLoad { [super viewDidLoad]; [self configNavBar]; + [self configSearchBar]; [self configData]; [self configTable]; } +#pragma mark - UISearchBarDelegate + +- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText +{ + self.filtredKeys = [_cuisineKeys filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(NSString * value, NSDictionary<NSString *,id> *) + { + if (!searchText.length) + return YES; + NSString * cuisine = [NSString stringWithFormat:@"cuisine_%@", value]; + return [[L(cuisine) capitalizedStringWithLocale:[NSLocale currentLocale]] containsString:searchText]; + }]]; +} + +- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar +{ + [self searchBar:searchBar setActiveState:YES]; + return YES; +} + +- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar +{ + if (searchBar.text.length == 0) + { + [self searchBar:searchBar setActiveState:NO]; + self.filtredKeys = nil; + } + return YES; +} + +- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar +{ + [searchBar resignFirstResponder]; + searchBar.text = @""; + [self searchBar:searchBar setActiveState:NO]; + self.filtredKeys = nil; +} + +- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar +{ + [searchBar resignFirstResponder]; +} + +- (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar +{ + return UIBarPositionTopAttached; +} + +- (void)searchBar:(UISearchBar *)searchBar setActiveState:(BOOL)isActiveState +{ + [searchBar setShowsCancelButton:isActiveState animated:YES]; + [self.navigationController setNavigationBarHidden:isActiveState animated:YES]; +} + #pragma mark - Configuration - (void)configNavBar @@ -49,6 +99,15 @@ namespace self.navigationController.navigationBar.barStyle = UIBarStyleBlack; } +- (void)configSearchBar +{ + self.searchBar.backgroundImage = [UIImage imageWithColor:[UIColor primary]]; + self.searchBar.placeholder = L(@"search_in_cuisine"); + UITextField * textFiled = [self.searchBar valueForKey:@"searchField"]; + UILabel * placeholder = [textFiled valueForKey:@"_placeholderLabel"]; + placeholder.textColor = [UIColor blackHintText]; +} + - (void)configData { NSString * stringsPath = [[NSBundle mainBundle] pathForResource:@"Localizable" ofType:@"strings"]; @@ -76,6 +135,19 @@ namespace forCellReuseIdentifier:kCuisineEditorCell]; } +#pragma mark - Accessors + +- (NSArray<NSString *> *)cuisineKeys +{ + return self.filtredKeys != nil ? self.filtredKeys : _cuisineKeys; +} + +- (void)setFiltredKeys:(NSArray<NSString *> *)filtredKeys +{ + _filtredKeys = filtredKeys; + [self.tableView reloadData]; +} + #pragma mark - Actions - (void)onCancel diff --git a/iphone/Maps/Classes/MapsAppDelegate.mm b/iphone/Maps/Classes/MapsAppDelegate.mm index a2528a1a10..4db6419c88 100644 --- a/iphone/Maps/Classes/MapsAppDelegate.mm +++ b/iphone/Maps/Classes/MapsAppDelegate.mm @@ -663,6 +663,12 @@ using namespace osm_auth_ios; UITextField * textField = [UITextField appearance]; textField.keyboardAppearance = [UIColor isNightMode] ? UIKeyboardAppearanceDark : UIKeyboardAppearanceDefault; + + UISearchBar * searchBar = [UISearchBar appearance]; + searchBar.barTintColor = [UIColor primary]; + UITextField * textFieldInSearchBar = [UITextField appearanceWhenContainedIn:[UISearchBar class], nil]; + textField.backgroundColor = [UIColor white]; + textFieldInSearchBar.defaultTextAttributes = @{NSForegroundColorAttributeName : [UIColor blackPrimaryText]}; } @@ -789,7 +795,6 @@ using namespace osm_auth_ios; return; [ud setBool:YES forKey:kUserDafaultsNeedToEnableTTS]; [ud synchronize]; - } #pragma mark - Standby diff --git a/iphone/Maps/Mapsme.storyboard b/iphone/Maps/Mapsme.storyboard index 957afeb656..062fed3c01 100644 --- a/iphone/Maps/Mapsme.storyboard +++ b/iphone/Maps/Mapsme.storyboard @@ -748,8 +748,8 @@ <navigationItem key="navigationItem" id="n8f-MH-xDc"/> <connections> <segue destination="Ld6-gM-2hk" kind="custom" identifier="Editor2OpeningHoursEditorSegue" customClass="MWMSegue" id="EMH-RE-PDh"/> - <segue destination="IAA-1a-ZuZ" kind="custom" identifier="Editor2CuisineEditorSegue" customClass="MWMSegue" id="WK7-zs-Cgl"/> <segue destination="Heu-QR-M0N" kind="custom" identifier="Editor2StreetEditorSegue" customClass="MWMSegue" id="iJS-b1-GuT"/> + <segue destination="xZs-iI-22O" kind="custom" identifier="Editor2CuisineEditorSegue" customClass="MWMSegue" id="qEA-7d-gOo"/> </connections> </tableViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="FGq-OI-eQl" userLabel="First Responder" sceneMemberID="firstResponder"/> @@ -757,44 +757,33 @@ <point key="canvasLocation" x="330" y="2753"/> </scene> <!--Cuisine Editor View Controller--> - <scene sceneID="dIV-0o-2RN"> + <scene sceneID="vQV-Ee-44C"> <objects> - <viewController id="IAA-1a-ZuZ" customClass="MWMCuisineEditorViewController" sceneMemberID="viewController"> - <layoutGuides> - <viewControllerLayoutGuide type="top" id="z1V-lE-err"/> - <viewControllerLayoutGuide type="bottom" id="9dL-CH-whb"/> - </layoutGuides> - <view key="view" contentMode="scaleToFill" id="t1d-A1-7Yr"> + <tableViewController id="xZs-iI-22O" customClass="MWMCuisineEditorViewController" sceneMemberID="viewController"> + <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" keyboardDismissMode="onDrag" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" id="SYG-xq-jrS"> <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> - <subviews> - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" allowsSelection="NO" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="p0S-WX-gWg"> - <rect key="frame" x="0.0" y="20" width="600" height="580"/> - <color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> - <connections> - <outlet property="dataSource" destination="IAA-1a-ZuZ" id="Ndb-O3-616"/> - <outlet property="delegate" destination="IAA-1a-ZuZ" id="7yW-1N-N0s"/> - </connections> - </tableView> - </subviews> - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> - <constraints> - <constraint firstItem="p0S-WX-gWg" firstAttribute="leading" secondItem="t1d-A1-7Yr" secondAttribute="leading" id="9Wu-GM-itJ"/> - <constraint firstItem="p0S-WX-gWg" firstAttribute="top" secondItem="z1V-lE-err" secondAttribute="bottom" id="LA4-lP-hYg"/> - <constraint firstAttribute="trailing" secondItem="p0S-WX-gWg" secondAttribute="trailing" id="OYS-XC-4Uv"/> - <constraint firstItem="9dL-CH-whb" firstAttribute="top" secondItem="p0S-WX-gWg" secondAttribute="bottom" id="qK5-X4-7oc"/> - </constraints> - <userDefinedRuntimeAttributes> - <userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="pressBackground"/> - </userDefinedRuntimeAttributes> - </view> + <color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> + <searchBar key="tableHeaderView" contentMode="redraw" id="pHC-Wt-cjL"> + <rect key="frame" x="0.0" y="0.0" width="600" height="44"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/> + <textInputTraits key="textInputTraits"/> + <connections> + <outlet property="delegate" destination="xZs-iI-22O" id="Evb-70-unW"/> + </connections> + </searchBar> + <connections> + <outlet property="dataSource" destination="xZs-iI-22O" id="wxj-Ad-vkh"/> + <outlet property="delegate" destination="xZs-iI-22O" id="cU3-6B-crV"/> + </connections> + </tableView> <connections> - <outlet property="tableView" destination="p0S-WX-gWg" id="bSM-kw-QBG"/> + <outlet property="searchBar" destination="pHC-Wt-cjL" id="rfQ-RO-JbZ"/> </connections> - </viewController> - <placeholder placeholderIdentifier="IBFirstResponder" id="O74-1p-da7" userLabel="First Responder" sceneMemberID="firstResponder"/> + </tableViewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="w9h-sx-JP3" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="352" y="3513"/> + <point key="canvasLocation" x="322" y="3513"/> </scene> <!--Opening Hours Editor View Controller--> <scene sceneID="UAI-uc-U5w"> |