forked from organicmaps/organicmaps
[ios] add info section to bookmark list screen
This commit is contained in:
parent
98f8e50eba
commit
b226126a4e
7 changed files with 272 additions and 51 deletions
|
@ -5,6 +5,7 @@
|
|||
#import "MWMLocationHelpers.h"
|
||||
#import "MWMLocationObserver.h"
|
||||
#import "MWMSearchManager.h"
|
||||
#import "MWMCategoryInfoCell.h"
|
||||
#import "SwiftBridge.h"
|
||||
|
||||
#include "Framework.h"
|
||||
|
@ -18,8 +19,9 @@
|
|||
|
||||
#define EMPTY_SECTION -666
|
||||
|
||||
@interface BookmarksVC() <MWMLocationObserver>
|
||||
@interface BookmarksVC() <MWMLocationObserver, MWMCategoryInfoCellDelegate>
|
||||
{
|
||||
int m_infoSection;
|
||||
int m_trackSection;
|
||||
int m_bookmarkSection;
|
||||
int m_numberOfSections;
|
||||
|
@ -68,7 +70,7 @@
|
|||
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
|
||||
{
|
||||
if (section == 0)
|
||||
if (section == m_infoSection)
|
||||
return 1;
|
||||
else if (section == m_trackSection)
|
||||
return GetFramework().GetBookmarkManager().GetTrackIds(m_categoryId).size();
|
||||
|
@ -78,16 +80,10 @@
|
|||
return 0;
|
||||
}
|
||||
|
||||
- (void)onVisibilitySwitched:(UISwitch *)sender
|
||||
{
|
||||
[Statistics logEvent:kStatEventName(kStatBookmarks, kStatToggleVisibility)
|
||||
withParameters:@{kStatValue : sender.on ? kStatVisible : kStatHidden}];
|
||||
auto & bmManager = GetFramework().GetBookmarkManager();
|
||||
bmManager.GetEditSession().SetIsVisible(m_categoryId, sender.on);
|
||||
}
|
||||
|
||||
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
|
||||
{
|
||||
if (section == m_infoSection)
|
||||
return L(@"placepage_place_description");
|
||||
if (section == m_trackSection)
|
||||
return L(@"tracks");
|
||||
if (section == m_bookmarkSection)
|
||||
|
@ -105,22 +101,19 @@
|
|||
|
||||
UITableViewCell * cell = nil;
|
||||
// First section, contains info about current set
|
||||
if (indexPath.section == 0)
|
||||
if (indexPath.section == m_infoSection)
|
||||
{
|
||||
cell = [tableView dequeueReusableCellWithIdentifier:@"BookmarksVCSetVisibilityCell"];
|
||||
if (!cell)
|
||||
{
|
||||
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"BookmarksVCSetVisibilityCell"];
|
||||
cell.textLabel.text = L(@"visible");
|
||||
cell.accessoryView = [[UISwitch alloc] init];
|
||||
cell.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||
}
|
||||
UISwitch * sw = (UISwitch *)cell.accessoryView;
|
||||
sw.on = bmManager.IsVisible(m_categoryId);
|
||||
sw.onTintColor = [UIColor linkBlue];
|
||||
[sw addTarget:self action:@selector(onVisibilitySwitched:) forControlEvents:UIControlEventValueChanged];
|
||||
cell = [tableView dequeueReusableCellWithCellClass:MWMCategoryInfoCell.class indexPath:indexPath];
|
||||
MWMCategoryInfoCell * infoCell = (MWMCategoryInfoCell * )cell;
|
||||
NSString * title = @(bmManager.GetCategoryName(m_categoryId).c_str());
|
||||
auto categoryData = bmManager.GetCategoryData(m_categoryId);
|
||||
NSString * author = [NSString stringWithCoreFormat:L(@"author_name_by_prefix")
|
||||
arguments:@[@(categoryData.m_authorName.c_str())]];
|
||||
NSString * info = @(kml::GetDefaultStr(categoryData.m_description).c_str());
|
||||
NSString * shortInfo = @(kml::GetDefaultStr(categoryData.m_annotation).c_str());
|
||||
[infoCell updateWithTitle:title author:author info:info shortInfo:shortInfo];
|
||||
infoCell.delegate = self;
|
||||
}
|
||||
|
||||
else if (indexPath.section == m_trackSection)
|
||||
{
|
||||
cell = [tableView dequeueReusableCellWithIdentifier:@"TrackCell"];
|
||||
|
@ -187,15 +180,7 @@
|
|||
auto & bmManager = f.GetBookmarkManager();
|
||||
bool const categoryExists = bmManager.HasBmCategory(m_categoryId);
|
||||
ASSERT(categoryExists, ("Nonexistent category"));
|
||||
if (indexPath.section == 0)
|
||||
{
|
||||
if (indexPath.row == 0)
|
||||
{
|
||||
// Edit name
|
||||
// @TODO
|
||||
}
|
||||
}
|
||||
else if (indexPath.section == m_trackSection)
|
||||
if (indexPath.section == m_trackSection)
|
||||
{
|
||||
if (categoryExists)
|
||||
{
|
||||
|
@ -230,7 +215,8 @@
|
|||
|
||||
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
if (indexPath.section == m_trackSection || indexPath.section == m_bookmarkSection)
|
||||
if (!GetFramework().GetBookmarkManager().IsCategoryFromCatalog(m_categoryId) &&
|
||||
(indexPath.section == m_trackSection || indexPath.section == m_bookmarkSection))
|
||||
return YES;
|
||||
return NO;
|
||||
}
|
||||
|
@ -271,6 +257,28 @@
|
|||
}
|
||||
}
|
||||
|
||||
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section {
|
||||
UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
|
||||
|
||||
header.textLabel.textColor = [UIColor blackSecondaryText];
|
||||
header.textLabel.font = [UIFont medium14];
|
||||
}
|
||||
|
||||
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
if (indexPath.section == m_infoSection)
|
||||
return nil;
|
||||
return indexPath;
|
||||
}
|
||||
|
||||
#pragma mark - MWMCategoryInfoCellDelegate
|
||||
|
||||
- (void)categoryInfoCellDidPressMore:(MWMCategoryInfoCell *)cell {
|
||||
[self.tableView beginUpdates];
|
||||
cell.expanded = YES;
|
||||
[self.tableView endUpdates];
|
||||
}
|
||||
|
||||
#pragma mark - MWMLocationObserver
|
||||
|
||||
- (void)onLocationUpdate:(location::GpsInfo const &)info
|
||||
|
@ -302,13 +310,19 @@
|
|||
//*********** End of Location manager callbacks ********************
|
||||
//******************************************************************
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
|
||||
[self.tableView registerWithCellClass:MWMCategoryInfoCell.class];
|
||||
}
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated
|
||||
{
|
||||
[MWMLocationManager addObserver:self];
|
||||
|
||||
// Display Edit button only if table is not empty
|
||||
auto & bmManager = GetFramework().GetBookmarkManager();
|
||||
if (bmManager.HasBmCategory(m_categoryId)
|
||||
if (bmManager.HasBmCategory(m_categoryId) && !bmManager.IsCategoryFromCatalog(m_categoryId)
|
||||
&& (bmManager.GetUserMarkIds(m_categoryId).size() + bmManager.GetTrackIds(m_categoryId).size()))
|
||||
self.navigationItem.rightBarButtonItem = self.editButtonItem;
|
||||
else
|
||||
|
@ -350,16 +364,11 @@
|
|||
|
||||
- (void)calculateSections
|
||||
{
|
||||
int index = 1;
|
||||
int index = 0;
|
||||
auto & bmManager = GetFramework().GetBookmarkManager();
|
||||
if (bmManager.GetTrackIds(m_categoryId).size())
|
||||
m_trackSection = index++;
|
||||
else
|
||||
m_trackSection = EMPTY_SECTION;
|
||||
if (bmManager.GetUserMarkIds(m_categoryId).size())
|
||||
m_bookmarkSection = index++;
|
||||
else
|
||||
m_bookmarkSection = EMPTY_SECTION;
|
||||
m_infoSection = bmManager.IsCategoryFromCatalog(m_categoryId) ? index++ : EMPTY_SECTION;
|
||||
m_trackSection = bmManager.GetTrackIds(m_categoryId).size() ? index++ : EMPTY_SECTION;
|
||||
m_bookmarkSection = bmManager.GetUserMarkIds(m_categoryId).size() ? index ++ : EMPTY_SECTION;
|
||||
m_numberOfSections = index;
|
||||
}
|
||||
|
||||
|
|
|
@ -48,6 +48,15 @@ class DownloadedBookmarksViewController: UITableViewController {
|
|||
return headerView
|
||||
}
|
||||
|
||||
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||
tableView.deselectRow(at: indexPath, animated: true)
|
||||
let category = dataSource.category(at: indexPath.row)
|
||||
if let bmViewController = BookmarksVC(category: category.categoryId) {
|
||||
MapViewController.topViewController().navigationController?.pushViewController(bmViewController,
|
||||
animated: true)
|
||||
}
|
||||
}
|
||||
|
||||
@IBAction func onDownloadBookmarks(_ sender: Any) {
|
||||
if let url = MWMBookmarksManager.catalogFrontendUrl(),
|
||||
let webViewController = CatalogWebViewController(url: url, andTitleOrNil: L("routes_and_bookmarks")) {
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<rect key="frame" x="16" y="16" width="343" height="44"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="44" id="I5l-6h-e83"/>
|
||||
<constraint firstAttribute="height" priority="750" constant="44" id="I5l-6h-e83"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
|
||||
<state key="normal" title="DOWNLOAD BOOKMARKS">
|
||||
|
@ -70,11 +70,11 @@
|
|||
<point key="canvasLocation" x="483" y="492"/>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" id="EF0-Bq-c6F">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="347"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="349"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="img_empty_bookmarks" translatesAutoresizingMaskIntoConstraints="NO" id="ahy-M3-meH">
|
||||
<rect key="frame" x="87" y="40" width="200" height="200"/>
|
||||
<rect key="frame" x="87.5" y="40" width="200" height="200"/>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Download new places" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="13b-uj-bGK">
|
||||
<rect key="frame" x="16" y="256" width="343" height="24"/>
|
||||
|
@ -85,8 +85,8 @@
|
|||
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="cached_bookmarks_placeholder_title"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1gY-vv-QfN">
|
||||
<rect key="frame" x="16" y="288" width="343" height="50.5"/>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="TopLeft" horizontalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1gY-vv-QfN">
|
||||
<rect key="frame" x="16" y="288" width="343" height="53"/>
|
||||
<string key="text">Press the button to download thousands of intresting places and routes created by MAPS.ME users. You will need the internet connection.</string>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<color key="textColor" white="0.0" alpha="0.53735017123287676" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
|
@ -110,7 +110,7 @@
|
|||
</constraints>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<viewLayoutGuide key="safeArea" id="jiO-QA-gWD"/>
|
||||
<point key="canvasLocation" x="450.5" y="157.5"/>
|
||||
<point key="canvasLocation" x="450.5" y="158.5"/>
|
||||
</view>
|
||||
</objects>
|
||||
<resources>
|
||||
|
|
17
iphone/Maps/Bookmarks/MWMCategoryInfoCell.h
Normal file
17
iphone/Maps/Bookmarks/MWMCategoryInfoCell.h
Normal file
|
@ -0,0 +1,17 @@
|
|||
#import <UIKit/UIKit.h>
|
||||
|
||||
@class MWMCategoryInfoCell;
|
||||
|
||||
@protocol MWMCategoryInfoCellDelegate
|
||||
- (void)categoryInfoCellDidPressMore:(MWMCategoryInfoCell *)cell;
|
||||
@end
|
||||
|
||||
@interface MWMCategoryInfoCell : UITableViewCell
|
||||
@property (nonatomic) BOOL expanded;
|
||||
@property (weak, nonatomic) id<MWMCategoryInfoCellDelegate> delegate;
|
||||
|
||||
- (void)updateWithTitle:(NSString *)title
|
||||
author:(NSString *)author
|
||||
info:(NSString *)info
|
||||
shortInfo:(NSString *)shortInfo;
|
||||
@end
|
80
iphone/Maps/Bookmarks/MWMCategoryInfoCell.m
Normal file
80
iphone/Maps/Bookmarks/MWMCategoryInfoCell.m
Normal file
|
@ -0,0 +1,80 @@
|
|||
#import "MWMCategoryInfoCell.h"
|
||||
|
||||
@interface MWMCategoryInfoCell()
|
||||
|
||||
@property (weak, nonatomic) IBOutlet UILabel * titleLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel * authorLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel * infoLabel;
|
||||
@property (weak, nonatomic) IBOutlet UIButton *moreButton;
|
||||
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *infoToBottomConstraint;
|
||||
|
||||
@property (copy, nonatomic) NSString * info;
|
||||
@property (copy, nonatomic) NSString * shortInfo;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MWMCategoryInfoCell
|
||||
|
||||
- (void)awakeFromNib {
|
||||
[super awakeFromNib];
|
||||
|
||||
self.titleLabel.text = nil;
|
||||
self.authorLabel.text = nil;
|
||||
self.infoLabel.text = nil;
|
||||
}
|
||||
|
||||
- (void)setExpanded:(BOOL)expanded
|
||||
{
|
||||
_expanded = expanded;
|
||||
if (self.shortInfo.length > 0 && self.info.length > 0)
|
||||
self.infoLabel.text = expanded ? self.info : self.shortInfo;
|
||||
else
|
||||
self.infoLabel.numberOfLines = expanded ? 0 : 2;
|
||||
|
||||
self.infoToBottomConstraint.active = expanded;
|
||||
self.moreButton.hidden = expanded;
|
||||
}
|
||||
|
||||
- (void)updateWithTitle:(NSString *)title
|
||||
author:(NSString *)author
|
||||
info:(NSString *)info
|
||||
shortInfo:(NSString *)shortInfo
|
||||
{
|
||||
self.titleLabel.text = title;
|
||||
self.authorLabel.text = author;
|
||||
if (info.length > 0 && shortInfo.length > 0)
|
||||
{
|
||||
self.info = info;
|
||||
self.shortInfo = shortInfo;
|
||||
self.infoLabel.text = shortInfo;
|
||||
self.infoLabel.numberOfLines = 0;
|
||||
}
|
||||
else if (info.length > 0 || shortInfo.length > 0)
|
||||
{
|
||||
self.infoLabel.text = info.length > 0 ? info : shortInfo;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.expanded = YES;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)prepareForReuse
|
||||
{
|
||||
[super prepareForReuse];
|
||||
|
||||
self.titleLabel.text = nil;
|
||||
self.authorLabel.text = nil;
|
||||
self.infoLabel.text = nil;
|
||||
self.expanded = NO;
|
||||
self.info = nil;
|
||||
self.shortInfo = nil;
|
||||
self.delegate = nil;
|
||||
}
|
||||
|
||||
- (IBAction)onMoreButton:(UIButton *)sender
|
||||
{
|
||||
[self.delegate categoryInfoCellDidPressMore:self];
|
||||
}
|
||||
|
||||
@end
|
96
iphone/Maps/Bookmarks/MWMCategoryInfoCell.xib
Normal file
96
iphone/Maps/Bookmarks/MWMCategoryInfoCell.xib
Normal file
|
@ -0,0 +1,96 @@
|
|||
<?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="TopLeft" selectionStyle="none" indentationWidth="10" rowHeight="120" id="KGk-i7-Jjw" customClass="MWMCategoryInfoCell">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="120"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="TopLeft" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="119.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="TopLeft" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="My 5-days route to the USA" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2Sb-Xn-590">
|
||||
<rect key="frame" x="16" y="11" width="288" height="17"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/>
|
||||
<nil key="textColor"/>
|
||||
<color key="highlightedColor" white="0.0" alpha="0.86847174657534243" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="TopLeft" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="by Eugene Lisovskiy" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mV8-w9-Csf">
|
||||
<rect key="frame" x="16" y="32" width="288" height="15"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<nil key="textColor"/>
|
||||
<color key="highlightedColor" white="0.0" alpha="0.38184931506849318" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="TopLeft" horizontalHuggingPriority="251" verticalCompressionResistancePriority="250" text="Completed in 1926, iconic Route 66 connected Chicago and Los Angeles across the heartland of" textAlignment="natural" lineBreakMode="clip" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="REU-RG-LGL">
|
||||
<rect key="frame" x="16" y="55" width="288" height="33.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<nil key="textColor"/>
|
||||
<color key="highlightedColor" white="0.0" alpha="0.8652878852739726" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hdk-zR-sUE">
|
||||
<rect key="frame" x="16" y="88.5" width="45" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" priority="750" constant="20" id="HMg-Nx-kYJ"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<state key="normal" title="...more"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="textColorName" value="linkBlue"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="onMoreButton:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="FBX-DJ-aPn"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="2Sb-Xn-590" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="11" id="06s-Nb-idM"/>
|
||||
<constraint firstItem="hdk-zR-sUE" firstAttribute="top" secondItem="REU-RG-LGL" secondAttribute="bottom" id="EdF-Vq-TKn"/>
|
||||
<constraint firstItem="REU-RG-LGL" firstAttribute="trailing" secondItem="mV8-w9-Csf" secondAttribute="trailing" id="FUx-8e-EA7"/>
|
||||
<constraint firstAttribute="bottom" secondItem="REU-RG-LGL" secondAttribute="bottom" priority="751" constant="11" id="Kiq-Xb-qLQ"/>
|
||||
<constraint firstAttribute="bottom" secondItem="hdk-zR-sUE" secondAttribute="bottom" priority="750" constant="11" id="L6s-9n-X4B"/>
|
||||
<constraint firstItem="mV8-w9-Csf" firstAttribute="top" secondItem="2Sb-Xn-590" secondAttribute="bottom" constant="4" id="Nlu-YT-Drx"/>
|
||||
<constraint firstItem="mV8-w9-Csf" firstAttribute="trailing" secondItem="2Sb-Xn-590" secondAttribute="trailing" id="R0w-5g-kbu"/>
|
||||
<constraint firstAttribute="trailing" secondItem="2Sb-Xn-590" secondAttribute="trailing" constant="16" id="VHn-ij-MgE"/>
|
||||
<constraint firstItem="REU-RG-LGL" firstAttribute="leading" secondItem="mV8-w9-Csf" secondAttribute="leading" id="m1J-7d-l0A"/>
|
||||
<constraint firstItem="mV8-w9-Csf" firstAttribute="leading" secondItem="2Sb-Xn-590" secondAttribute="leading" id="myY-Va-fju"/>
|
||||
<constraint firstItem="hdk-zR-sUE" firstAttribute="leading" secondItem="REU-RG-LGL" secondAttribute="leading" id="nou-Xi-LNB"/>
|
||||
<constraint firstItem="REU-RG-LGL" firstAttribute="top" secondItem="mV8-w9-Csf" secondAttribute="bottom" constant="8" id="uMb-Nv-0Of"/>
|
||||
<constraint firstItem="2Sb-Xn-590" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="16" id="yNi-iw-loo"/>
|
||||
</constraints>
|
||||
<variation key="default">
|
||||
<mask key="constraints">
|
||||
<exclude reference="Kiq-Xb-qLQ"/>
|
||||
</mask>
|
||||
</variation>
|
||||
</tableViewCellContentView>
|
||||
<viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
|
||||
<connections>
|
||||
<outlet property="authorLabel" destination="mV8-w9-Csf" id="a7D-rh-lb9"/>
|
||||
<outlet property="infoLabel" destination="REU-RG-LGL" id="iYY-qf-S0N"/>
|
||||
<outlet property="infoToBottomConstraint" destination="Kiq-Xb-qLQ" id="IGx-bb-Y5S"/>
|
||||
<outlet property="moreButton" destination="hdk-zR-sUE" id="z6v-GK-SiE"/>
|
||||
<outlet property="titleLabel" destination="2Sb-Xn-590" id="2uv-OT-ljT"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="34" y="92"/>
|
||||
</tableViewCell>
|
||||
</objects>
|
||||
</document>
|
|
@ -468,6 +468,8 @@
|
|||
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 */; };
|
||||
B33D21AC20DA515800BAD749 /* MWMCategoryInfoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B33D21AA20DA515800BAD749 /* MWMCategoryInfoCell.m */; };
|
||||
B33D21AD20DA515800BAD749 /* MWMCategoryInfoCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B33D21AB20DA515800BAD749 /* MWMCategoryInfoCell.xib */; };
|
||||
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 */; };
|
||||
|
@ -1393,6 +1395,9 @@
|
|||
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>"; };
|
||||
B33D21A920DA515800BAD749 /* MWMCategoryInfoCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMCategoryInfoCell.h; sourceTree = "<group>"; };
|
||||
B33D21AA20DA515800BAD749 /* MWMCategoryInfoCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MWMCategoryInfoCell.m; sourceTree = "<group>"; };
|
||||
B33D21AB20DA515800BAD749 /* MWMCategoryInfoCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MWMCategoryInfoCell.xib; 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>"; };
|
||||
|
@ -4101,6 +4106,9 @@
|
|||
B32FE73D20D283D600EF7446 /* Catalog */,
|
||||
FA36B80515403A4F004560CC /* BookmarksVC.h */,
|
||||
FA36B80615403A4F004560CC /* BookmarksVC.mm */,
|
||||
B33D21A920DA515800BAD749 /* MWMCategoryInfoCell.h */,
|
||||
B33D21AA20DA515800BAD749 /* MWMCategoryInfoCell.m */,
|
||||
B33D21AB20DA515800BAD749 /* MWMCategoryInfoCell.xib */,
|
||||
3404F4A02028A6C00090E401 /* Categories */,
|
||||
FA054610155C465E001F4E37 /* SelectSetVC.h */,
|
||||
FA054611155C465E001F4E37 /* SelectSetVC.mm */,
|
||||
|
@ -4428,6 +4436,7 @@
|
|||
340E1EF51E2F614400CE49BF /* SearchFilters.storyboard in Resources */,
|
||||
B32FE74120D2844600EF7446 /* DownloadedBookmarksViewController.xib in Resources */,
|
||||
F682249F1E5B105900BC1C18 /* PPHotelDescriptionCell.xib in Resources */,
|
||||
B33D21AD20DA515800BAD749 /* MWMCategoryInfoCell.xib in Resources */,
|
||||
340E1EF81E2F614400CE49BF /* Settings.storyboard in Resources */,
|
||||
6741A9421BF340DE002C974C /* sound-strings in Resources */,
|
||||
F69018BD1E9F7CB600B3C10B /* MWMAutoupdateController.xib in Resources */,
|
||||
|
@ -4603,6 +4612,7 @@
|
|||
F6E2FF631E097BA00083EBEC /* MWMTTSLanguageViewController.mm in Sources */,
|
||||
342EE4121C43DAA7009F6A49 /* MWMAuthorizationWebViewLoginViewController.mm in Sources */,
|
||||
34AB667D1FC5AA330078E451 /* MWMRoutePreview.mm in Sources */,
|
||||
B33D21AC20DA515800BAD749 /* MWMCategoryInfoCell.m in Sources */,
|
||||
34845DAF1E1649F6003D55B9 /* DownloaderNoResultsEmbedViewController.swift in Sources */,
|
||||
F6791B141C43DF0B007A8A6E /* MWMStartButton.mm in Sources */,
|
||||
F6E2FEDF1E097BA00083EBEC /* MWMSearchManager+Layout.mm in Sources */,
|
||||
|
|
Loading…
Add table
Reference in a new issue