diff --git a/iphone/Maps/Bookmarks/Catalog/CatalogCategoryCell.swift b/iphone/Maps/Bookmarks/Catalog/CatalogCategoryCell.swift
new file mode 100644
index 0000000000..23b5e8357b
--- /dev/null
+++ b/iphone/Maps/Bookmarks/Catalog/CatalogCategoryCell.swift
@@ -0,0 +1,33 @@
+class CatalogCategoryCell: UITableViewCell {
+
+ @IBOutlet weak var visibleCheckmark: Checkmark! {
+ didSet {
+ visibleCheckmark.offTintColor = .blackHintText()
+ visibleCheckmark.onTintColor = .linkBlue()
+ }
+ }
+ @IBOutlet weak var titleLabel: UILabel! {
+ didSet {
+ titleLabel.font = .regular16()
+ titleLabel.textColor = .blackPrimaryText()
+ }
+ }
+ @IBOutlet weak var subtitleLabel: UILabel! {
+ didSet {
+ subtitleLabel.font = .regular14()
+ subtitleLabel.textColor = .blackSecondaryText()
+ }
+ }
+ @IBOutlet weak var moreButton: UIButton!
+
+ @IBAction func onVisibleChanged(_ sender: Checkmark) {
+ }
+ @IBAction func onMoreButton(_ sender: UIButton) {
+ }
+
+ func update(with category: MWMCatalogCategory) {
+ titleLabel.text = category.title
+ subtitleLabel.text = "\(category.bookmarksCount) places • by \(category.author ?? "")"
+ visibleCheckmark.isChecked = category.isVisible
+ }
+}
diff --git a/iphone/Maps/Bookmarks/Catalog/CatalogCategoryCell.xib b/iphone/Maps/Bookmarks/Catalog/CatalogCategoryCell.xib
new file mode 100644
index 0000000000..f321e1160f
--- /dev/null
+++ b/iphone/Maps/Bookmarks/Catalog/CatalogCategoryCell.xib
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iphone/Maps/Bookmarks/Catalog/DownloadedBookmarksDataSource.swift b/iphone/Maps/Bookmarks/Catalog/DownloadedBookmarksDataSource.swift
new file mode 100644
index 0000000000..a51813cdf6
--- /dev/null
+++ b/iphone/Maps/Bookmarks/Catalog/DownloadedBookmarksDataSource.swift
@@ -0,0 +1,17 @@
+class DownloadedBookmarksDataSource {
+
+ private var categories: [MWMCatalogCategory] = []
+ var categoriesCount: NSInteger {
+ get {
+ return categories.count
+ }
+ }
+
+ init() {
+ categories = MWMBookmarksManager.categoriesFromCatalog()
+ }
+
+ func category(at index: Int) -> MWMCatalogCategory {
+ return categories[index]
+ }
+}
diff --git a/iphone/Maps/Bookmarks/Catalog/DownloadedBookmarksViewController.swift b/iphone/Maps/Bookmarks/Catalog/DownloadedBookmarksViewController.swift
index 235a2b4b6a..30a0533ed0 100644
--- a/iphone/Maps/Bookmarks/Catalog/DownloadedBookmarksViewController.swift
+++ b/iphone/Maps/Bookmarks/Catalog/DownloadedBookmarksViewController.swift
@@ -3,27 +3,43 @@ class DownloadedBookmarksViewController: UITableViewController {
@IBOutlet weak var topView: UIView!
@IBOutlet weak var bottomView: UIView!
+ let dataSource = DownloadedBookmarksDataSource()
+
override func viewDidLoad() {
super.viewDidLoad()
- tableView.tableHeaderView = topView
+ if dataSource.categoriesCount == 0 {
+ tableView.tableHeaderView = topView
+ }
tableView.tableFooterView = bottomView
+ tableView.registerNib(cell: CatalogCategoryCell.self)
+ tableView.registerNibForHeaderFooterView(BMCCategoriesHeader.self)
}
override func numberOfSections(in tableView: UITableView) -> Int {
- return 0
+ return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- return 0
+ return dataSource.categoriesCount
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
-
+ let cell = tableView.dequeueReusableCell(cell: CatalogCategoryCell.self, indexPath: indexPath)
+ cell.update(with: dataSource.category(at: indexPath.row))
return cell
}
+ override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
+ return 48
+ }
+
+ override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
+ let headerView = tableView.dequeueReusableHeaderFooterView(BMCCategoriesHeader.self)
+ headerView.isShowAll = true
+ headerView.delegate = self
+ return headerView
+ }
@IBAction func onDownloadBookmarks(_ sender: Any) {
if let url = MWMBookmarksManager.catalogFrontendUrl(),
@@ -33,3 +49,19 @@ class DownloadedBookmarksViewController: UITableViewController {
}
}
}
+
+extension DownloadedBookmarksViewController: BMCCategoryCellDelegate {
+ func visibilityAction(category: BMCCategory) {
+
+ }
+
+ func moreAction(category: BMCCategory, anchor: UIView) {
+
+ }
+}
+
+extension DownloadedBookmarksViewController: BMCCategoriesHeaderDelegate {
+ func visibilityAction(isShowAll: Bool) {
+
+ }
+}
diff --git a/iphone/Maps/Bookmarks/Catalog/DownloadedBookmarksViewController.xib b/iphone/Maps/Bookmarks/Catalog/DownloadedBookmarksViewController.xib
index ca3956e6a0..6987c4021a 100644
--- a/iphone/Maps/Bookmarks/Catalog/DownloadedBookmarksViewController.xib
+++ b/iphone/Maps/Bookmarks/Catalog/DownloadedBookmarksViewController.xib
@@ -18,10 +18,10 @@
-
+
-
+
@@ -58,7 +58,7 @@
-
+
@@ -96,7 +96,7 @@
-
+
diff --git a/iphone/Maps/Bookmarks/Catalog/MWMCatalogCategory+Convenience.h b/iphone/Maps/Bookmarks/Catalog/MWMCatalogCategory+Convenience.h
new file mode 100644
index 0000000000..694847b465
--- /dev/null
+++ b/iphone/Maps/Bookmarks/Catalog/MWMCatalogCategory+Convenience.h
@@ -0,0 +1,8 @@
+#import "MWMCatalogCategory.h"
+#include "Framework.h"
+
+@interface MWMCatalogCategory (Convenience)
+
+- (instancetype)initWithCategoryData:(kml::CategoryData &)categoryData bookmarksCount:(UInt64)count;
+
+@end
diff --git a/iphone/Maps/Bookmarks/Catalog/MWMCatalogCategory+Convenience.mm b/iphone/Maps/Bookmarks/Catalog/MWMCatalogCategory+Convenience.mm
new file mode 100644
index 0000000000..356ecd314b
--- /dev/null
+++ b/iphone/Maps/Bookmarks/Catalog/MWMCatalogCategory+Convenience.mm
@@ -0,0 +1,21 @@
+#import "MWMCatalogCategory+Convenience.h"
+
+@implementation MWMCatalogCategory (Convenience)
+
+- (instancetype)initWithCategoryData:(kml::CategoryData &)categoryData bookmarksCount:(UInt64)count {
+ self = [self init];
+
+ if (self)
+ {
+ self.categoryId = categoryData.m_id;
+ self.title = @(kml::GetDefaultStr(categoryData.m_name).c_str());
+ self.bookmarksCount = count;
+ self.visible = categoryData.m_visible;
+ self.author = @(categoryData.m_authorName.c_str());
+ self.annotation = @(kml::GetDefaultStr(categoryData.m_annotation).c_str());
+ self.detailedAnnotation = @(kml::GetDefaultStr(categoryData.m_description).c_str());
+ }
+ return self;
+}
+
+@end
diff --git a/iphone/Maps/Bookmarks/Catalog/MWMCatalogCategory.h b/iphone/Maps/Bookmarks/Catalog/MWMCatalogCategory.h
new file mode 100644
index 0000000000..e27d9d9d71
--- /dev/null
+++ b/iphone/Maps/Bookmarks/Catalog/MWMCatalogCategory.h
@@ -0,0 +1,14 @@
+#import
+
+@interface MWMCatalogCategory : NSObject
+
+@property (nonatomic) MWMMarkGroupID categoryId;
+@property (copy, nonatomic) NSString * title;
+@property (copy, nonatomic) NSString * author;
+@property (copy, nonatomic) NSString * annotation;
+@property (copy, nonatomic) NSString * detailedAnnotation;
+@property (nonatomic) NSInteger bookmarksCount;
+@property (nonatomic, getter=isVisible) BOOL visible;
+
+
+@end
diff --git a/iphone/Maps/Bookmarks/Catalog/MWMCatalogCategory.m b/iphone/Maps/Bookmarks/Catalog/MWMCatalogCategory.m
new file mode 100644
index 0000000000..6b3ad8a2b0
--- /dev/null
+++ b/iphone/Maps/Bookmarks/Catalog/MWMCatalogCategory.m
@@ -0,0 +1,5 @@
+#import "MWMCatalogCategory.h"
+
+@implementation MWMCatalogCategory
+
+@end
diff --git a/iphone/Maps/Bookmarks/Categories/Actions/BMCActionsCreateCell.xib b/iphone/Maps/Bookmarks/Categories/Actions/BMCActionsCreateCell.xib
index b409252c6d..9b6d7cb0e8 100644
--- a/iphone/Maps/Bookmarks/Categories/Actions/BMCActionsCreateCell.xib
+++ b/iphone/Maps/Bookmarks/Categories/Actions/BMCActionsCreateCell.xib
@@ -1,18 +1,18 @@
-
+
-
+
-
+
@@ -43,7 +43,6 @@
-
diff --git a/iphone/Maps/Bookmarks/Categories/BMCView/BMCViewController.swift b/iphone/Maps/Bookmarks/Categories/BMCView/BMCViewController.swift
index 2dba04790c..ca5d92bf51 100644
--- a/iphone/Maps/Bookmarks/Categories/BMCView/BMCViewController.swift
+++ b/iphone/Maps/Bookmarks/Categories/BMCView/BMCViewController.swift
@@ -15,6 +15,7 @@ final class BMCViewController: MWMViewController {
BMCActionsCreateCell.self,
BMCNotificationsCell.self,
])
+ tableView.registerNibForHeaderFooterView(BMCCategoriesHeader.self)
}
}
@@ -24,12 +25,6 @@ final class BMCViewController: MWMViewController {
}
}
- @IBOutlet private var categoriesHeader: BMCCategoriesHeader! {
- didSet {
- categoriesHeader.delegate = self
- }
- }
-
@IBOutlet private var actionsHeader: UIView!
@IBOutlet private var notificationsHeader: BMCNotificationsHeader!
@@ -249,7 +244,9 @@ extension BMCViewController: UITableViewDelegate {
switch viewModel.sectionType(section: section) {
case .permissions: return permissionsHeader
case .categories:
+ let categoriesHeader = tableView.dequeueReusableHeaderFooterView(BMCCategoriesHeader.self)
categoriesHeader.isShowAll = viewModel.areAllCategoriesInvisible()
+ categoriesHeader.delegate = self
return categoriesHeader
case .actions: return actionsHeader
case .notifications: return notificationsHeader
@@ -292,6 +289,7 @@ extension BMCViewController: BMCPermissionsCellDelegate {
extension BMCViewController: BMCCategoryCellDelegate {
func visibilityAction(category: BMCCategory) {
viewModel.updateCategoryVisibility(category: category)
+ let categoriesHeader = tableView.headerView(forSection: viewModel.sectionIndex(section: .categories)) as! BMCCategoriesHeader
categoriesHeader.isShowAll = viewModel.areAllCategoriesInvisible()
}
@@ -320,6 +318,7 @@ extension BMCViewController: BMCPermissionsHeaderDelegate {
extension BMCViewController: BMCCategoriesHeaderDelegate {
func visibilityAction(isShowAll: Bool) {
viewModel.updateAllCategoriesVisibility(isShowAll: isShowAll)
+ let categoriesHeader = tableView.headerView(forSection: viewModel.sectionIndex(section: .categories)) as! BMCCategoriesHeader
categoriesHeader.isShowAll = viewModel.areAllCategoriesInvisible()
}
}
diff --git a/iphone/Maps/Bookmarks/Categories/BMCView/BMCViewController.xib b/iphone/Maps/Bookmarks/Categories/BMCView/BMCViewController.xib
index 6c07c003ba..a6cf7ef4ab 100644
--- a/iphone/Maps/Bookmarks/Categories/BMCView/BMCViewController.xib
+++ b/iphone/Maps/Bookmarks/Categories/BMCView/BMCViewController.xib
@@ -13,7 +13,6 @@
-
@@ -108,53 +107,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/iphone/Maps/Bookmarks/Categories/Categories/BMCCategoriesHeader.swift b/iphone/Maps/Bookmarks/Categories/Categories/BMCCategoriesHeader.swift
index 0ecacfd301..db2ef4c57c 100644
--- a/iphone/Maps/Bookmarks/Categories/Categories/BMCCategoriesHeader.swift
+++ b/iphone/Maps/Bookmarks/Categories/Categories/BMCCategoriesHeader.swift
@@ -2,7 +2,7 @@ protocol BMCCategoriesHeaderDelegate {
func visibilityAction(isShowAll: Bool)
}
-final class BMCCategoriesHeader: UIView {
+final class BMCCategoriesHeader: UITableViewHeaderFooterView {
@IBOutlet private weak var label: UILabel! {
didSet {
label.font = .bold14()
@@ -27,9 +27,9 @@ final class BMCCategoriesHeader: UIView {
}
}
- var delegate: BMCCategoriesHeaderDelegate!
+ var delegate: BMCCategoriesHeaderDelegate?
@IBAction private func buttonAction() {
- delegate.visibilityAction(isShowAll: isShowAll)
+ delegate?.visibilityAction(isShowAll: isShowAll)
}
}
diff --git a/iphone/Maps/Bookmarks/Categories/Categories/BMCCategoriesHeader.xib b/iphone/Maps/Bookmarks/Categories/Categories/BMCCategoriesHeader.xib
new file mode 100644
index 0000000000..64d0fc0b5d
--- /dev/null
+++ b/iphone/Maps/Bookmarks/Categories/Categories/BMCCategoriesHeader.xib
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iphone/Maps/Bookmarks/Categories/Categories/BMCCategoryCell.swift b/iphone/Maps/Bookmarks/Categories/Categories/BMCCategoryCell.swift
index befc64e4fe..6f78100d42 100644
--- a/iphone/Maps/Bookmarks/Categories/Categories/BMCCategoryCell.swift
+++ b/iphone/Maps/Bookmarks/Categories/Categories/BMCCategoryCell.swift
@@ -36,20 +36,20 @@ final class BMCCategoryCell: MWMTableViewCell {
}
}
- private var delegate: BMCCategoryCellDelegate!
+ private var delegate: BMCCategoryCellDelegate?
- func config(category: BMCCategory, delegate: BMCCategoryCellDelegate) -> UITableViewCell {
+ func config(category: BMCCategory, delegate: BMCCategoryCellDelegate?) -> UITableViewCell {
self.category = category
self.delegate = delegate
return self
}
@IBAction private func visibilityAction() {
- delegate.visibilityAction(category: category)
+ delegate?.visibilityAction(category: category)
}
@IBAction private func moreAction() {
- delegate.moreAction(category: category, anchor: more)
+ delegate?.moreAction(category: category, anchor: more)
}
}
diff --git a/iphone/Maps/Bookmarks/Categories/Categories/BMCCategoryCell.xib b/iphone/Maps/Bookmarks/Categories/Categories/BMCCategoryCell.xib
index 592f8e25c1..0c70761ebc 100644
--- a/iphone/Maps/Bookmarks/Categories/Categories/BMCCategoryCell.xib
+++ b/iphone/Maps/Bookmarks/Categories/Categories/BMCCategoryCell.xib
@@ -1,11 +1,11 @@
-
+
-
+
diff --git a/iphone/Maps/Bookmarks/Categories/Permissions/BMCPermissionsCell.swift b/iphone/Maps/Bookmarks/Categories/Permissions/BMCPermissionsCell.swift
index c286d1d36f..53272f54d1 100644
--- a/iphone/Maps/Bookmarks/Categories/Permissions/BMCPermissionsCell.swift
+++ b/iphone/Maps/Bookmarks/Categories/Permissions/BMCPermissionsCell.swift
@@ -15,7 +15,7 @@ final class BMCPermissionsCell: MWMTableViewCell {
button.setTitleColor(UIColor.whitePrimaryText(), for: .normal)
button.setTitleColor(UIColor.whitePrimaryTextHighlighted(), for: .highlighted)
button.setBackgroundColor(.linkBlue(), for: .normal)
- button.titleLabel?.font = .regular14()
+ button.titleLabel?.font = .medium14()
button.layer.cornerRadius = 6
button.clipsToBounds = true
}
diff --git a/iphone/Maps/Bridging-Header.h b/iphone/Maps/Bridging-Header.h
index ef107aaa40..6a6995b116 100644
--- a/iphone/Maps/Bridging-Header.h
+++ b/iphone/Maps/Bridging-Header.h
@@ -74,3 +74,4 @@
#import "UIFont+MapsMeFonts.h"
#import "UIViewController+Navigation.h"
#import "WebViewController.h"
+#import "MWMCatalogCategory.h"
diff --git a/iphone/Maps/Categories/UIButton+RuntimeAttributes.h b/iphone/Maps/Categories/UIButton+RuntimeAttributes.h
index 877ee46ca0..a468ff38f8 100644
--- a/iphone/Maps/Categories/UIButton+RuntimeAttributes.h
+++ b/iphone/Maps/Categories/UIButton+RuntimeAttributes.h
@@ -10,6 +10,8 @@
- (NSString *)backgroundHighlightedColorName;
- (void)setBackgroundSelectedColorName:(NSString *)colorName;
- (NSString *)backgroundSelectedColorName;
+- (void)setTintColorName:(NSString *)colorName;
+- (NSString *)tintColorName;
- (void)setBackgroundColor:(UIColor *)color forState:(UIControlState)state;
diff --git a/iphone/Maps/Categories/UIButton+RuntimeAttributes.mm b/iphone/Maps/Categories/UIButton+RuntimeAttributes.mm
index 5f13b1d7d2..ccdd9d0446 100644
--- a/iphone/Maps/Categories/UIButton+RuntimeAttributes.mm
+++ b/iphone/Maps/Categories/UIButton+RuntimeAttributes.mm
@@ -72,6 +72,18 @@
return objc_getAssociatedObject(self, @selector(backgroundSelectedColorName));
}
+- (void)setTintColorName:(NSString *)colorName
+{
+ objc_setAssociatedObject(self, @selector(tintColorName), colorName,
+ OBJC_ASSOCIATION_COPY_NONATOMIC);
+ [self setTintColor:[UIColor colorWithName:colorName]];
+}
+
+- (NSString *)tintColorName
+{
+ return objc_getAssociatedObject(self, @selector(tintColorName));
+}
+
- (void)setBackgroundColor:(UIColor *)color forState:(UIControlState)state
{
[self setBackgroundColor:UIColor.clearColor];
diff --git a/iphone/Maps/Categories/UITableView+Cells.swift b/iphone/Maps/Categories/UITableView+Cells.swift
index d0e1e55342..29e157dbd4 100644
--- a/iphone/Maps/Categories/UITableView+Cells.swift
+++ b/iphone/Maps/Categories/UITableView+Cells.swift
@@ -30,4 +30,12 @@ extension UITableView {
func dequeueReusableCell(cell: Cell.Type, indexPath: IndexPath) -> Cell where Cell: UITableViewCell {
return dequeueReusableCell(withIdentifier: toString(cell), for: indexPath) as! Cell
}
+
+ func registerNibForHeaderFooterView(_ view: View.Type) where View: UIView {
+ register(UINib(view), forHeaderFooterViewReuseIdentifier: toString(view))
+ }
+
+ func dequeueReusableHeaderFooterView(_ view: View.Type) -> View where View: UIView {
+ return dequeueReusableHeaderFooterView(withIdentifier: toString(view)) as! View
+ }
}
diff --git a/iphone/Maps/Classes/Components/Checkmark.swift b/iphone/Maps/Classes/Components/Checkmark.swift
index cd78df80ce..e9814f211b 100644
--- a/iphone/Maps/Classes/Components/Checkmark.swift
+++ b/iphone/Maps/Classes/Components/Checkmark.swift
@@ -73,9 +73,9 @@ class Checkmark: UIControl {
switch contentHorizontalAlignment {
case .right: fallthrough
case .trailing:
- left = bounds.width - imageView.width
+ left = floor(bounds.width - imageView.width)
case .center:
- left = floor(bounds.width - width) / 2
+ left = floor((bounds.width - width) / 2)
case .fill:
width = bounds.width
default:
@@ -86,9 +86,9 @@ class Checkmark: UIControl {
case .top:
top = 0
case .bottom:
- top = bounds.height - height
+ top = floor(bounds.height - height)
case .center:
- top = floor(bounds.height - height) / 2
+ top = floor((bounds.height - height) / 2)
case .fill:
height = bounds.height
}
diff --git a/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.h b/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.h
index b8f2b85845..2ae6c3f281 100644
--- a/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.h
+++ b/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.h
@@ -1,6 +1,8 @@
#import "MWMBookmarksObserver.h"
#import "MWMTypes.h"
+@class MWMCatalogCategory;
+
@interface MWMBookmarksManager : NSObject
+ (void)addObserver:(id)observer;
@@ -48,6 +50,8 @@
+ (void)downloadItemWithId:(NSString * _Nonnull)itemId
name:(NSString * _Nonnull)name
completion:(void (^_Nullable)(NSError * _Nullable error))completion;
++ (BOOL)isCategoryFromCatalog:(MWMMarkGroupID)groupId;
++ (NSArray * _Nonnull)categoriesFromCatalog;
- (instancetype)init __attribute__((unavailable("call +manager instead")));
- (instancetype)copy __attribute__((unavailable("call +manager instead")));
diff --git a/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.mm b/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.mm
index 657103e44a..48054edb0d 100644
--- a/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.mm
+++ b/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.mm
@@ -1,4 +1,5 @@
#import "MWMBookmarksManager.h"
+#import "MWMCatalogCategory+Convenience.h"
#import "Statistics.h"
#import "SwiftBridge.h"
@@ -543,4 +544,25 @@ NSString * const CloudErrorToString(Cloud::SynchronizationResult result)
GetFramework().GetBookmarkManager().DownloadFromCatalogAndImport(itemId.UTF8String, name.UTF8String);
}
++ (BOOL)isCategoryFromCatalog:(MWMMarkGroupID)groupId {
+ return GetFramework().GetBookmarkManager().IsCategoryFromCatalog(groupId);
+}
+
++ (NSArray *)categoriesFromCatalog {
+ NSMutableArray * result = [NSMutableArray array];
+ MWMGroupIDCollection categoryIds = [self groupsIdList];
+ [categoryIds enumerateObjectsUsingBlock:^(NSNumber * categoryId, NSUInteger idx, BOOL * stop) {
+ MWMMarkGroupID catId = categoryId.unsignedIntValue;
+ if ([self isCategoryFromCatalog:catId])
+ {
+ kml::CategoryData categoryData = GetFramework().GetBookmarkManager().GetCategoryData(categoryId.unsignedIntValue);
+ UInt64 bookmarksCount = [self getCategoryMarksCount:catId] + [self getCategoryTracksCount:catId];
+ MWMCatalogCategory *category = [[MWMCatalogCategory alloc] initWithCategoryData:categoryData
+ bookmarksCount:bookmarksCount];
+ [result addObject:category];
+ }
+ }];
+ return [result copy];
+}
+
@end
diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj
index 52623dc6f8..1ecc6ae536 100644
--- a/iphone/Maps/Maps.xcodeproj/project.pbxproj
+++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj
@@ -468,6 +468,12 @@
B32FE74020D2844600EF7446 /* DownloadedBookmarksViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B32FE73E20D2844600EF7446 /* DownloadedBookmarksViewController.swift */; };
B32FE74120D2844600EF7446 /* DownloadedBookmarksViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B32FE73F20D2844600EF7446 /* DownloadedBookmarksViewController.xib */; };
B32FE74320D2B09600EF7446 /* CatalogWebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B32FE74220D2B09600EF7446 /* CatalogWebViewController.swift */; };
+ B366130420D5D9BC00E7DC3E /* MWMCatalogCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = B366130320D5D9BC00E7DC3E /* MWMCatalogCategory.m */; };
+ B366130720D5DD2300E7DC3E /* MWMCatalogCategory+Convenience.mm in Sources */ = {isa = PBXBuildFile; fileRef = B366130620D5DD2300E7DC3E /* MWMCatalogCategory+Convenience.mm */; };
+ B366130A20D5E2E000E7DC3E /* CatalogCategoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B366130820D5E2E000E7DC3E /* CatalogCategoryCell.swift */; };
+ B366130B20D5E2E000E7DC3E /* CatalogCategoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B366130920D5E2E000E7DC3E /* CatalogCategoryCell.xib */; };
+ B3E3B4FD20D463B700DA8C13 /* BMCCategoriesHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = B3E3B4FC20D463B700DA8C13 /* BMCCategoriesHeader.xib */; };
+ B3E3B50220D485FA00DA8C13 /* DownloadedBookmarksDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E3B50120D485FA00DA8C13 /* DownloadedBookmarksDataSource.swift */; };
BB25B1A71FB32767007276FA /* transit_colors.txt in Resources */ = {isa = PBXBuildFile; fileRef = BB25B1A51FB32767007276FA /* transit_colors.txt */; };
BB7626B61E85599C0031D71C /* icudt57l.dat in Resources */ = {isa = PBXBuildFile; fileRef = BB7626B41E8559980031D71C /* icudt57l.dat */; };
EBDA7B7820B370B40054165B /* GoogleMobileAds.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBDA7B7320B3576D0054165B /* GoogleMobileAds.framework */; };
@@ -1387,6 +1393,14 @@
B32FE73E20D2844600EF7446 /* DownloadedBookmarksViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DownloadedBookmarksViewController.swift; sourceTree = ""; };
B32FE73F20D2844600EF7446 /* DownloadedBookmarksViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DownloadedBookmarksViewController.xib; sourceTree = ""; };
B32FE74220D2B09600EF7446 /* CatalogWebViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CatalogWebViewController.swift; sourceTree = ""; };
+ B366130220D5D9BC00E7DC3E /* MWMCatalogCategory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMCatalogCategory.h; sourceTree = ""; };
+ B366130320D5D9BC00E7DC3E /* MWMCatalogCategory.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MWMCatalogCategory.m; sourceTree = ""; };
+ B366130520D5DD2300E7DC3E /* MWMCatalogCategory+Convenience.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MWMCatalogCategory+Convenience.h"; sourceTree = ""; };
+ B366130620D5DD2300E7DC3E /* MWMCatalogCategory+Convenience.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "MWMCatalogCategory+Convenience.mm"; sourceTree = ""; };
+ B366130820D5E2E000E7DC3E /* CatalogCategoryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CatalogCategoryCell.swift; sourceTree = ""; };
+ B366130920D5E2E000E7DC3E /* CatalogCategoryCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CatalogCategoryCell.xib; sourceTree = ""; };
+ B3E3B4FC20D463B700DA8C13 /* BMCCategoriesHeader.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BMCCategoriesHeader.xib; sourceTree = ""; };
+ B3E3B50120D485FA00DA8C13 /* DownloadedBookmarksDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DownloadedBookmarksDataSource.swift; sourceTree = ""; };
BB25B1A51FB32767007276FA /* transit_colors.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = transit_colors.txt; path = ../../data/transit_colors.txt; sourceTree = ""; };
BB7626B41E8559980031D71C /* icudt57l.dat */ = {isa = PBXFileReference; lastKnownFileType = file; name = icudt57l.dat; path = ../../data/icudt57l.dat; sourceTree = ""; };
EBDA7B7320B3576D0054165B /* GoogleMobileAds.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleMobileAds.framework; path = MoPubSDK/AdNetworkSupport/AdMob/SDK/GoogleMobileAds.framework; sourceTree = ""; };
@@ -2343,6 +2357,7 @@
isa = PBXGroup;
children = (
34B846A02029DCC10081ECCD /* BMCCategoriesHeader.swift */,
+ B3E3B4FC20D463B700DA8C13 /* BMCCategoriesHeader.xib */,
3404F4972028A20D0090E401 /* BMCCategoryCell.swift */,
3404F4982028A20D0090E401 /* BMCCategoryCell.xib */,
);
@@ -3136,6 +3151,13 @@
B32FE73E20D2844600EF7446 /* DownloadedBookmarksViewController.swift */,
B32FE73F20D2844600EF7446 /* DownloadedBookmarksViewController.xib */,
B32FE74220D2B09600EF7446 /* CatalogWebViewController.swift */,
+ B3E3B50120D485FA00DA8C13 /* DownloadedBookmarksDataSource.swift */,
+ B366130220D5D9BC00E7DC3E /* MWMCatalogCategory.h */,
+ B366130320D5D9BC00E7DC3E /* MWMCatalogCategory.m */,
+ B366130520D5DD2300E7DC3E /* MWMCatalogCategory+Convenience.h */,
+ B366130620D5DD2300E7DC3E /* MWMCatalogCategory+Convenience.mm */,
+ B366130820D5E2E000E7DC3E /* CatalogCategoryCell.swift */,
+ B366130920D5E2E000E7DC3E /* CatalogCategoryCell.xib */,
);
path = Catalog;
sourceTree = "";
@@ -4261,6 +4283,7 @@
6741A9991BF340DE002C974C /* MWMAlertViewController.xib in Resources */,
6741A9881BF340DE002C974C /* MWMAPIBarView.xib in Resources */,
F6E2FE641E097BA00083EBEC /* MWMBookmarkCell.xib in Resources */,
+ B366130B20D5E2E000E7DC3E /* CatalogCategoryCell.xib in Resources */,
34EE25A61EFA6AD400F870AB /* ViatorElement.xib in Resources */,
F6E2FD951E097BA00083EBEC /* MWMBookmarkColorViewController.xib in Resources */,
F6E2FD9B1E097BA00083EBEC /* MWMBookmarkTitleCell.xib in Resources */,
@@ -4349,6 +4372,7 @@
F6E2FEA61E097BA00083EBEC /* MWMPPView.xib in Resources */,
6741A9811BF340DE002C974C /* MWMRateAlert.xib in Resources */,
6741A9601BF340DE002C974C /* MWMRoutingDisclaimerAlert.xib in Resources */,
+ B3E3B4FD20D463B700DA8C13 /* BMCCategoriesHeader.xib in Resources */,
F6E2FF001E097BA00083EBEC /* MWMSearchCategoryCell.xib in Resources */,
F6E2FF331E097BA00083EBEC /* MWMSearchCommonCell.xib in Resources */,
F6E2FF061E097BA00083EBEC /* MWMSearchHistoryClearCell.xib in Resources */,
@@ -4518,6 +4542,7 @@
3467CEB2202C6EEE00D3C670 /* BMCNotificationsHeader.swift in Sources */,
34F4072F1E9E1AFF00E57AC0 /* BannersCache.swift in Sources */,
34D3B0211E389D05004100F9 /* MWMEditorAddAdditionalNameTableViewCell.mm in Sources */,
+ B366130420D5D9BC00E7DC3E /* MWMCatalogCategory.m in Sources */,
3486B51E1E27AD590069C126 /* MWMFrameworkHelper.mm in Sources */,
F6E2FE491E097BA00083EBEC /* MWMPlacePageData.mm in Sources */,
348F8A531F863B6100060C2A /* UGCReview.swift in Sources */,
@@ -4573,6 +4598,7 @@
34D3B0301E389D05004100F9 /* MWMEditorCategoryCell.mm in Sources */,
F653CE191C71F62700A453F1 /* MWMAddPlaceNavigationBar.mm in Sources */,
340475621E081A4600C92850 /* MWMNetworkPolicy.mm in Sources */,
+ B366130720D5DD2300E7DC3E /* MWMCatalogCategory+Convenience.mm in Sources */,
F6E2FEE51E097BA00083EBEC /* MWMSearchNoResults.mm in Sources */,
F6E2FF631E097BA00083EBEC /* MWMTTSLanguageViewController.mm in Sources */,
342EE4121C43DAA7009F6A49 /* MWMAuthorizationWebViewLoginViewController.mm in Sources */,
@@ -4610,6 +4636,7 @@
34BBD6581F826F810070CA50 /* AuthorizationTransitioningManager.swift in Sources */,
F6558DA21E642CC0002203AE /* MWMFacilitiesController.mm in Sources */,
34AB664A1FC5AA330078E451 /* RouteManageriPadPresentationController.swift in Sources */,
+ B366130A20D5E2E000E7DC3E /* CatalogCategoryCell.swift in Sources */,
349D1ACF1E2E325B004A2006 /* MWMBottomMenuCollectionViewCell.mm in Sources */,
F6E2FF451E097BA00083EBEC /* SettingsTableViewLinkCell.swift in Sources */,
34C9BD0A1C6DBCDA000DC38D /* MWMNavigationController.mm in Sources */,
@@ -4642,6 +4669,7 @@
3454D7E01E07F045004AF2AD /* UITextField+RuntimeAttributes.mm in Sources */,
347BFA901F27909200E5531F /* MenuArea.swift in Sources */,
343E75981E5B1EE20041226A /* MWMCollectionViewController.mm in Sources */,
+ B3E3B50220D485FA00DA8C13 /* DownloadedBookmarksDataSource.swift in Sources */,
F6E2FEFA1E097BA00083EBEC /* MWMSearchCategoriesManager.mm in Sources */,
34E776141F14B17F003040B3 /* AvailableArea.swift in Sources */,
34AB66081FC5AA320078E451 /* MWMNavigationDashboardManager.mm in Sources */,
|