Merge pull request #3275 from igrechuhin/MAPSME-641

[ios] Added simplified support for localized names.
This commit is contained in:
mgsergio 2016-06-01 13:37:47 +04:00
commit 493df88d76
57 changed files with 1182 additions and 59 deletions

View file

@ -0,0 +1,18 @@
#import "MWMTableViewController.h"
#include "indexer/editable_map_object.hpp"
@protocol MWMEditorAdditionalNamesProtocol <NSObject>
- (void)addAdditionalName:(NSInteger)languageIndex;
@end
@interface MWMEditorAdditionalNamesTableViewController : MWMTableViewController
- (void)configWithDelegate:(id<MWMEditorAdditionalNamesProtocol>)delegate
name:(StringUtf8Multilang const &)name
additionalSkipLanguageCodes:(vector<NSInteger>)additionalSkipLanguageCodes
selectedLanguageCode:(NSInteger)selectedLanguageCode;
@end

View file

@ -0,0 +1,92 @@
#import "MWMEditorAdditionalNamesTableViewController.h"
#import "MWMTableViewCell.h"
#include "indexer/editable_map_object.hpp"
@interface MWMEditorAdditionalNamesTableViewController ()
@property (nonatomic) NSInteger selectedLanguageCode;
@property (weak, nonatomic) id<MWMEditorAdditionalNamesProtocol> delegate;
@end
@implementation MWMEditorAdditionalNamesTableViewController
{
StringUtf8Multilang m_name;
vector<StringUtf8Multilang::Lang> m_languages;
vector<NSInteger> m_additionalSkipLanguageCodes;
}
#pragma mark - UITableViewDataSource
- (void)configWithDelegate:(id<MWMEditorAdditionalNamesProtocol>)delegate
name:(StringUtf8Multilang const &)name
additionalSkipLanguageCodes:(vector<NSInteger>)additionalSkipLanguageCodes
selectedLanguageCode:(NSInteger)selectedLanguageCode
{
self.delegate = delegate;
m_name = name;
m_additionalSkipLanguageCodes = additionalSkipLanguageCodes;
self.selectedLanguageCode = selectedLanguageCode;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = L(@"choose_language");
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
StringUtf8Multilang::Languages const & supportedLanguages = StringUtf8Multilang::GetSupportedLanguages();
m_languages.clear();
for (auto const & language : supportedLanguages)
{
int8_t const languageIndex = StringUtf8Multilang::GetLangIndex(language.m_code);
string tmpStr;
if (self.selectedLanguageCode == StringUtf8Multilang::kDefaultCode ||
self.selectedLanguageCode == StringUtf8Multilang::kInternationalCode ||
(self.selectedLanguageCode == NSNotFound && m_name.GetString(languageIndex, tmpStr)))
continue;
auto it = find(m_additionalSkipLanguageCodes.begin(), m_additionalSkipLanguageCodes.end(), languageIndex);
if (it == m_additionalSkipLanguageCodes.end())
m_languages.push_back(language);
}
sort(m_languages.begin(), m_languages.end(),
[](StringUtf8Multilang::Lang const & a, StringUtf8Multilang::Lang const & b)
{
return string(a.m_code) < string(b.m_code);
});
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MWMTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"ListCellIdentifier"];
NSInteger const index = indexPath.row;
StringUtf8Multilang::Lang const & language = m_languages[index];
cell.textLabel.text = @(language.m_name);
cell.detailTextLabel.text = @(language.m_code);
int8_t const languageIndex = StringUtf8Multilang::GetLangIndex(language.m_code);
cell.accessoryType = (languageIndex == self.selectedLanguageCode ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone);
return cell;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return m_languages.size();
}
#pragma mark - UITableViewDataSource
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSInteger const index = indexPath.row;
StringUtf8Multilang::Lang const & language = m_languages[index];
[self.delegate addAdditionalName:StringUtf8Multilang::GetLangIndex(language.m_code)];
[self.navigationController popViewControllerAnimated:YES];
}
@end

View file

@ -0,0 +1,8 @@
#import "MWMEditorCommon.h"
#import "MWMTableViewCell.h"
@interface MWMEditorAddAdditionalNameTableViewCell : MWMTableViewCell
- (void)configWithDelegate:(id<MWMEditorAdditionalName>)delegate;
@end

View file

@ -0,0 +1,21 @@
#import "MWMEditorAddAdditionalNameTableViewCell.h"
@interface MWMEditorAddAdditionalNameTableViewCell ()
@property (weak, nonatomic) id<MWMEditorAdditionalName> delegate;
@end
@implementation MWMEditorAddAdditionalNameTableViewCell
- (void)configWithDelegate:(id<MWMEditorAdditionalName>)delegate
{
self.delegate = delegate;
}
- (IBAction)addLanguageTap
{
[self.delegate editAdditionalNameLanguage:NSNotFound];
}
@end

View file

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10116" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="81H-Jz-Sl2" customClass="MWMEditorAddAdditionalNameTableViewCell">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="81H-Jz-Sl2" id="EHS-hP-aIE">
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Ua5-4V-1PH" customClass="MWMButton">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<constraints>
<constraint firstAttribute="height" priority="750" constant="44" id="oVm-ep-LLL"/>
</constraints>
<inset key="contentEdgeInsets" minX="12" minY="0.0" maxX="0.0" maxY="0.0"/>
<inset key="titleEdgeInsets" minX="14" minY="0.0" maxX="0.0" maxY="0.0"/>
<state key="normal" title="Add Language" image="ic_add_light"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="imageName" value="ic_add"/>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
<userDefinedRuntimeAttribute type="string" keyPath="textColorName" value="linkBlue"/>
<userDefinedRuntimeAttribute type="string" keyPath="textColorHighlightedName" value="linkBlueHighlighted"/>
</userDefinedRuntimeAttributes>
<connections>
<action selector="addLanguageTap" destination="81H-Jz-Sl2" eventType="touchUpInside" id="Lw7-kU-hIK"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstAttribute="bottom" secondItem="Ua5-4V-1PH" secondAttribute="bottom" id="Nmp-Cj-ffg"/>
<constraint firstItem="Ua5-4V-1PH" firstAttribute="leading" secondItem="EHS-hP-aIE" secondAttribute="leading" id="XP5-8s-Vka"/>
<constraint firstItem="Ua5-4V-1PH" firstAttribute="top" secondItem="EHS-hP-aIE" secondAttribute="top" id="YAU-Xb-h9Y"/>
<constraint firstAttribute="trailing" secondItem="Ua5-4V-1PH" secondAttribute="trailing" id="f6J-6o-AjX"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="white"/>
</userDefinedRuntimeAttributes>
</tableViewCellContentView>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="white"/>
</userDefinedRuntimeAttributes>
<point key="canvasLocation" x="342" y="257"/>
</tableViewCell>
</objects>
<resources>
<image name="ic_add_light" width="22" height="22"/>
</resources>
</document>

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10116" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="16" id="7Br-fC-W0o">
<rect key="frame" x="0.0" y="0.0" width="320" height="16"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="7Br-fC-W0o" id="58c-Uv-d0K">
<rect key="frame" x="0.0" y="0.0" width="320" height="15"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tYH-si-HMY">
<rect key="frame" x="0.0" y="0.0" width="320" height="16"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" priority="750" constant="16" id="A96-CL-Yji"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="tYH-si-HMY" firstAttribute="leading" secondItem="58c-Uv-d0K" secondAttribute="leading" id="GTY-XA-kVU"/>
<constraint firstAttribute="trailing" secondItem="tYH-si-HMY" secondAttribute="trailing" id="VOL-Tl-l3w"/>
<constraint firstAttribute="bottom" secondItem="tYH-si-HMY" secondAttribute="bottom" id="g0D-w9-dGP"/>
<constraint firstItem="tYH-si-HMY" firstAttribute="top" secondItem="58c-Uv-d0K" secondAttribute="top" id="qyd-oG-Ixi"/>
</constraints>
</tableViewCellContentView>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="white"/>
</userDefinedRuntimeAttributes>
<point key="canvasLocation" x="225" y="282"/>
</tableViewCell>
</objects>
</document>

View file

@ -0,0 +1,16 @@
#import "MWMEditorCommon.h"
#import "MWMTableViewCell.h"
#include "indexer/editable_map_object.hpp"
@interface MWMEditorAdditionalNameTableViewCell : MWMTableViewCell
@property (nonatomic, readonly) NSInteger code;
- (void)configWithDelegate:(id<MWMEditorAdditionalName>)delegate
langCode:(NSInteger)langCode
langName:(NSString *)langName
name:(NSString *)name
keyboardType:(UIKeyboardType)keyboardType;
@end

View file

@ -0,0 +1,49 @@
#import "MWMEditorAdditionalNameTableViewCell.h"
@interface MWMEditorAdditionalNameTableViewCell ()
@property (weak, nonatomic) IBOutlet UILabel * languageLabel;
@property (weak, nonatomic) IBOutlet UIButton * languageButton;
@property (weak, nonatomic) IBOutlet UITextField * textField;
@property (nonatomic, readwrite) NSInteger code;
@property (weak, nonatomic) id<MWMEditorAdditionalName> delegate;
@end
@implementation MWMEditorAdditionalNameTableViewCell
- (void)configWithDelegate:(id<MWMEditorAdditionalName>)delegate
langCode:(NSInteger)langCode
langName:(NSString *)langName
name:(NSString *)name
keyboardType:(UIKeyboardType)keyboardType
{
self.delegate = delegate;
self.code = langCode;
self.languageLabel.text = langName;
[self.languageButton setTitle:langName forState:UIControlStateNormal];
self.textField.text = name;
self.textField.keyboardType = keyboardType;
}
- (IBAction)changeLanguageTap
{
[self.delegate editAdditionalNameLanguage:self.code];
}
#pragma mark - UITextFieldDelegate
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[self.delegate cell:self changedText:textField.text];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
@end

View file

