diff --git a/iphone/Maps/Bookmarks/BookmarksVC.mm b/iphone/Maps/Bookmarks/BookmarksVC.mm index 8e6fb9d0d2..e8fc921c69 100644 --- a/iphone/Maps/Bookmarks/BookmarksVC.mm +++ b/iphone/Maps/Bookmarks/BookmarksVC.mm @@ -60,9 +60,13 @@ using namespace std; @property(weak, nonatomic) IBOutlet UIBarButtonItem * viewOnMapItem; @property(nonatomic) UIActivityIndicatorView *sortSpinner; + @property(weak, nonatomic) IBOutlet UIBarButtonItem *sortItem; @property(weak, nonatomic) IBOutlet UIBarButtonItem *sortSpinnerItem; +@property(weak, nonatomic) IBOutlet UIBarButtonItem *sortDownloadedItem; +@property(weak, nonatomic) IBOutlet UIBarButtonItem *sortDownloadedSpinnerItem; + @property(weak, nonatomic) IBOutlet UIBarButtonItem * moreItem; @end @@ -184,13 +188,22 @@ using namespace std; } } +- (void)enableSortButton:(BOOL)enable +{ + if ([self isEditable]) + self.sortItem.enabled = enable; + else + self.sortDownloadedSpinnerItem.enabled = enable; +} + - (void)updateControlsVisibility { - if ([self isEditable] && [[MWMBookmarksManager sharedManager] isCategoryNotEmpty:self.categoryId]) { - self.navigationItem.rightBarButtonItem = self.editButtonItem; - self.sortItem.enabled = YES; + if ([[MWMBookmarksManager sharedManager] isCategoryNotEmpty:self.categoryId]) { + if ([self isEditable]) + self.navigationItem.rightBarButtonItem = self.editButtonItem; + [self enableSortButton:YES]; } else { self.navigationItem.rightBarButtonItem = nil; - self.sortItem.enabled = NO; + [self enableSortButton:NO]; } } @@ -216,12 +229,18 @@ using namespace std; [self.moreItem setTitleTextAttributes:moreTitleAttributes forState:UIControlStateNormal]; [self.sortItem setTitleTextAttributes:regularTitleAttributes forState:UIControlStateNormal]; + [self.sortDownloadedItem setTitleTextAttributes:regularTitleAttributes forState:UIControlStateNormal]; [self.viewOnMapItem setTitleTextAttributes:regularTitleAttributes forState:UIControlStateNormal]; self.moreItem.title = L(@"placepage_more_button"); self.sortItem.title = L(@"sort"); - self.sortSpinnerItem.customView = self.sortSpinner; - self.viewOnMapItem.title = L(@"search_show_on_map"); + self.sortDownloadedItem.title = L(@"sort"); + if ([self isEditable]) + self.sortSpinnerItem.customView = self.sortSpinner; + else + self.sortDownloadedSpinnerItem.customView = self.sortSpinner; + + self.viewOnMapItem.title = L(@"view_on_map_bookmarks"); self.myCategoryToolbar.barTintColor = [UIColor white]; self.downloadedCategoryToolbar.barTintColor = [UIColor white]; @@ -234,10 +253,10 @@ using namespace std; - (void)viewWillAppear:(BOOL)animated { [MWMLocationManager addObserver:self]; - BOOL searchAllowed = NO; + BOOL searchAllowed = [[MWMBookmarksManager sharedManager] isCategoryNotEmpty:self.categoryId] && + [[MWMBookmarksManager sharedManager] isSearchAllowed:self.categoryId]; + if ([self isEditable]) { - if ([[MWMBookmarksManager sharedManager] isCategoryNotEmpty:self.categoryId]) - searchAllowed = YES; self.myCategoryToolbar.hidden = NO; self.downloadedCategoryToolbar.hidden = YES; } else { @@ -390,7 +409,8 @@ using namespace std; [actionSheet addAction:[UIAlertAction actionWithTitle:L(@"cancel") style:UIAlertActionStyleCancel handler:nil]]; - actionSheet.popoverPresentationController.barButtonItem = self.sortItem; + actionSheet.popoverPresentationController.barButtonItem = [self isEditable] ? self.sortItem + : self.sortDownloadedItem; [self presentViewController:actionSheet animated:YES completion:^{ @@ -441,7 +461,7 @@ using namespace std; return; [self showSortSpinner:NO]; - self.sortItem.enabled = YES; + [self enableSortButton:YES]; if (status == BookmarkManager::SortParams::Status::Completed) { [self setSortedSections:sortedBlocks]; @@ -450,8 +470,8 @@ using namespace std; }; [self showSortSpinner:YES]; - self.sortItem.enabled = NO; - + [self enableSortButton:NO]; + bm.GetSortedCategory(sortParams); } diff --git a/iphone/Maps/Bookmarks/BookmarksVC.xib b/iphone/Maps/Bookmarks/BookmarksVC.xib index 6eb7b161a0..355c30bc97 100644 --- a/iphone/Maps/Bookmarks/BookmarksVC.xib +++ b/iphone/Maps/Bookmarks/BookmarksVC.xib @@ -20,6 +20,8 @@ + + @@ -58,13 +60,20 @@ + + + + + + + - + @@ -73,7 +82,7 @@ - + @@ -86,7 +95,7 @@ - + diff --git a/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.h b/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.h index 6d005ad36f..66748e6582 100644 --- a/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.h +++ b/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.h @@ -25,6 +25,7 @@ typedef void (^PingCompletionBlock)(BOOL success); - (BOOL)isCategoryEditable:(MWMMarkGroupID)groupId; - (BOOL)isCategoryNotEmpty:(MWMMarkGroupID)groupId; +- (BOOL)isSearchAllowed:(MWMMarkGroupID)groupId; - (NSString *)getCategoryName:(MWMMarkGroupID)groupId; - (uint64_t)getCategoryMarksCount:(MWMMarkGroupID)groupId; - (uint64_t)getCategoryTracksCount:(MWMMarkGroupID)groupId; diff --git a/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.mm b/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.mm index fe581271b7..a2f0e5ad9f 100644 --- a/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.mm +++ b/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.mm @@ -288,6 +288,10 @@ NSString * const CloudErrorToString(Cloud::SynchronizationResult result) (self.bm.GetUserMarkIds(groupId).size() + self.bm.GetTrackIds(groupId).size()); } +- (BOOL)isSearchAllowed:(MWMMarkGroupID)groupId { + return self.bm.IsSearchAllowed(groupId); +} + - (MWMGroupIDCollection)groupsIdList { auto const & list = self.bm.GetBmGroupsIdList(); diff --git a/map/bookmark_manager.cpp b/map/bookmark_manager.cpp index 5e217f8531..1675037265 100644 --- a/map/bookmark_manager.cpp +++ b/map/bookmark_manager.cpp @@ -1540,6 +1540,13 @@ bool BookmarkManager::IsVisible(kml::MarkGroupId groupId) const return GetGroup(groupId)->IsVisible(); } +bool BookmarkManager::IsSearchAllowed(kml::MarkGroupId groupId) const +{ + // TODO(@darina) Implement. + CHECK_THREAD_CHECKER(m_threadChecker, ()); + return true; +} + void BookmarkManager::SetDrapeEngine(ref_ptr engine) { m_drapeEngine.Set(engine); diff --git a/map/bookmark_manager.hpp b/map/bookmark_manager.hpp index c886956840..da0563aa6e 100644 --- a/map/bookmark_manager.hpp +++ b/map/bookmark_manager.hpp @@ -241,7 +241,8 @@ public: void ResetLastSortingType(kml::MarkGroupId groupId); bool IsVisible(kml::MarkGroupId groupId) const; - + bool IsSearchAllowed(kml::MarkGroupId groupId) const; + kml::MarkGroupId CreateBookmarkCategory(kml::CategoryData && data, bool autoSave = true); kml::MarkGroupId CreateBookmarkCategory(std::string const & name, bool autoSave = true);