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);