@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10116" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="hfo-cP-AGX" customClass="MWMEditorAdditionalNameTableViewCell">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="hfo-cP-AGX" id="JQH-ks-NoC">
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Tv7-IF-Qxz" customClass="MWMButton">
<rect key="frame" x="0.0" y="0.0" width="44" height="44"/>
<constraints>
<constraint firstAttribute="height" priority="750" constant="44" id="1nG-lZ-yqJ"/>
<constraint firstAttribute="width" constant="44" id="bsU-1H-yMN"/>
</constraints>
<state key="normal" image="ic_remove_light"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="imageName" value="ic_remove"/>
</userDefinedRuntimeAttributes>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Cjy-YK-e7w" customClass="MWMButton">
<rect key="frame" x="48" y="0.0" width="80" height="44"/>
<constraints>
<constraint firstAttribute="width" constant="80" id="mLQ-WH-b1Z"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<state key="normal" title="zh-classical">
<color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
<userDefinedRuntimeAttribute type="string" keyPath="textColorName" value="blackPrimaryText"/>
</userDefinedRuntimeAttributes>
<connections>
<action selector="changeLanguageTap" destination="hfo-cP-AGX" eventType="touchUpInside" id="8Te-ui-ILX"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="zh-classical" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="efb-nS-cjm">
<rect key="frame" x="16" y="14" width="80" height="17"/>
<constraints>
<constraint firstAttribute="height" constant="17" id="8qF-WG-0JP"/>
<constraint firstAttribute="width" constant="80" id="RUn-7a-x8R"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
</userDefinedRuntimeAttributes>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalCompressionResistancePriority="499" contentHorizontalAlignment="left" contentVerticalAlignment="center" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="9BY-PA-dlA">
<rect key="frame" x="100" y="12" width="204" height="20"/>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<textInputTraits key="textInputTraits"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedPlaceholder" value="editor_edit_place_name_hint"/>
<userDefinedRuntimeAttribute type="string" keyPath="validatorName" value="MWMInputValidator"/>
</userDefinedRuntimeAttributes>
<connections>
<outlet property="delegate" destination="hfo-cP-AGX" id="jkD-0x-Ods"/>
</connections>
</textField>
</subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="9BY-PA-dlA" secondAttribute="trailing" constant="16" id="EPW-QQ-h4A"/>
<constraint firstAttribute="bottom" secondItem="Tv7-IF-Qxz" secondAttribute="bottom" id="Ojx-6n-ect"/>
<constraint firstItem="Tv7-IF-Qxz" firstAttribute="leading" secondItem="JQH-ks-NoC" secondAttribute="leading" id="Rfp-gV-iIG"/>
<constraint firstItem="9BY-PA-dlA" firstAttribute="centerY" secondItem="JQH-ks-NoC" secondAttribute="centerY" id="Vfs-Wj-X79"/>
<constraint firstItem="Cjy-YK-e7w" firstAttribute="centerY" secondItem="Tv7-IF-Qxz" secondAttribute="centerY" id="aav-Jh-IgL"/>
<constraint firstItem="efb-nS-cjm" firstAttribute="leading" secondItem="JQH-ks-NoC" secondAttribute="leading" constant="16" id="aeA-g6-24D"/>
<constraint firstItem="9BY-PA-dlA" firstAttribute="leading" secondItem="efb-nS-cjm" secondAttribute="trailing" constant="4" id="bE7-50-JFQ"/>
<constraint firstItem="Tv7-IF-Qxz" firstAttribute="top" secondItem="JQH-ks-NoC" secondAttribute="top" id="eWO-YS-zwv"/>
<constraint firstAttribute="bottom" secondItem="efb-nS-cjm" secondAttribute="bottom" priority="750" constant="12" id="fZC-8Q-bPw"/>
<constraint firstItem="9BY-PA-dlA" firstAttribute="leading" secondItem="Cjy-YK-e7w" secondAttribute="trailing" priority="250" constant="4" id="nTb-c0-Iap"/>
<constraint firstItem="Cjy-YK-e7w" firstAttribute="leading" secondItem="Tv7-IF-Qxz" secondAttribute="trailing" constant="4" id="o6R-lK-dCx"/>
<constraint firstItem="efb-nS-cjm" firstAttribute="top" secondItem="JQH-ks-NoC" secondAttribute="top" priority="750" constant="14" id="uOq-es-lVN"/>
<constraint firstItem="efb-nS-cjm" firstAttribute="centerY" secondItem="JQH-ks-NoC" secondAttribute="centerY" id="w1Z-wg-zVl"/>
<constraint firstItem="Cjy-YK-e7w" firstAttribute="height" secondItem="Tv7-IF-Qxz" secondAttribute="height" id="xUP-iP-1PZ"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="white"/>
</userDefinedRuntimeAttributes>
<variation key="default">
<mask key="subviews">
<exclude reference="Tv7-IF-Qxz"/>
<exclude reference="Cjy-YK-e7w"/>
</mask>
</variation>
</tableViewCellContentView>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="white"/>
</userDefinedRuntimeAttributes>
<connections>
<outlet property="languageButton" destination="Cjy-YK-e7w" id="CN4-z7-d72"/>
<outlet property="languageLabel" destination="efb-nS-cjm" id="13M-9D-Qbf"/>
<outlet property="textField" destination="9BY-PA-dlA" id="SCv-JL-5TL"/>
</connections>
<point key="canvasLocation" x="342" y="257"/>
</tableViewCell>
</objects>
<resources>
<image name="ic_remove_light" width="22" height="22"/>
</resources>
</document>

View file

@ -0,0 +1,7 @@
#import "MWMTypes.h"
@interface MWMEditorAdditionalNamesHeader : UIView
+ (instancetype)header:(TMWMVoidBlock)toggleBlock;
@end

View file

@ -0,0 +1,29 @@
#import "MWMEditorAdditionalNamesHeader.h"
#import "UILabel+RuntimeAttributes.h"
@interface MWMEditorAdditionalNamesHeader ()
@property (weak, nonatomic) IBOutlet UILabel * label;
@property (copy, nonatomic) TMWMVoidBlock toggleBlock;
@end
@implementation MWMEditorAdditionalNamesHeader
+ (instancetype)header:(TMWMVoidBlock)toggleBlock
{
MWMEditorAdditionalNamesHeader * h = [[[NSBundle mainBundle] loadNibNamed:[MWMEditorAdditionalNamesHeader className] owner:nil options:nil]
firstObject];
h.label.localizedText = L(@"editor_international_names_subtitle").uppercaseString;
h.toggleBlock = toggleBlock;
return h;
}
- (IBAction)toggleAction:(UIButton *)sender
{
NSString * newTitle = (sender.currentTitle == L(@"hide") ? L(@"show") : L(@"hide"));
[sender setTitle:newTitle forState:UIControlStateNormal];
self.toggleBlock();
}
@end

View file

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10116" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="fMr-en-6Lb" customClass="MWMEditorAdditionalNamesHeader">
<rect key="frame" x="0.0" y="0.0" width="320" height="40"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<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="ZVV-q9-714">
<rect key="frame" x="16" y="16" width="210" height="16"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular13"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
</userDefinedRuntimeAttributes>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="right" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fgf-k2-uT4" customClass="MWMButton">
<rect key="frame" x="230" y="0.0" width="90" height="40"/>
<constraints>
<constraint firstAttribute="width" priority="750" constant="90" id="WzJ-y1-Q2m"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<inset key="contentEdgeInsets" minX="0.0" minY="0.0" maxX="16" maxY="4"/>
<state key="normal" title="Скрыть">
<color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular13"/>
<userDefinedRuntimeAttribute type="string" keyPath="textColorName" value="linkBlue"/>
<userDefinedRuntimeAttribute type="string" keyPath="textColorHighlightedName" value="linkBlueHighlighted"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="show"/>
</userDefinedRuntimeAttributes>
<connections>
<action selector="toggleAction:" destination="fMr-en-6Lb" eventType="touchUpInside" id="cop-Nm-Ien"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="fgf-k2-uT4" firstAttribute="top" secondItem="fMr-en-6Lb" secondAttribute="top" id="aa6-A6-gYY"/>
<constraint firstAttribute="bottom" secondItem="ZVV-q9-714" secondAttribute="bottom" constant="8" id="acW-Jb-4Rd"/>
<constraint firstItem="ZVV-q9-714" firstAttribute="leading" secondItem="fMr-en-6Lb" secondAttribute="leading" constant="16" id="bfa-to-CBn"/>
<constraint firstAttribute="bottom" secondItem="fgf-k2-uT4" secondAttribute="bottom" id="i6A-IT-Uyi"/>
<constraint firstAttribute="trailing" secondItem="fgf-k2-uT4" secondAttribute="trailing" priority="750" id="oMs-yA-J0S"/>
<constraint firstItem="fgf-k2-uT4" firstAttribute="leading" secondItem="ZVV-q9-714" secondAttribute="trailing" priority="700" constant="4" id="yNz-90-zJf"/>
</constraints>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<connections>
<outlet property="label" destination="ZVV-q9-714" id="wba-YT-Rav"/>
</connections>
<point key="canvasLocation" x="244" y="341"/>
</view>
</objects>
</document>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10116" systemVersion="15E65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10116" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
@ -11,7 +11,7 @@
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="rsc-tP-qGq" id="mWc-I7-4kZ">
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ic_arrow_gray_right" translatesAutoresizingMaskIntoConstraints="NO" id="uA3-ru-Ja1">

View file

@ -1,11 +1,17 @@
@class MWMEditorTextTableViewCell;
@class MWMTableViewCell;
@protocol MWMEditorCellProtocol <NSObject>
@required
- (void)cell:(MWMEditorTextTableViewCell *)cell changedText:(NSString *)changeText;
- (void)cell:(MWMTableViewCell *)cell changedText:(NSString *)changeText;
- (void)cell:(UITableViewCell *)cell changeSwitch:(BOOL)changeSwitch;
- (void)cellSelect:(UITableViewCell *)cell;
- (void)tryToChangeInvalidStateForCell:(MWMEditorTextTableViewCell *)cell;
@end
@protocol MWMEditorAdditionalName <MWMEditorCellProtocol>
- (void)editAdditionalNameLanguage:(NSInteger)selectedLangCode;
@end

View file

