forked from organicmaps/organicmaps
[ios] display a list of downloaded categories
This commit is contained in:
parent
4856f9c5d0
commit
24ab5eefb0
25 changed files with 393 additions and 81 deletions
33
iphone/Maps/Bookmarks/Catalog/CatalogCategoryCell.swift
Normal file
33
iphone/Maps/Bookmarks/Catalog/CatalogCategoryCell.swift
Normal file
|
@ -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
|
||||
}
|
||||
}
|
92
iphone/Maps/Bookmarks/Catalog/CatalogCategoryCell.xib
Normal file
92
iphone/Maps/Bookmarks/Catalog/CatalogCategoryCell.xib
Normal file
|
@ -0,0 +1,92 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="KGk-i7-Jjw" customClass="CatalogCategoryCell" customModule="maps_me" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="60"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="59.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TYb-q4-3hJ" customClass="Checkmark" customModule="maps_me" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="56" height="60"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="56" id="gNZ-kZ-bfY"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="image" keyPath="offImage" value="radioBtnOff"/>
|
||||
<userDefinedRuntimeAttribute type="image" keyPath="onImage" value="radioBtnOn"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="onVisibleChanged:" destination="KGk-i7-Jjw" eventType="valueChanged" id="phf-eN-eSI"/>
|
||||
</connections>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9gp-G7-fer">
|
||||
<rect key="frame" x="56" y="8" width="208" height="21"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DlK-AV-gvk">
|
||||
<rect key="frame" x="56" y="33" width="208" height="19"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Uym-iO-PUK">
|
||||
<rect key="frame" x="264" y="0.0" width="56" height="60"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="56" id="MHu-fs-l19"/>
|
||||
</constraints>
|
||||
<state key="normal" image="ic24PxMore"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="tintColorName" value="blackSecondaryText"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="onMoreButton:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="SQV-hf-5f6"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="DlK-AV-gvk" firstAttribute="leading" secondItem="TYb-q4-3hJ" secondAttribute="trailing" id="6iy-4T-op1"/>
|
||||
<constraint firstItem="Uym-iO-PUK" firstAttribute="leading" secondItem="DlK-AV-gvk" secondAttribute="trailing" id="C2c-q6-XLQ"/>
|
||||
<constraint firstItem="TYb-q4-3hJ" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="KIN-eE-1dv"/>
|
||||
<constraint firstAttribute="bottom" secondItem="TYb-q4-3hJ" secondAttribute="bottom" constant="-0.5" id="Mfy-Hf-GCo"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Uym-iO-PUK" secondAttribute="bottom" constant="-0.5" id="QfH-v8-SbY"/>
|
||||
<constraint firstItem="Uym-iO-PUK" firstAttribute="leading" secondItem="9gp-G7-fer" secondAttribute="trailing" id="VOq-lS-OVx"/>
|
||||
<constraint firstItem="9gp-G7-fer" firstAttribute="leading" secondItem="TYb-q4-3hJ" secondAttribute="trailing" id="Xme-W9-A4y"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Uym-iO-PUK" secondAttribute="trailing" id="bQT-gf-HGR"/>
|
||||
<constraint firstItem="DlK-AV-gvk" firstAttribute="top" secondItem="9gp-G7-fer" secondAttribute="bottom" constant="4" id="bqJ-pJ-fN2"/>
|
||||
<constraint firstItem="Uym-iO-PUK" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="hhn-Df-SPi"/>
|
||||
<constraint firstItem="9gp-G7-fer" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="8" id="hs7-rh-zCp"/>
|
||||
<constraint firstAttribute="bottom" secondItem="DlK-AV-gvk" secondAttribute="bottom" constant="8" id="kL6-qB-Ltr"/>
|
||||
<constraint firstItem="TYb-q4-3hJ" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="tbN-ht-fVP"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<viewLayoutGuide key="safeArea" id="njF-e1-oar"/>
|
||||
<connections>
|
||||
<outlet property="moreButton" destination="Uym-iO-PUK" id="4r9-6m-ydT"/>
|
||||
<outlet property="subtitleLabel" destination="DlK-AV-gvk" id="lLy-5A-oCH"/>
|
||||
<outlet property="titleLabel" destination="9gp-G7-fer" id="Ubj-0i-YWi"/>
|
||||
<outlet property="visibleCheckmark" destination="TYb-q4-3hJ" id="EdR-5o-6bz"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="ic24PxMore" width="24" height="24"/>
|
||||
<image name="radioBtnOff" width="22" height="22"/>
|
||||
<image name="radioBtnOn" width="22" height="22"/>
|
||||
</resources>
|
||||
</document>
|
|
@ -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]
|
||||
}
|
||||
}
|
|
@ -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) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,10 +18,10 @@
|
|||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<tableView opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" bouncesZoom="NO" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="i5M-Pr-FkT">
|
||||
<tableView opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" bouncesZoom="NO" style="grouped" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="18" sectionFooterHeight="18" id="i5M-Pr-FkT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
|
||||
<viewLayoutGuide key="safeArea" id="vLr-E1-eTs"/>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="-1" id="Tng-2m-Rnh"/>
|
||||
|
@ -58,7 +58,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="mHu-Y0-fCQ" firstAttribute="bottom" secondItem="Yjf-3F-Ewf" secondAttribute="bottom" constant="16" id="9ps-Bp-5C5"/>
|
||||
<constraint firstItem="Yjf-3F-Ewf" firstAttribute="leading" secondItem="mHu-Y0-fCQ" secondAttribute="leading" constant="16" id="LCM-df-yqM"/>
|
||||
|
@ -96,7 +96,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="1gY-vv-QfN" firstAttribute="trailing" secondItem="13b-uj-bGK" secondAttribute="trailing" id="24k-XV-fh7"/>
|
||||
<constraint firstItem="13b-uj-bGK" firstAttribute="leading" secondItem="jiO-QA-gWD" secondAttribute="leading" constant="16" id="JLq-wb-chA"/>
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
#import "MWMCatalogCategory.h"
|
||||
#include "Framework.h"
|
||||
|
||||
@interface MWMCatalogCategory (Convenience)
|
||||
|
||||
- (instancetype)initWithCategoryData:(kml::CategoryData &)categoryData bookmarksCount:(UInt64)count;
|
||||
|
||||
@end
|
|
@ -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
|
14
iphone/Maps/Bookmarks/Catalog/MWMCatalogCategory.h
Normal file
14
iphone/Maps/Bookmarks/Catalog/MWMCatalogCategory.h
Normal file
|
@ -0,0 +1,14 @@
|
|||
#import <Foundation/Foundation.h>
|
||||
|
||||
@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
|
5
iphone/Maps/Bookmarks/Catalog/MWMCatalogCategory.m
Normal file
5
iphone/Maps/Bookmarks/Catalog/MWMCatalogCategory.m
Normal file
|
@ -0,0 +1,5 @@
|
|||
#import "MWMCatalogCategory.h"
|
||||
|
||||
@implementation MWMCatalogCategory
|
||||
|
||||
@end
|
|
@ -1,18 +1,18 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="KGk-i7-Jjw" customClass="BMCActionsCreateCell" customModule="maps_me" customModuleProvider="target" propertyAccessControl="all">
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="KGk-i7-Jjw" customClass="BMCActionsCreateCell" customModule="maps_me" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
|
||||
|
@ -43,7 +43,6 @@
|
|||
<constraint firstItem="2jJ-Pu-pjy" firstAttribute="centerY" secondItem="YDi-5J-vFD" secondAttribute="centerY" id="h3L-zB-b66"/>
|
||||
<constraint firstItem="paw-km-zXg" firstAttribute="leading" secondItem="YDi-5J-vFD" secondAttribute="leading" constant="16" id="hTc-Pj-9Kf"/>
|
||||
<constraint firstItem="2jJ-Pu-pjy" firstAttribute="leading" secondItem="paw-km-zXg" secondAttribute="trailing" constant="16" id="maj-Zr-I2l"/>
|
||||
<constraint firstAttribute="height" constant="44" id="rhS-LZ-kol"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="BMCViewController" customModule="maps_me" customModuleProvider="target">
|
||||
<connections>
|
||||
<outlet property="actionsHeader" destination="DhR-7O-ccQ" id="PPD-Ov-b69"/>
|
||||
<outlet property="categoriesHeader" destination="7vF-P7-dID" id="ITV-Gt-Hq9"/>
|
||||
<outlet property="notificationsHeader" destination="G0o-Op-zPp" id="PUK-3H-1q3"/>
|
||||
<outlet property="permissionsHeader" destination="JS4-5h-4t1" id="SNP-yf-fbK"/>
|
||||
<outlet property="tableView" destination="2ia-hi-UhQ" id="qJG-eV-PoF"/>
|
||||
|
@ -108,53 +107,6 @@
|
|||
</connections>
|
||||
<point key="canvasLocation" x="482.5" y="-256"/>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" id="7vF-P7-dID" customClass="BMCCategoriesHeader" customModule="maps_me" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="48"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="sv4-Wg-K1m">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="48"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1W2-mD-BVK">
|
||||
<rect key="frame" x="16" y="13" width="42" height="21"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JVu-ay-TFe">
|
||||
<rect key="frame" x="361" y="0.0" width="14" height="48"/>
|
||||
<inset key="contentEdgeInsets" minX="0.0" minY="0.0" maxX="14" maxY="0.0"/>
|
||||
<connections>
|
||||
<action selector="buttonAction" destination="7vF-P7-dID" eventType="touchUpInside" id="lct-Zb-Kp2"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="JVu-ay-TFe" firstAttribute="top" secondItem="sv4-Wg-K1m" secondAttribute="top" id="2Q9-Di-gao"/>
|
||||
<constraint firstAttribute="trailing" secondItem="JVu-ay-TFe" secondAttribute="trailing" id="KIx-2a-nNg"/>
|
||||
<constraint firstItem="1W2-mD-BVK" firstAttribute="centerY" secondItem="sv4-Wg-K1m" secondAttribute="centerY" id="OAv-W6-rZH"/>
|
||||
<constraint firstAttribute="bottom" secondItem="JVu-ay-TFe" secondAttribute="bottom" id="TkC-ge-8MO"/>
|
||||
<constraint firstItem="1W2-mD-BVK" firstAttribute="leading" secondItem="sv4-Wg-K1m" secondAttribute="leading" constant="16" id="cad-o8-xir"/>
|
||||
<constraint firstItem="JVu-ay-TFe" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="1W2-mD-BVK" secondAttribute="trailing" constant="4" id="gDO-lh-aI1"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="sv4-Wg-K1m" firstAttribute="leading" secondItem="8ge-Sy-Y71" secondAttribute="leading" id="5Lw-3V-bwA"/>
|
||||
<constraint firstItem="8ge-Sy-Y71" firstAttribute="bottom" secondItem="sv4-Wg-K1m" secondAttribute="bottom" id="Sn0-II-lrv"/>
|
||||
<constraint firstItem="8ge-Sy-Y71" firstAttribute="trailing" secondItem="sv4-Wg-K1m" secondAttribute="trailing" id="TX6-c7-3GF"/>
|
||||
<constraint firstItem="sv4-Wg-K1m" firstAttribute="top" secondItem="8ge-Sy-Y71" secondAttribute="top" id="fpS-lQ-tKT"/>
|
||||
</constraints>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<viewLayoutGuide key="safeArea" id="8ge-Sy-Y71"/>
|
||||
<connections>
|
||||
<outlet property="button" destination="JVu-ay-TFe" id="NvE-E2-iLL"/>
|
||||
<outlet property="label" destination="1W2-mD-BVK" id="OxC-ur-rcv"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="483" y="-148"/>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" id="DhR-7O-ccQ">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="24"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="hpL-he-7N6" customClass="BMCCategoriesHeader" customModule="maps_me" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="48"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qNi-Yh-Bat">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="48"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PGC-cy-M2K">
|
||||
<rect key="frame" x="16" y="13" width="42" height="21"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3hn-pU-MI1">
|
||||
<rect key="frame" x="302" y="0.0" width="73" height="48"/>
|
||||
<inset key="contentEdgeInsets" minX="0.0" minY="0.0" maxX="14" maxY="0.0"/>
|
||||
<state key="normal" title="Show All"/>
|
||||
<connections>
|
||||
<action selector="buttonAction" destination="hpL-he-7N6" eventType="touchUpInside" id="mQo-HU-GKM"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="PGC-cy-M2K" firstAttribute="leading" secondItem="qNi-Yh-Bat" secondAttribute="leading" constant="16" id="2OC-uL-Mgr"/>
|
||||
<constraint firstItem="PGC-cy-M2K" firstAttribute="centerY" secondItem="qNi-Yh-Bat" secondAttribute="centerY" id="44v-Uo-bj7"/>
|
||||
<constraint firstAttribute="trailing" secondItem="3hn-pU-MI1" secondAttribute="trailing" id="HNq-6x-QDD"/>
|
||||
<constraint firstAttribute="bottom" secondItem="3hn-pU-MI1" secondAttribute="bottom" id="VCh-vb-yPn"/>
|
||||
<constraint firstItem="3hn-pU-MI1" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="PGC-cy-M2K" secondAttribute="trailing" constant="4" id="hGm-gr-ABM"/>
|
||||
<constraint firstItem="3hn-pU-MI1" firstAttribute="top" secondItem="qNi-Yh-Bat" secondAttribute="top" id="thZ-ah-uC2"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="aw1-gI-QsW" firstAttribute="trailing" secondItem="qNi-Yh-Bat" secondAttribute="trailing" id="4t4-Hg-Xce"/>
|
||||
<constraint firstItem="aw1-gI-QsW" firstAttribute="bottom" secondItem="qNi-Yh-Bat" secondAttribute="bottom" id="Ptg-FC-sav"/>
|
||||
<constraint firstItem="qNi-Yh-Bat" firstAttribute="leading" secondItem="aw1-gI-QsW" secondAttribute="leading" id="XuM-Ot-YqM"/>
|
||||
<constraint firstItem="qNi-Yh-Bat" firstAttribute="top" secondItem="aw1-gI-QsW" secondAttribute="top" id="cp0-ul-dGE"/>
|
||||
</constraints>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<viewLayoutGuide key="safeArea" id="aw1-gI-QsW"/>
|
||||
<connections>
|
||||
<outlet property="button" destination="3hn-pU-MI1" id="aAd-Ov-dIM"/>
|
||||
<outlet property="label" destination="PGC-cy-M2K" id="D2m-ae-X57"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="483" y="-148"/>
|
||||
</view>
|
||||
</objects>
|
||||
</document>
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -74,3 +74,4 @@
|
|||
#import "UIFont+MapsMeFonts.h"
|
||||
#import "UIViewController+Navigation.h"
|
||||
#import "WebViewController.h"
|
||||
#import "MWMCatalogCategory.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;
|
||||
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -30,4 +30,12 @@ extension UITableView {
|
|||
func dequeueReusableCell<Cell>(cell: Cell.Type, indexPath: IndexPath) -> Cell where Cell: UITableViewCell {
|
||||
return dequeueReusableCell(withIdentifier: toString(cell), for: indexPath) as! Cell
|
||||
}
|
||||
|
||||
func registerNibForHeaderFooterView<View>(_ view: View.Type) where View: UIView {
|
||||
register(UINib(view), forHeaderFooterViewReuseIdentifier: toString(view))
|
||||
}
|
||||
|
||||
func dequeueReusableHeaderFooterView<View>(_ view: View.Type) -> View where View: UIView {
|
||||
return dequeueReusableHeaderFooterView(withIdentifier: toString(view)) as! View
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#import "MWMBookmarksObserver.h"
|
||||
#import "MWMTypes.h"
|
||||
|
||||
@class MWMCatalogCategory;
|
||||
|
||||
@interface MWMBookmarksManager : NSObject
|
||||
|
||||
+ (void)addObserver:(id<MWMBookmarksObserver>)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<MWMCatalogCategory *> * _Nonnull)categoriesFromCatalog;
|
||||
|
||||
- (instancetype)init __attribute__((unavailable("call +manager instead")));
|
||||
- (instancetype)copy __attribute__((unavailable("call +manager instead")));
|
||||
|
|
|
@ -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<MWMCatalogCategory *> *)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
|
||||
|
|
|
@ -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 = "<group>"; };
|
||||
B32FE73F20D2844600EF7446 /* DownloadedBookmarksViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DownloadedBookmarksViewController.xib; sourceTree = "<group>"; };
|
||||
B32FE74220D2B09600EF7446 /* CatalogWebViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CatalogWebViewController.swift; sourceTree = "<group>"; };
|
||||
B366130220D5D9BC00E7DC3E /* MWMCatalogCategory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMCatalogCategory.h; sourceTree = "<group>"; };
|
||||
B366130320D5D9BC00E7DC3E /* MWMCatalogCategory.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MWMCatalogCategory.m; sourceTree = "<group>"; };
|
||||
B366130520D5DD2300E7DC3E /* MWMCatalogCategory+Convenience.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MWMCatalogCategory+Convenience.h"; sourceTree = "<group>"; };
|
||||
B366130620D5DD2300E7DC3E /* MWMCatalogCategory+Convenience.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "MWMCatalogCategory+Convenience.mm"; sourceTree = "<group>"; };
|
||||
B366130820D5E2E000E7DC3E /* CatalogCategoryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CatalogCategoryCell.swift; sourceTree = "<group>"; };
|
||||
B366130920D5E2E000E7DC3E /* CatalogCategoryCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CatalogCategoryCell.xib; sourceTree = "<group>"; };
|
||||
B3E3B4FC20D463B700DA8C13 /* BMCCategoriesHeader.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BMCCategoriesHeader.xib; sourceTree = "<group>"; };
|
||||
B3E3B50120D485FA00DA8C13 /* DownloadedBookmarksDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DownloadedBookmarksDataSource.swift; sourceTree = "<group>"; };
|
||||
BB25B1A51FB32767007276FA /* transit_colors.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = transit_colors.txt; path = ../../data/transit_colors.txt; sourceTree = "<group>"; };
|
||||
BB7626B41E8559980031D71C /* icudt57l.dat */ = {isa = PBXFileReference; lastKnownFileType = file; name = icudt57l.dat; path = ../../data/icudt57l.dat; sourceTree = "<group>"; };
|
||||
EBDA7B7320B3576D0054165B /* GoogleMobileAds.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleMobileAds.framework; path = MoPubSDK/AdNetworkSupport/AdMob/SDK/GoogleMobileAds.framework; sourceTree = "<group>"; };
|
||||
|
@ -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 = "<group>";
|
||||
|
@ -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 */,
|
||||
|
|
Loading…
Add table
Reference in a new issue