@ -0,0 +1,5 @@
@interface MWMEditorNameFooter : UIView
+ (instancetype)footer;
@end

View file

@ -0,0 +1,32 @@
#import "MWMEditorNameFooter.h"
@interface MWMEditorNameFooter ()
@property (weak, nonatomic) IBOutlet UILabel * label;
@end
@implementation MWMEditorNameFooter
+ (instancetype)footer
{
return [[[NSBundle mainBundle] loadNibNamed:[MWMEditorNameFooter className] owner:nil options:nil]
firstObject];
}
- (void)layoutSubviews
{
[super layoutSubviews];
[self.label sizeToIntegralFit];
self.height = self.subviews.firstObject.height;
[super layoutSubviews];
}
- (CGFloat)height
{
[self setNeedsLayout];
[self layoutIfNeeded];
return super.height;
}
@end

View file

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10116" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="DzZ-TH-upf" customClass="MWMEditorNameFooter">
<rect key="frame" x="0.0" y="0.0" width="320" height="36"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="efz-zL-06d">
<rect key="frame" x="0.0" y="2" width="320" height="32"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="288" translatesAutoresizingMaskIntoConstraints="NO" id="Peu-jb-4BW">
<rect key="frame" x="16" y="8" width="288" height="16"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular13"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="place_name_caption"/>
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="Peu-jb-4BW" secondAttribute="bottom" constant="8" id="FFW-ln-kak"/>
<constraint firstItem="Peu-jb-4BW" firstAttribute="leading" secondItem="efz-zL-06d" secondAttribute="leading" constant="16" id="aKn-f3-WJ1"/>
<constraint firstItem="Peu-jb-4BW" firstAttribute="top" secondItem="efz-zL-06d" secondAttribute="top" constant="8" id="lhN-m0-nMG"/>
<constraint firstAttribute="trailing" secondItem="Peu-jb-4BW" secondAttribute="trailing" constant="16" id="y76-6j-Vzl"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="efz-zL-06d" firstAttribute="centerY" secondItem="DzZ-TH-upf" secondAttribute="centerY" id="DBi-4W-Glp"/>
<constraint firstItem="efz-zL-06d" firstAttribute="leading" secondItem="DzZ-TH-upf" secondAttribute="leading" id="X4V-d6-bir"/>
<constraint firstAttribute="trailing" secondItem="efz-zL-06d" secondAttribute="trailing" id="tUJ-dZ-qB0"/>
</constraints>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<connections>
<outlet property="label" destination="Peu-jb-4BW" id="rks-kV-c8c"/>
</connections>
<point key="canvasLocation" x="244" y="341"/>
</view>
</objects>
</document>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10116" systemVersion="15E65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10116" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
@ -56,7 +56,7 @@
<constraint firstItem="XnK-GX-uDn" firstAttribute="centerY" secondItem="xKX-yy-Dlc" secondAttribute="centerY" id="gr8-fd-1wy"/>
<constraint firstItem="XnK-GX-uDn" firstAttribute="leading" secondItem="xKX-yy-Dlc" secondAttribute="trailing" constant="16" id="lPz-pZ-7dI"/>
<constraint firstItem="XnK-GX-uDn" firstAttribute="top" secondItem="U0n-vz-Mf1" secondAttribute="topMargin" constant="3" id="o7O-MA-LIA"/>
<constraint firstItem="xKX-yy-Dlc" firstAttribute="leading" secondItem="U0n-vz-Mf1" secondAttribute="leadingMargin" constant="8" id="z6t-dN-99D"/>
<constraint firstItem="xKX-yy-Dlc" firstAttribute="leading" secondItem="U0n-vz-Mf1" secondAttribute="leading" constant="16" id="z6t-dN-99D"/>
</constraints>
</tableViewCellContentView>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>

View file

@ -1,10 +1,16 @@
#import "MapsAppDelegate.h"
#import "MWMAlertViewController.h"
#import "MWMAuthorizationCommon.h"
#import "MWMButtonCell.h"
#import "MWMCuisineEditorViewController.h"
#import "MWMDropDown.h"
#import "MWMEditorAddAdditionalNameTableViewCell.h"
#import "MWMEditorAdditionalNamesHeader.h"
#import "MWMEditorAdditionalNamesTableViewController.h"
#import "MWMEditorAdditionalNameTableViewCell.h"
#import "MWMEditorCategoryCell.h"
#import "MWMEditorCommon.h"
#import "MWMEditorNameFooter.h"
#import "MWMEditorNotesFooter.h"
#import "MWMEditorSelectTableViewCell.h"
#import "MWMEditorSwitchTableViewCell.h"
@ -13,29 +19,29 @@
#import "MWMNoteCell.h"
#import "MWMObjectsCategorySelectorController.h"
#import "MWMOpeningHoursEditorViewController.h"
#import "MWMButtonCell.h"
#import "MWMPlacePageEntity.h"
#import "MWMPlacePageOpeningHoursCell.h"
#import "MWMStreetEditorViewController.h"
#import "Statistics.h"
#import "UIViewController+Navigation.h"
#include "indexer/editable_map_object.hpp"
#include "std/algorithm.hpp"
namespace
{
NSString * const kAdditionalNamesEditorSegue = @"Editor2AdditionalNamesEditorSegue";
NSString * const kOpeningHoursEditorSegue = @"Editor2OpeningHoursEditorSegue";
NSString * const kCuisineEditorSegue = @"Editor2CuisineEditorSegue";
NSString * const kStreetEditorSegue = @"Editor2StreetEditorSegue";
NSString * const kCategoryEditorSegue = @"Editor2CategoryEditorSegue";
CGFloat const kDefaultHeaderHeight = 28.;
CGFloat const kDefaultFooterHeight = 32.;
typedef NS_ENUM(NSUInteger, MWMEditorSection)
{
MWMEditorSectionCategory,
MWMEditorSectionName,
MWMEditorSectionAdditionalNames,
MWMEditorSectionAddress,
MWMEditorSectionDetails,
MWMEditorSectionNote,
@ -44,7 +50,6 @@ typedef NS_ENUM(NSUInteger, MWMEditorSection)
vector<MWMPlacePageCellType> const kSectionCategoryCellTypes{MWMPlacePageCellTypeCategory};
vector<MWMPlacePageCellType> const kSectionNameCellTypes{MWMPlacePageCellTypeName};
vector<MWMPlacePageCellType> const kSectionAddressCellTypes{
MWMPlacePageCellTypeStreet, MWMPlacePageCellTypeBuilding, MWMPlacePageCellTypeZipCode};
@ -54,6 +59,9 @@ vector<MWMPlacePageCellType> const kSectionButtonCellTypes{MWMPlacePageCellTypeR
MWMPlacePageCellTypeValueMap const kCellType2ReuseIdentifier{
{MWMPlacePageCellTypeCategory, "MWMEditorCategoryCell"},
{MWMPlacePageCellTypeName, "MWMEditorNameTableViewCell"},
{MWMPlacePageCellTypeAdditionalName, "MWMEditorAdditionalNameTableViewCell"},
{MWMPlacePageCellTypeAddAdditionalName, "MWMEditorAddAdditionalNameTableViewCell"},
{MWMPlacePageCellTypeAddAdditionalNamePlaceholder, "MWMEditorAdditionalNamePlaceholderTableViewCell"},
{MWMPlacePageCellTypeStreet, "MWMEditorSelectTableViewCell"},
{MWMPlacePageCellTypeBuilding, "MWMEditorTextTableViewCell"},
{MWMPlacePageCellTypeZipCode, "MWMEditorTextTableViewCell"},
@ -76,6 +84,55 @@ NSString * reuseIdentifier(MWMPlacePageCellType cellType)
return haveCell ? @(it->second.c_str()) : @"";
}
vector<osm::LocalizedName> getAdditionalLocalizedNames(osm::EditableMapObject const & emo)
{
vector<osm::LocalizedName> result;
emo.GetName().ForEach([&result](int8_t code, string const & name) -> bool
{
if (code != StringUtf8Multilang::kDefaultCode)
result.push_back({code, StringUtf8Multilang::GetLangByCode(code),
StringUtf8Multilang::GetLangNameByCode(code), name});
return true;
});
return result;
}
void cleanupAdditionalLanguages(vector<osm::LocalizedName> const & names, vector<NSInteger> & newAdditionalLanguages)
{
newAdditionalLanguages.erase(remove_if(newAdditionalLanguages.begin(),
newAdditionalLanguages.end(),
[&names](NSInteger x)
{
auto it = find_if(names.begin(), names.end(), [x](osm::LocalizedName const & name)
{
return name.m_code == x;
});
return it != names.end();
}),
newAdditionalLanguages.end());
}
vector<MWMPlacePageCellType> cellsForAdditionalNames(
vector<osm::LocalizedName> const & names, vector<NSInteger> const & newAdditionalLanguages,
BOOL showAdditionalNames)
{
if (names.empty() && newAdditionalLanguages.empty())
return vector<MWMPlacePageCellType>();
vector<MWMPlacePageCellType> res;
if (showAdditionalNames)
{
res.insert(res.begin(), names.size() + newAdditionalLanguages.size(),
MWMPlacePageCellTypeAdditionalName);
}
else
{
res.push_back(MWMPlacePageCellTypeAdditionalName);
res.push_back(MWMPlacePageCellTypeAddAdditionalNamePlaceholder);
}
res.push_back(MWMPlacePageCellTypeAddAdditionalName);
return res;
}
vector<MWMPlacePageCellType> cellsForProperties(vector<osm::Props> const & props)
{
using namespace osm;
@ -130,20 +187,23 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
}
} // namespace
@interface MWMEditorViewController() <UITableViewDelegate, UITableViewDataSource,
UITextFieldDelegate, MWMOpeningHoursEditorProtocol,
MWMPlacePageOpeningHoursCellProtocol,
MWMEditorCellProtocol, MWMCuisineEditorProtocol,
MWMStreetEditorProtocol, MWMObjectsCategorySelectorDelegate,
MWMNoteCelLDelegate, MWMButtonCellDelegate>
@interface MWMEditorViewController ()<
UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate, MWMOpeningHoursEditorProtocol,
MWMPlacePageOpeningHoursCellProtocol, MWMEditorCellProtocol, MWMCuisineEditorProtocol,
MWMStreetEditorProtocol, MWMObjectsCategorySelectorDelegate, MWMNoteCelLDelegate,
MWMEditorAdditionalName, MWMButtonCellDelegate, MWMEditorAdditionalNamesProtocol>
@property (nonatomic) NSMutableDictionary<NSString *, UITableViewCell *> * offscreenCells;
@property (nonatomic) NSMutableArray<NSIndexPath *> * invalidCells;
@property (nonatomic) MWMEditorNotesFooter * footer;
@property (nonatomic) MWMEditorAdditionalNamesHeader * additionalNamesHeader;
@property (nonatomic) MWMEditorNotesFooter * notesFooter;
@property (nonatomic) MWMEditorNameFooter * nameFooter;
@property (copy, nonatomic) NSString * note;
@property (nonatomic) osm::Editor::FeatureStatus featureStatus;
@property (nonatomic) BOOL isFeatureUploaded;
@property (nonatomic) BOOL showAdditionalNames;
@end
@implementation MWMEditorViewController
@ -151,6 +211,7 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
vector<MWMEditorSection> m_sections;
map<MWMEditorSection, vector<MWMPlacePageCellType>> m_cells;
osm::EditableMapObject m_mapObject;
vector<NSInteger> m_newAdditionalLanguages;
}
- (void)viewDidLoad
@ -162,6 +223,7 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
auto const & fid = m_mapObject.GetID();
self.featureStatus = osm::Editor::Instance().GetFeatureStatus(fid.m_mwmId, fid.m_index);
self.isFeatureUploaded = osm::Editor::Instance().IsFeatureUploaded(fid.m_mwmId, fid.m_index);
m_newAdditionalLanguages.clear();
}
- (void)setFeatureToEdit:(FeatureID const &)fid
@ -277,11 +339,54 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
[dd showWithMessage:L(@"editor_edits_sent_message")];
}
- (MWMEditorNotesFooter *)footer
#pragma mark - Headers
- (MWMEditorAdditionalNamesHeader *)additionalNamesHeader
{
if (!_footer)
_footer = [MWMEditorNotesFooter footer];
return _footer;
if (!_additionalNamesHeader)
{
__weak auto weakSelf = self;
_additionalNamesHeader = [MWMEditorAdditionalNamesHeader header:^
{
__strong auto self = weakSelf;
self.showAdditionalNames = !self.showAdditionalNames;
}];
}
return _additionalNamesHeader;
}
#pragma mark - Footers
- (MWMEditorNotesFooter *)notesFooter
{
if (!_notesFooter)
_notesFooter = [MWMEditorNotesFooter footer];
return _notesFooter;
}
- (MWMEditorNameFooter *)nameFooter
{
if (!_nameFooter)
_nameFooter = [MWMEditorNameFooter footer];
return _nameFooter;
}
#pragma mark - Properties
- (void)setShowAdditionalNames:(BOOL)showAdditionalNames
{
_showAdditionalNames = showAdditionalNames;
[self configTable];
auto const additionalNamesSectionIt = find(m_sections.begin(), m_sections.end(), MWMEditorSectionAdditionalNames);
if (additionalNamesSectionIt == m_sections.end())
{
[self.tableView reloadData];
}
else
{
auto const sectionIndex = distance(m_sections.begin(), additionalNamesSectionIt);
[self.tableView reloadSections:[[NSIndexSet alloc] initWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationAutomatic];
}
}
#pragma mark - Offscreen cells
@ -301,6 +406,8 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
{
self.offscreenCells = [NSMutableDictionary dictionary];
self.invalidCells = [NSMutableArray array];
m_sections.clear();
m_cells.clear();
m_sections.push_back(MWMEditorSectionCategory);
m_cells[MWMEditorSectionCategory] = kSectionCategoryCellTypes;
@ -311,6 +418,16 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
m_sections.push_back(MWMEditorSectionName);
m_cells[MWMEditorSectionName] = kSectionNameCellTypes;
registerCellsForTableView(kSectionNameCellTypes, self.tableView);
vector<osm::LocalizedName> localizedNames = getAdditionalLocalizedNames(m_mapObject);
cleanupAdditionalLanguages(localizedNames, m_newAdditionalLanguages);
auto const cells = cellsForAdditionalNames(localizedNames, m_newAdditionalLanguages, self.showAdditionalNames);
if (!cells.empty())
{
m_sections.push_back(MWMEditorSectionAdditionalNames);
m_cells[MWMEditorSectionAdditionalNames] = cells;
registerCellsForTableView(cells, self.tableView);
}
}
if (m_mapObject.IsAddressEditable())
{
@ -367,7 +484,7 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
}
case MWMPlacePageCellTypePhoneNumber:
{
MWMEditorTextTableViewCell * tCell = (MWMEditorTextTableViewCell *)cell;
MWMEditorTextTableViewCell * tCell = static_cast<MWMEditorTextTableViewCell *>(cell);
[tCell configWithDelegate:self
icon:[UIImage imageNamed:@"ic_placepage_phone_number"]
text:@(m_mapObject.GetPhone().c_str())
@ -378,7 +495,7 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
}
case MWMPlacePageCellTypeWebsite:
{
MWMEditorTextTableViewCell * tCell = (MWMEditorTextTableViewCell *)cell;
MWMEditorTextTableViewCell * tCell = static_cast<MWMEditorTextTableViewCell *>(cell);
[tCell configWithDelegate:self
icon:[UIImage imageNamed:@"ic_placepage_website"]
text:@(m_mapObject.GetWebsite().c_str())
@ -389,7 +506,7 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
}
case MWMPlacePageCellTypeEmail:
{
MWMEditorTextTableViewCell * tCell = (MWMEditorTextTableViewCell *)cell;
MWMEditorTextTableViewCell * tCell = static_cast<MWMEditorTextTableViewCell *>(cell);
[tCell configWithDelegate:self
icon:[UIImage imageNamed:@"ic_placepage_email"]
text:@(m_mapObject.GetEmail().c_str())
@ -411,14 +528,14 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
}
case MWMPlacePageCellTypeOpenHours:
{
MWMPlacePageOpeningHoursCell * tCell = (MWMPlacePageOpeningHoursCell *)cell;
MWMPlacePageOpeningHoursCell * tCell = static_cast<MWMPlacePageOpeningHoursCell *>(cell);
NSString * text = @(m_mapObject.GetOpeningHours().c_str());
[tCell configWithDelegate:self info:(text.length ? text : L(@"add_opening_hours"))];
break;
}
case MWMPlacePageCellTypeWiFi:
{
MWMEditorSwitchTableViewCell * tCell = (MWMEditorSwitchTableViewCell *)cell;
MWMEditorSwitchTableViewCell * tCell = static_cast<MWMEditorSwitchTableViewCell *>(cell);
// TODO(Vlad, IgorTomko): Support all other possible Internet statuses.
[tCell configWithDelegate:self
icon:[UIImage imageNamed:@"ic_placepage_wifi"]
@ -428,7 +545,7 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
}
case MWMPlacePageCellTypeName:
{
MWMEditorTextTableViewCell * tCell = (MWMEditorTextTableViewCell *)cell;
MWMEditorTextTableViewCell * tCell = static_cast<MWMEditorTextTableViewCell *>(cell);
[tCell configWithDelegate:self
icon:nil
text:@(m_mapObject.GetDefaultName().c_str())
@ -437,9 +554,44 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
capitalization:UITextAutocapitalizationTypeSentences];
break;
}
case MWMPlacePageCellTypeAdditionalName:
{
MWMEditorAdditionalNameTableViewCell * tCell = static_cast<MWMEditorAdditionalNameTableViewCell *>(cell);
vector<osm::LocalizedName> const localizedNames = getAdditionalLocalizedNames(m_mapObject);
if (indexPath.row < localizedNames.size())
{
osm::LocalizedName const & name = localizedNames[indexPath.row];
[tCell configWithDelegate:self
langCode:name.m_code
langName:@(name.m_langName)
name:@(name.m_name.c_str())
keyboardType:UIKeyboardTypeDefault];
}
else
{
NSInteger const newAdditionalNameIndex = indexPath.row - localizedNames.size();
NSInteger const langCode = m_newAdditionalLanguages[newAdditionalNameIndex];
[tCell configWithDelegate:self
langCode:langCode
langName:@(StringUtf8Multilang::GetLangNameByCode(langCode))
name:@""
keyboardType:UIKeyboardTypeDefault];
}
break;
}
case MWMPlacePageCellTypeAddAdditionalName:
{
MWMEditorAddAdditionalNameTableViewCell * tCell = static_cast<MWMEditorAddAdditionalNameTableViewCell *>(cell);
[tCell configWithDelegate:self];
break;
}
case MWMPlacePageCellTypeAddAdditionalNamePlaceholder:
break;
case MWMPlacePageCellTypeStreet:
{
MWMEditorSelectTableViewCell * tCell = (MWMEditorSelectTableViewCell *)cell;
MWMEditorSelectTableViewCell * tCell = static_cast<MWMEditorSelectTableViewCell *>(cell);
[tCell configWithDelegate:self
icon:[UIImage imageNamed:@"ic_placepage_adress"]
text:@(m_mapObject.GetStreet().m_defaultName.c_str())
@ -448,7 +600,7 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
}
case MWMPlacePageCellTypeBuilding:
{
MWMEditorTextTableViewCell * tCell = (MWMEditorTextTableViewCell *)cell;
MWMEditorTextTableViewCell * tCell = static_cast<MWMEditorTextTableViewCell *>(cell);
[tCell configWithDelegate:self
icon:nil
text:@(m_mapObject.GetHouseNumber().c_str())
@ -491,7 +643,7 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
}
case MWMPlacePageCellTypeCuisine:
{
MWMEditorSelectTableViewCell * tCell = (MWMEditorSelectTableViewCell *)cell;
MWMEditorSelectTableViewCell * tCell = static_cast<MWMEditorSelectTableViewCell *>(cell);
[tCell configWithDelegate:self
icon:[UIImage imageNamed:@"ic_placepage_cuisine"]
text:@(m_mapObject.FormatCuisines().c_str())
@ -563,8 +715,6 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
NSString * reuseIdentifier = [self cellIdentifierForIndexPath:indexPath];
UITableViewCell * cell = [self offscreenCellForIdentifier:reuseIdentifier];
// TODO(Vlad, IGrechuhin): It's bad idea to fill cells here.
// heightForRowAtIndexPath is called way too often for the table.
[self fillCell:cell atIndexPath:indexPath];
MWMPlacePageCellType const cellType = [self cellTypeForIndexPath:indexPath];
switch (cellType)
@ -594,6 +744,7 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
switch (m_sections[section])
{
case MWMEditorSectionName:
case MWMEditorSectionAdditionalNames:
case MWMEditorSectionCategory:
case MWMEditorSectionButton:
return nil;
@ -606,18 +757,19 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
}
}
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
switch (m_sections[section])
{
case MWMEditorSectionName:
return L(@"place_name_caption");
case MWMEditorSectionAddress:
case MWMEditorSectionDetails:
case MWMEditorSectionCategory:
case MWMEditorSectionNote:
case MWMEditorSectionButton:
return nil;
case MWMEditorSectionAdditionalNames:
return self.additionalNamesHeader;
case MWMEditorSectionName:
case MWMEditorSectionCategory:
case MWMEditorSectionButton:
case MWMEditorSectionNote:
case MWMEditorSectionAddress:
case MWMEditorSectionDetails:
return nil;
}
}
@ -628,14 +780,21 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
case MWMEditorSectionAddress:
case MWMEditorSectionDetails:
case MWMEditorSectionCategory:
case MWMEditorSectionName:
case MWMEditorSectionAdditionalNames:
case MWMEditorSectionButton:
return nil;
case MWMEditorSectionName:
return self.nameFooter;
case MWMEditorSectionNote:
return self.footer;
return self.notesFooter;
}
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return kDefaultHeaderHeight;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
switch (m_sections[section])
@ -643,10 +802,12 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
case MWMEditorSectionAddress:
case MWMEditorSectionDetails:
case MWMEditorSectionCategory:
return 0.;
case MWMEditorSectionAdditionalNames:
return 1.0;
case MWMEditorSectionNote:
return self.footer.height;
return self.notesFooter.height;
case MWMEditorSectionName:
return self.nameFooter.height;
case MWMEditorSectionButton:
return kDefaultFooterHeight;
}
@ -705,6 +866,28 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
self.note = text;
}
#pragma mark - MWMEditorAdditionalName
- (void)editAdditionalNameLanguage:(NSInteger)selectedLangCode
{
[self performSegueWithIdentifier:kAdditionalNamesEditorSegue sender:@(selectedLangCode)];
}
#pragma mark - MWMEditorAdditionalNamesProtocol
- (void)addAdditionalName:(NSInteger)languageIndex
{
m_newAdditionalLanguages.push_back(languageIndex);
self.showAdditionalNames = YES;
auto additionalNamesSectionIt = find(m_sections.begin(), m_sections.end(), MWMEditorSectionAdditionalNames);
assert(additionalNamesSectionIt != m_sections.end());
auto const section = distance(m_sections.begin(), additionalNamesSectionIt);
NSInteger const row = [self tableView:self.tableView numberOfRowsInSection:section];
assert(row > 0);
NSIndexPath * indexPath = [NSIndexPath indexPathForRow:row - 1 inSection:section];
[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle animated:NO];
}
#pragma mark - MWMEditorCellProtocol
- (void)tryToChangeInvalidStateForCell:(MWMEditorTextTableViewCell *)cell
@ -717,7 +900,7 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
[self.tableView endUpdates];
}
- (void)cell:(MWMEditorTextTableViewCell *)cell changedText:(NSString *)changeText
- (void)cell:(MWMTableViewCell *)cell changedText:(NSString *)changeText
{
NSAssert(changeText != nil, @"String can't be nil!");
NSIndexPath * indexPath = [self.tableView indexPathForCell:cell];
@ -725,7 +908,6 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
string const val = changeText.UTF8String;
switch (cellType)
{
// TODO(Vlad): Support multilanguage names.
case MWMPlacePageCellTypeName: m_mapObject.SetName(val, StringUtf8Multilang::kDefaultCode); break;
case MWMPlacePageCellTypePhoneNumber: m_mapObject.SetPhone(val); break;
case MWMPlacePageCellTypeWebsite: m_mapObject.SetWebsite(val); break;
@ -745,6 +927,12 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
if (!osm::EditableMapObject::ValidateBuildingLevels(val))
[self markCellAsInvalid:indexPath];
break;
case MWMPlacePageCellTypeAdditionalName:
{
MWMEditorAdditionalNameTableViewCell * tCell = static_cast<MWMEditorAdditionalNameTableViewCell *>(cell);
m_mapObject.SetName(val, tCell.code);
break;
}
default: NSAssert(false, @"Invalid field for changeText");
}
}
@ -927,9 +1115,17 @@ void registerCellsForTableView(vector<MWMPlacePageCellType> const & cells, UITab
else if ([segue.identifier isEqualToString:kCategoryEditorSegue])
{
NSAssert(self.isCreating, @"Invalid state! We'll be able to change feature category only if we are creating feature!");
MWMObjectsCategorySelectorController * dest = segue.destinationViewController;
dest.delegate = self;
[dest setSelectedCategory:m_mapObject.GetLocalizedType()];
MWMObjectsCategorySelectorController * dvc = segue.destinationViewController;
dvc.delegate = self;
[dvc setSelectedCategory:m_mapObject.GetLocalizedType()];
}
else if ([segue.identifier isEqualToString:kAdditionalNamesEditorSegue])
{
MWMEditorAdditionalNamesTableViewController * dvc = segue.destinationViewController;
[dvc configWithDelegate:self
name:m_mapObject.GetName()
additionalSkipLanguageCodes:m_newAdditionalLanguages
selectedLanguageCode:((NSNumber *)sender).integerValue];
}
}

View file

@ -22,6 +22,9 @@ typedef NS_ENUM(NSUInteger, MWMPlacePageCellType)
MWMPlacePageCellTypeReportButton,
MWMPlacePageCellTypeCategory,
MWMPlacePageCellTypeName,
MWMPlacePageCellTypeAdditionalName,
MWMPlacePageCellTypeAddAdditionalName,
MWMPlacePageCellTypeAddAdditionalNamePlaceholder,
MWMPlacePageCellTypeStreet,
MWMPlacePageCellTypeBuilding,
MWMPlacePageCellTypeZipCode,

View file

@ -0,0 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View file

@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "ic_add_dark.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "ic_add_dark@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "ic_add_dark@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 B

View file

@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "ic_add_highlighted_dark.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "ic_add_highlighted_dark@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "ic_add_highlighted_dark@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 556 B

View file

@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "ic_add_highlighted_light.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "ic_add_highlighted_light@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "ic_add_highlighted_light@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 B

View file

@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "ic_add_light.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "ic_add_light@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "ic_add_light@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 451 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 622 B

View file

@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "ic_remove_dark.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "ic_remove_dark@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "ic_remove_dark@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 588 B

View file

@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "ic_remove_highlighted_dark.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "ic_remove_highlighted_dark@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "ic_remove_highlighted_dark@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 557 B

View file

@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "ic_remove_highlighted_light.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "ic_remove_highlighted_light@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "ic_remove_highlighted_light@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 557 B

View file

@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "ic_remove_light.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "ic_remove_light@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "ic_remove_light@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 588 B

View file

@ -101,6 +101,14 @@
34570A3D1B13223000E6D4FD /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 34570A3C1B13223000E6D4FD /* libsqlite3.dylib */; settings = {ATTRIBUTES = (Required, ); }; };
34570A3F1B13225500E6D4FD /* Accounts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34570A3E1B13225500E6D4FD /* Accounts.framework */; settings = {ATTRIBUTES = (Required, ); }; };
34570A411B13229300E6D4FD /* FBSDKLoginKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34570A401B13229300E6D4FD /* FBSDKLoginKit.framework */; settings = {ATTRIBUTES = (Required, ); }; };
345FD7E01CEC7AD400F58045 /* MWMEditorAddAdditionalNameTableViewCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = 345FD7DF1CEC7AD400F58045 /* MWMEditorAddAdditionalNameTableViewCell.mm */; };
345FD7E11CEC7AD400F58045 /* MWMEditorAddAdditionalNameTableViewCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = 345FD7DF1CEC7AD400F58045 /* MWMEditorAddAdditionalNameTableViewCell.mm */; };
345FD7E31CEC7B0C00F58045 /* MWMEditorAddAdditionalNameTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 345FD7E21CEC7B0C00F58045 /* MWMEditorAddAdditionalNameTableViewCell.xib */; };
345FD7E41CEC7B0C00F58045 /* MWMEditorAddAdditionalNameTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 345FD7E21CEC7B0C00F58045 /* MWMEditorAddAdditionalNameTableViewCell.xib */; };
345FD7E71CEC7D8400F58045 /* MWMEditorAdditionalNamesHeader.mm in Sources */ = {isa = PBXBuildFile; fileRef = 345FD7E61CEC7D8400F58045 /* MWMEditorAdditionalNamesHeader.mm */; };
345FD7E81CEC7D8400F58045 /* MWMEditorAdditionalNamesHeader.mm in Sources */ = {isa = PBXBuildFile; fileRef = 345FD7E61CEC7D8400F58045 /* MWMEditorAdditionalNamesHeader.mm */; };
345FD7EA1CEC7DA800F58045 /* MWMEditorAdditionalNamesHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = 345FD7E91CEC7DA800F58045 /* MWMEditorAdditionalNamesHeader.xib */; };
345FD7EB1CEC7DA800F58045 /* MWMEditorAdditionalNamesHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = 345FD7E91CEC7DA800F58045 /* MWMEditorAdditionalNamesHeader.xib */; };
345FDD261C3BB3AF0070C459 /* MWMEditorViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 345FDD251C3BB3AF0070C459 /* MWMEditorViewController.mm */; };
345FDD271C3BB3AF0070C459 /* MWMEditorViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 345FDD251C3BB3AF0070C459 /* MWMEditorViewController.mm */; };
34634B1B1BB42D270013573C /* MWMBottomMenuCollectionViewLandscapeCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34634B1A1BB42D270013573C /* MWMBottomMenuCollectionViewLandscapeCell.xib */; };
@ -182,6 +190,8 @@
34A62D4F1C903533007FDCB7 /* Fabric.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34A62D4C1C903533007FDCB7 /* Fabric.framework */; };
34A62D501C903533007FDCB7 /* Crashlytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34A62D4D1C903533007FDCB7 /* Crashlytics.framework */; };
34A62D511C903533007FDCB7 /* Crashlytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34A62D4D1C903533007FDCB7 /* Crashlytics.framework */; };
34AB04B71CEC95B500CE8B36 /* MWMEditorAdditionalNamePlaceholderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34AB04B61CEC95B500CE8B36 /* MWMEditorAdditionalNamePlaceholderTableViewCell.xib */; };
34AB04B81CEC95B500CE8B36 /* MWMEditorAdditionalNamePlaceholderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34AB04B61CEC95B500CE8B36 /* MWMEditorAdditionalNamePlaceholderTableViewCell.xib */; };
34ABA6161C2D185C00FE1BEC /* MWMAuthorizationOSMLoginViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ABA6151C2D185B00FE1BEC /* MWMAuthorizationOSMLoginViewController.mm */; };
34ABA6171C2D185C00FE1BEC /* MWMAuthorizationOSMLoginViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ABA6151C2D185B00FE1BEC /* MWMAuthorizationOSMLoginViewController.mm */; };
34ABA61B1C2D4DCC00FE1BEC /* UITextField+RuntimeAttributes.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ABA61A1C2D4DCC00FE1BEC /* UITextField+RuntimeAttributes.mm */; };
@ -196,6 +206,14 @@
34ABA62D1C2D57D500FE1BEC /* MWMInputPasswordValidator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ABA62B1C2D57D500FE1BEC /* MWMInputPasswordValidator.mm */; };
34ABA6301C2D58F300FE1BEC /* MWMInputEmailValidator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ABA62F1C2D58F300FE1BEC /* MWMInputEmailValidator.mm */; };
34B16C451B72655D000D3A0D /* MWMPedestrianShareAlert.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34B16C441B72655D000D3A0D /* MWMPedestrianShareAlert.mm */; };
34B646BD1CEB6FC000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34B646BC1CEB6FC000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.mm */; };
34B646BE1CEB6FC000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34B646BC1CEB6FC000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.mm */; };
34B646C01CEB6FE000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34B646BF1CEB6FE000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.xib */; };
34B646C11CEB6FE000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34B646BF1CEB6FE000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.xib */; };
34B646C41CEB740900E0C7A5 /* MWMEditorNameFooter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34B646C31CEB740900E0C7A5 /* MWMEditorNameFooter.mm */; };
34B646C51CEB740900E0C7A5 /* MWMEditorNameFooter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34B646C31CEB740900E0C7A5 /* MWMEditorNameFooter.mm */; };
34B646C71CEB742500E0C7A5 /* MWMEditorNameFooter.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34B646C61CEB742500E0C7A5 /* MWMEditorNameFooter.xib */; };
34B646C81CEB742600E0C7A5 /* MWMEditorNameFooter.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34B646C61CEB742500E0C7A5 /* MWMEditorNameFooter.xib */; };
34B6CF5D1BBBFC6B009203C6 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 34B6CF5C1BBBFC6B009203C6 /* LaunchScreen.storyboard */; };
34B82AB21B8344E300180497 /* MWMSearchTextField.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34B82AB11B8344E300180497 /* MWMSearchTextField.mm */; };
34B82ABA1B837FFD00180497 /* MWMSearchHistoryRequestCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34B82AB81B837FFD00180497 /* MWMSearchHistoryRequestCell.mm */; };
@ -220,6 +238,8 @@
34BC72241B0DECAE0012A34B /* MWMMapViewControlsManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34BC72111B0DECAE0012A34B /* MWMMapViewControlsManager.mm */; };
34BF0CC61C31304A00D097EB /* MWMAuthorizationCommon.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34BF0CC51C31304A00D097EB /* MWMAuthorizationCommon.mm */; };
34BF0CC71C31304A00D097EB /* MWMAuthorizationCommon.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34BF0CC51C31304A00D097EB /* MWMAuthorizationCommon.mm */; };
34C2431B1CEDBDBA0006B7DC /* MWMEditorAdditionalNamesTableViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34C2431A1CEDBDBA0006B7DC /* MWMEditorAdditionalNamesTableViewController.mm */; };
34C2431C1CEDBDBA0006B7DC /* MWMEditorAdditionalNamesTableViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34C2431A1CEDBDBA0006B7DC /* MWMEditorAdditionalNamesTableViewController.mm */; };
34C659471BD12A77009DC20A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 34C659451BD12A77009DC20A /* InfoPlist.strings */; };
34C9BD021C6DB693000DC38D /* MWMTableViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34C9BCFF1C6DB693000DC38D /* MWMTableViewController.mm */; };
34C9BD031C6DB693000DC38D /* MWMTableViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34C9BCFF1C6DB693000DC38D /* MWMTableViewController.mm */; };
@ -975,6 +995,12 @@
34570A3C1B13223000E6D4FD /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; };
34570A3E1B13225500E6D4FD /* Accounts.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accounts.framework; path = System/Library/Frameworks/Accounts.framework; sourceTree = SDKROOT; };
34570A401B13229300E6D4FD /* FBSDKLoginKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FBSDKLoginKit.framework; path = Statistics/FBSDKLoginKit.framework; sourceTree = "<group>"; };
345FD7DE1CEC7AD400F58045 /* MWMEditorAddAdditionalNameTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMEditorAddAdditionalNameTableViewCell.h; sourceTree = "<group>"; };
345FD7DF1CEC7AD400F58045 /* MWMEditorAddAdditionalNameTableViewCell.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMEditorAddAdditionalNameTableViewCell.mm; sourceTree = "<group>"; };
345FD7E21CEC7B0C00F58045 /* MWMEditorAddAdditionalNameTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMEditorAddAdditionalNameTableViewCell.xib; sourceTree = "<group>"; };
345FD7E51CEC7D8400F58045 /* MWMEditorAdditionalNamesHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMEditorAdditionalNamesHeader.h; sourceTree = "<group>"; };
345FD7E61CEC7D8400F58045 /* MWMEditorAdditionalNamesHeader.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMEditorAdditionalNamesHeader.mm; sourceTree = "<group>"; };
345FD7E91CEC7DA800F58045 /* MWMEditorAdditionalNamesHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMEditorAdditionalNamesHeader.xib; sourceTree = "<group>"; };
345FDD241C3BB3AF0070C459 /* MWMEditorViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMEditorViewController.h; sourceTree = "<group>"; };
345FDD251C3BB3AF0070C459 /* MWMEditorViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMEditorViewController.mm; sourceTree = "<group>"; };
3460B4C11BF369A2003EE796 /* StatisticsStrings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StatisticsStrings.h; sourceTree = "<group>"; };
@ -1056,6 +1082,7 @@
349C26B81BB04ED30005DF2F /* MWMBottomMenuView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMBottomMenuView.mm; sourceTree = "<group>"; };
34A62D4C1C903533007FDCB7 /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Fabric.framework; sourceTree = "<group>"; };
34A62D4D1C903533007FDCB7 /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Crashlytics.framework; sourceTree = "<group>"; };
34AB04B61CEC95B500CE8B36 /* MWMEditorAdditionalNamePlaceholderTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMEditorAdditionalNamePlaceholderTableViewCell.xib; sourceTree = "<group>"; };
34ABA6141C2D185B00FE1BEC /* MWMAuthorizationOSMLoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMAuthorizationOSMLoginViewController.h; sourceTree = "<group>"; };
34ABA6151C2D185B00FE1BEC /* MWMAuthorizationOSMLoginViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMAuthorizationOSMLoginViewController.mm; sourceTree = "<group>"; };
34ABA6191C2D4DA900FE1BEC /* UITextField+RuntimeAttributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITextField+RuntimeAttributes.h"; sourceTree = "<group>"; };
@ -1072,6 +1099,12 @@
34ABA62F1C2D58F300FE1BEC /* MWMInputEmailValidator.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMInputEmailValidator.mm; sourceTree = "<group>"; };
34B16C431B72655D000D3A0D /* MWMPedestrianShareAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPedestrianShareAlert.h; sourceTree = "<group>"; };
34B16C441B72655D000D3A0D /* MWMPedestrianShareAlert.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMPedestrianShareAlert.mm; sourceTree = "<group>"; };
34B646BB1CEB6FC000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMEditorAdditionalNameTableViewCell.h; sourceTree = "<group>"; };
34B646BC1CEB6FC000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMEditorAdditionalNameTableViewCell.mm; sourceTree = "<group>"; };
34B646BF1CEB6FE000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMEditorAdditionalNameTableViewCell.xib; sourceTree = "<group>"; };
34B646C21CEB740900E0C7A5 /* MWMEditorNameFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMEditorNameFooter.h; sourceTree = "<group>"; };
34B646C31CEB740900E0C7A5 /* MWMEditorNameFooter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMEditorNameFooter.mm; sourceTree = "<group>"; };
34B646C61CEB742500E0C7A5 /* MWMEditorNameFooter.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMEditorNameFooter.xib; sourceTree = "<group>"; };
34B6CF5C1BBBFC6B009203C6 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
34B82AB01B8344E300180497 /* MWMSearchTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMSearchTextField.h; sourceTree = "<group>"; };
34B82AB11B8344E300180497 /* MWMSearchTextField.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMSearchTextField.mm; sourceTree = "<group>"; };
@ -1107,6 +1140,8 @@
34BC72111B0DECAE0012A34B /* MWMMapViewControlsManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMMapViewControlsManager.mm; sourceTree = "<group>"; };
34BF0CC51C31304A00D097EB /* MWMAuthorizationCommon.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMAuthorizationCommon.mm; sourceTree = "<group>"; };
34BF0CC81C31306300D097EB /* MWMAuthorizationCommon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMAuthorizationCommon.h; sourceTree = "<group>"; };
34C243191CEDBDBA0006B7DC /* MWMEditorAdditionalNamesTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMEditorAdditionalNamesTableViewController.h; sourceTree = "<group>"; };
34C2431A1CEDBDBA0006B7DC /* MWMEditorAdditionalNamesTableViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMEditorAdditionalNamesTableViewController.mm; sourceTree = "<group>"; };
34C659461BD12A77009DC20A /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = "<group>"; };
34C659491BD12A81009DC20A /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = "<group>"; };
34C6594A1BD12A89009DC20A /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/InfoPlist.strings; sourceTree = "<group>"; };
@ -2271,6 +2306,15 @@
path = CustomViews/MapViewControls;
sourceTree = "<group>";
};
34C243181CEDBD950006B7DC /* AdditionalNames */ = {
isa = PBXGroup;
children = (
34C243191CEDBDBA0006B7DC /* MWMEditorAdditionalNamesTableViewController.h */,
34C2431A1CEDBDBA0006B7DC /* MWMEditorAdditionalNamesTableViewController.mm */,
);
path = AdditionalNames;
sourceTree = "<group>";
};
34CC4C051B81F38E00E44C1F /* TabbedView */ = {
isa = PBXGroup;
children = (
@ -2391,6 +2435,7 @@
34F9FB811C4389EE00F71201 /* Street */,
340C20E01C3E563500111D22 /* Cuisine */,
34EB84551C073DF70004689F /* OpeningHours */,
34C243181CEDBD950006B7DC /* AdditionalNames */,
340C20E51C3E58B000111D22 /* MWMEditorCommon.h */,
345FDD241C3BB3AF0070C459 /* MWMEditorViewController.h */,
345FDD251C3BB3AF0070C459 /* MWMEditorViewController.mm */,
@ -2407,6 +2452,19 @@
3401CD7A1C3CF1BE0028C6F8 /* MWMEditorSwitchTableViewCell.h */,
3401CD7B1C3CF1BE0028C6F8 /* MWMEditorSwitchTableViewCell.mm */,
3401CD7C1C3CF1BE0028C6F8 /* MWMEditorSwitchTableViewCell.xib */,
34B646BB1CEB6FC000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.h */,
34B646BC1CEB6FC000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.mm */,
34B646BF1CEB6FE000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.xib */,
345FD7DE1CEC7AD400F58045 /* MWMEditorAddAdditionalNameTableViewCell.h */,
345FD7DF1CEC7AD400F58045 /* MWMEditorAddAdditionalNameTableViewCell.mm */,
345FD7E21CEC7B0C00F58045 /* MWMEditorAddAdditionalNameTableViewCell.xib */,
34B646C21CEB740900E0C7A5 /* MWMEditorNameFooter.h */,
34B646C31CEB740900E0C7A5 /* MWMEditorNameFooter.mm */,
34B646C61CEB742500E0C7A5 /* MWMEditorNameFooter.xib */,
345FD7E51CEC7D8400F58045 /* MWMEditorAdditionalNamesHeader.h */,
345FD7E61CEC7D8400F58045 /* MWMEditorAdditionalNamesHeader.mm */,
345FD7E91CEC7DA800F58045 /* MWMEditorAdditionalNamesHeader.xib */,
34AB04B61CEC95B500CE8B36 /* MWMEditorAdditionalNamePlaceholderTableViewCell.xib */,
);
path = Editor;
sourceTree = "<group>";
@ -3267,6 +3325,7 @@
347FD86D1C60B2CE002FB65E /* MWMOpeningHoursAddScheduleTableViewCell.xib in Resources */,
34B82ACB1B8465C100180497 /* MWMSearchCategoryCell.xib in Resources */,
34CC4C0F1B82069C00E44C1F /* MWMSearchTabbedCollectionViewCell.xib in Resources */,
34AB04B71CEC95B500CE8B36 /* MWMEditorAdditionalNamePlaceholderTableViewCell.xib in Resources */,
FA46DA2C12D4166E00968C36 /* countries.txt in Resources */,
671182E21C7F0DD400CB8177 /* packed_polygons_obsolete.bin in Resources */,
4A23D15C1B8B4DD700D4EB6F /* resources-6plus_clear in Resources */,
@ -3305,10 +3364,12 @@
F63774E71B59375E00BCF54D /* MWMRoutingDisclaimerAlert.xib in Resources */,
4A7D89C71B2EBF3B00AC843E /* resources-xhdpi_dark in Resources */,
F652B2EA1C6DE8E500D20C8C /* MWMDropDown.xib in Resources */,
345FD7EA1CEC7DA800F58045 /* MWMEditorAdditionalNamesHeader.xib in Resources */,
97D40C0A184D031900A1D572 /* Images.xcassets in Resources */,
9DA46A141C47E95700EF52BA /* resources-6plus_legacy in Resources */,
B0DFE6311A1B78A200B6C35E /* LocalNotifications.plist in Resources */,
34B82ABB1B837FFD00180497 /* MWMSearchHistoryRequestCell.xib in Resources */,
345FD7E31CEC7B0C00F58045 /* MWMEditorAddAdditionalNameTableViewCell.xib in Resources */,
34F9FB921C43AF2400F71201 /* MWMStreetEditorEditTableViewCell.xib in Resources */,
6B653B941C7F2DE4007BEFC5 /* cuisine-strings in Resources */,
34B6CF5D1BBBFC6B009203C6 /* LaunchScreen.storyboard in Resources */,
@ -3338,6 +3399,7 @@
FA85F633145DDDC20090E1A0 /* packed_polygons.bin in Resources */,
F6ED13561B16439E0095C6DE /* MWMDirectionView.xib in Resources */,
34D15BA91BD8F93C00C8BCBE /* AddSetTableViewCell.xib in Resources */,
34B646C71CEB742500E0C7A5 /* MWMEditorNameFooter.xib in Resources */,
FA99CB73147089B100689A9A /* Localizable.strings in Resources */,
34CFFE8D1B7DE71C009D0C9F /* MWMSearchView.xib in Resources */,
3401CD711C3C0C420028C6F8 /* MWMEditorNameTableViewCell.xib in Resources */,
@ -3350,6 +3412,7 @@
4A00DBDF1AB704C400113624 /* drules_proto_dark.bin in Resources */,
4A23D15D1B8B4DD700D4EB6F /* resources-mdpi_clear in Resources */,
F6FE2C111B03A016009814AA /* PlacePageNavigationBar.xib in Resources */,
34B646C01CEB6FE000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.xib in Resources */,
F61579361AC2CEB60032D8E9 /* MWMRateAlert.xib in Resources */,
845C891F1C78748000940D7F /* me.maps.enterprise.entitlements in Resources */,
F6B97B291CD0CB170009B612 /* MWMBookmarkNameCell.xib in Resources */,
@ -3413,6 +3476,7 @@
845C892F1C8981CE00940D7F /* HockeySDKResources.bundle in Resources */,
6741A9461BF340DE002C974C /* MWMSearchTabbedViewController.xib in Resources */,
6741A9471BF340DE002C974C /* MWMSearchCategoryCell.xib in Resources */,
34AB04B81CEC95B500CE8B36 /* MWMEditorAdditionalNamePlaceholderTableViewCell.xib in Resources */,
6741A9481BF340DE002C974C /* MWMSearchTabbedCollectionViewCell.xib in Resources */,
6741A9491BF340DE002C974C /* countries.txt in Resources */,
6741A94A1BF340DE002C974C /* resources-6plus_clear in Resources */,
@ -3451,10 +3515,12 @@
6741A95C1BF340DE002C974C /* categories.txt in Resources */,
6741A95D1BF340DE002C974C /* types.txt in Resources */,
6741A95F1BF340DE002C974C /* InfoPlist.strings in Resources */,
345FD7EB1CEC7DA800F58045 /* MWMEditorAdditionalNamesHeader.xib in Resources */,
6741A9601BF340DE002C974C /* MWMRoutingDisclaimerAlert.xib in Resources */,
6741A9611BF340DE002C974C /* resources-xhdpi_dark in Resources */,
6741A9631BF340DE002C974C /* Images.xcassets in Resources */,
347FD8881C60B2CE002FB65E /* MWMOpeningHoursTimeSelectorTableViewCell.xib in Resources */,
345FD7E41CEC7B0C00F58045 /* MWMEditorAddAdditionalNameTableViewCell.xib in Resources */,
6B9978361C89A316003B8AA0 /* editor.config in Resources */,
9DA46A151C47E95700EF52BA /* resources-6plus_legacy in Resources */,
347FD8721C60B2CE002FB65E /* MWMOpeningHoursAllDayTableViewCell.xib in Resources */,
@ -3484,6 +3550,7 @@
6741A9721BF340DE002C974C /* MWMSearchCommonCell.xib in Resources */,
6741A9731BF340DE002C974C /* MWMSearchHistoryMyPositionCell.xib in Resources */,
6741A9741BF340DE002C974C /* resources-6plus_dark in Resources */,
34B646C81CEB742600E0C7A5 /* MWMEditorNameFooter.xib in Resources */,
3401CD6A1C3C03A80028C6F8 /* MWMEditorTextTableViewCell.xib in Resources */,
341F99E01C6B1165001C67B8 /* MWMMapDownloaderSubplaceTableViewCell.xib in Resources */,
6741A9751BF340DE002C974C /* WorldCoasts.mwm in Resources */,
@ -3496,6 +3563,8 @@
F6D4A7361CC103FB00BD4E5B /* MWMEditorNotesFooter.xib in Resources */,
34CCFDD81C22915600F28959 /* MWMPlacePageOpeningHoursWeekDayView.xib in Resources */,
6741A97A1BF340DE002C974C /* MWMSearchView.xib in Resources */,
6741A97C1BF340DE002C974C /* MWMBookmarkColorCell.xib in Resources */,
34B646C11CEB6FE000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.xib in Resources */,
6741A97D1BF340DE002C974C /* synonyms.txt in Resources */,
6741A97E1BF340DE002C974C /* drules_proto_dark.bin in Resources */,
F6B97B2A1CD0CB170009B612 /* MWMBookmarkNameCell.xib in Resources */,
@ -3619,7 +3688,9 @@
F6D4A72F1CC1030E00BD4E5B /* MWMEditorNotesFooter.mm in Sources */,
F62404FB1AAF3DB200B58DB6 /* UILabel+RuntimeAttributes.mm in Sources */,
34CC4C0E1B82069C00E44C1F /* MWMSearchTabbedCollectionViewCell.mm in Sources */,
34B646BD1CEB6FC000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.mm in Sources */,
F6588E2C1B15C26700EE1E58 /* MWMTextView.mm in Sources */,
34C2431B1CEDBDBA0006B7DC /* MWMEditorAdditionalNamesTableViewController.mm in Sources */,
34FE4C451BCC013500066718 /* MWMMapWidgets.mm in Sources */,
F61B0F2C1B8B82DB00C08258 /* MWMNextTurnPanel.mm in Sources */,
347FD8831C60B2CE002FB65E /* MWMOpeningHoursTableViewCell.mm in Sources */,
@ -3763,7 +3834,9 @@
F64F4B6D1B46A51F0081A24A /* MWMDownloaderDialogCell.mm in Sources */,
3491E7CB1C06F1F10042FE24 /* MWMPlacePageButtonCell.mm in Sources */,
97508423199522D300A7457D /* SettingsAndMoreVC.mm in Sources */,
34B646C41CEB740900E0C7A5 /* MWMEditorNameFooter.mm in Sources */,
341F99D91C6B1165001C67B8 /* MWMMapDownloaderPlaceTableViewCell.mm in Sources */,
345FD7E71CEC7D8400F58045 /* MWMEditorAdditionalNamesHeader.mm in Sources */,
341F99D51C6B1165001C67B8 /* MWMMapDownloaderLargeCountryTableViewCell.mm in Sources */,
347FD86F1C60B2CE002FB65E /* MWMOpeningHoursAllDayTableViewCell.mm in Sources */,
F6ED13541B1643900095C6DE /* MWMDirectionView.mm in Sources */,
@ -3781,6 +3854,7 @@
349C26B91BB04ED30005DF2F /* MWMBottomMenuView.mm in Sources */,
F63732961AE9431E00A03764 /* MWMBasePlacePageView.mm in Sources */,
F64F199B1AB81A00006EAF7E /* MWMAlert.mm in Sources */,
345FD7E01CEC7AD400F58045 /* MWMEditorAddAdditionalNameTableViewCell.mm in Sources */,
ED48BBB517C267F5003E7E92 /* ColorPickerView.mm in Sources */,
ED48BBBA17C2B1E2003E7E92 /* CircleView.mm in Sources */,
340E10631B949D1900D975D5 /* MWMSearchBookmarksManager.mm in Sources */,
@ -3839,7 +3913,9 @@
6741A9C11BF340DE002C974C /* MWMNextTurnPanel.mm in Sources */,
F6D4A7301CC1030E00BD4E5B /* MWMEditorNotesFooter.mm in Sources */,
6741A9C21BF340DE002C974C /* MWMiPhonePortraitPlacePage.mm in Sources */,
34B646BE1CEB6FC000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.mm in Sources */,
347FD8841C60B2CE002FB65E /* MWMOpeningHoursTableViewCell.mm in Sources */,
34C2431C1CEDBDBA0006B7DC /* MWMEditorAdditionalNamesTableViewController.mm in Sources */,
6741A9C31BF340DE002C974C /* MWMPlacePageActionBar.mm in Sources */,
6741A9C41BF340DE002C974C /* MWMRouteHelperPanel.mm in Sources */,
6741A9C61BF340DE002C974C /* MWMSearchCommonCell.mm in Sources */,
@ -3983,7 +4059,9 @@
6741AA1D1BF340DE002C974C /* MWMDownloadTransitMapAlert.mm in Sources */,
341F99DA1C6B1165001C67B8 /* MWMMapDownloaderPlaceTableViewCell.mm in Sources */,
341F99D61C6B1165001C67B8 /* MWMMapDownloaderLargeCountryTableViewCell.mm in Sources */,
34B646C51CEB740900E0C7A5 /* MWMEditorNameFooter.mm in Sources */,
6741AA1E1BF340DE002C974C /* LinkCell.mm in Sources */,
345FD7E81CEC7D8400F58045 /* MWMEditorAdditionalNamesHeader.mm in Sources */,
347FD8701C60B2CE002FB65E /* MWMOpeningHoursAllDayTableViewCell.mm in Sources */,
6741AA1F1BF340DE002C974C /* MWMSearchBookmarksCell.mm in Sources */,
34E273221C737A4100463965 /* MWMMigrationViewController.mm in Sources */,
@ -4001,6 +4079,7 @@
6741AA271BF340DE002C974C /* MWMBasePlacePageView.mm in Sources */,
F64D9C9B1C8861BA0063FA30 /* MWMObjectsCategorySelectorController.mm in Sources */,
6741AA281BF340DE002C974C /* MWMAlert.mm in Sources */,
345FD7E11CEC7AD400F58045 /* MWMEditorAddAdditionalNameTableViewCell.mm in Sources */,
6741AA291BF340DE002C974C /* ColorPickerView.mm in Sources */,
6741AA2B1BF340DE002C974C /* CircleView.mm in Sources */,
56D545631C74A41900E3719C /* Framework.cpp in Sources */,

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15E65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Wns-nH-AQU">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Wns-nH-AQU">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
@ -759,6 +759,7 @@
<segue destination="Heu-QR-M0N" kind="custom" identifier="Editor2StreetEditorSegue" customClass="MWMSegue" id="iJS-b1-GuT"/>
<segue destination="QlF-CJ-cEG" kind="custom" identifier="Editor2CategoryEditorSegue" customClass="MWMSegue" id="urr-1u-jhn"/>
<segue destination="da4-KT-kzF" kind="custom" identifier="Editor2CuisineEditorSegue" customClass="MWMSegue" id="LAL-ce-Yt6"/>
<segue destination="ocL-kj-jxR" kind="custom" identifier="Editor2AdditionalNamesEditorSegue" customClass="MWMSegue" id="eDT-9j-K6W"/>
</connections>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="FGq-OI-eQl" userLabel="First Responder" sceneMemberID="firstResponder"/>
@ -1043,7 +1044,7 @@
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="zeH-cr-FVE" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1134" y="2753"/>
<point key="canvasLocation" x="1055" y="2753"/>
</scene>
<!--AuthorizationOSM Login View Controller-->
<scene sceneID="14Y-XP-wqe">
@ -1766,6 +1767,50 @@
</objects>
<point key="canvasLocation" x="2705" y="5187"/>
</scene>
<!--Editor Additional Names Table View Controller-->
<scene sceneID="86k-hJ-Anq">
<objects>
<tableViewController id="ocL-kj-jxR" customClass="MWMEditorAdditionalNamesTableViewController" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="tQ2-XI-QWd">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="ListCellIdentifier" textLabel="JcK-nR-UGw" detailTextLabel="Cmi-x5-6Vt" style="IBUITableViewCellStyleSubtitle" id="RXe-xp-xlR" customClass="MWMTableViewCell">
<rect key="frame" x="0.0" y="28" width="600" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="RXe-xp-xlR" id="g0x-Vt-1FI">
<rect key="frame" x="0.0" y="0.0" width="600" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="JcK-nR-UGw">
<rect key="frame" x="15" y="6" width="31" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Detail" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Cmi-x5-6Vt">
<rect key="frame" x="15" y="25" width="30" height="13"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="11"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
</prototypes>
<connections>
<outlet property="dataSource" destination="ocL-kj-jxR" id="MBP-fV-3dW"/>
<outlet property="delegate" destination="ocL-kj-jxR" id="7Ju-83-Vjz"/>
</connections>
</tableView>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Slp-0d-mTI" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-372" y="3560"/>
</scene>
<!--Street Editor View Controller-->
<scene sceneID="hgU-jB-a3C">
<objects>
@ -1783,7 +1828,7 @@
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dU3-4F-emf" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="154" y="3513"/>
<point key="canvasLocation" x="330" y="3560"/>
</scene>
<!--Objects Category Selector Controller-->
<scene sceneID="hWY-Fu-EcX">
@ -1954,7 +1999,7 @@
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="bp6-aD-bwn" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="842" y="3513"/>
<point key="canvasLocation" x="1055" y="3560"/>
</scene>
<!--Map Downloader View Controller-->
<scene sceneID="1ZZ-fS-lza">
@ -2659,11 +2704,11 @@
<image name="separator_image" width="1" height="1"/>
</resources>
<inferredMetricsTieBreakers>
<segue reference="OEF-kR-jKi"/>
<segue reference="Tkr-Ad-FQL"/>
<segue reference="0A8-4b-0A2"/>
<segue reference="4Cc-99-mlN"/>
<segue reference="nJf-7z-2TX"/>
<segue reference="Pet-Wq-d4a"/>
<segue reference="nJf-7z-2TX"/>
<segue reference="gFM-Ca-ARt"/>
<segue reference="urr-1u-jhn"/>
<segue reference="0A8-4b-0A2"/>
<segue reference="hU6-lr-OOV"/>
</inferredMetricsTieBreakers>
</document>

View file

@ -2,6 +2,7 @@
+ (UIFont *)regular10;
+ (UIFont *)regular12;
+ (UIFont *)regular13;
+ (UIFont *)regular14;
+ (UIFont *)regular15;
+ (UIFont *)regular16;

View file

@ -59,6 +59,12 @@ NSString * fontName(FontWeight weight, CGFloat size)
return [UIFont fontWithName:fontName(FontWeightRegular, size) size:size];
}
+ (UIFont *)regular13
{
CGFloat const size = 13;
return [UIFont fontWithName:fontName(FontWeightRegular, size) size:size];
}
+ (UIFont *)regular14
{
CGFloat const size = 14;