forked from organicmaps/organicmaps
[iOS] implement update guides
This commit is contained in:
parent
a92639b19d
commit
da41558057
6 changed files with 264 additions and 27 deletions
|
@ -350,6 +350,7 @@
|
|||
</tableView>
|
||||
<connections>
|
||||
<outlet property="directLinkInstructionsLabel" destination="XQh-26-CNo" id="0mF-Ta-Odg"/>
|
||||
<outlet property="editOnWebButton" destination="ULn-RX-CjB" id="EBo-eG-874"/>
|
||||
<outlet property="getDirectLinkCell" destination="90b-ef-VUJ" id="L7h-0r-eSe"/>
|
||||
<outlet property="licenseAgreementTextView" destination="dsV-Vs-oCo" id="TtB-Uw-WGR"/>
|
||||
<outlet property="updateDirectLinkCell" destination="aAa-cf-kTL" id="Gaz-h4-0E6"/>
|
||||
|
|
|
@ -27,18 +27,23 @@ final class BookmarksSharingViewController: MWMTableViewController {
|
|||
private let publishUpdateRowIndex = 2
|
||||
|
||||
private var rowsInPublicSection: Int {
|
||||
return category.accessStatus == .public ? 3 : 2
|
||||
return category.accessStatus == .public ? (uploadAndPublishCell.cellState == .updating ? 2 : 3) : 2
|
||||
}
|
||||
|
||||
private var rowsInPrivateSection: Int {
|
||||
return category.accessStatus == .private ? 3 : 2
|
||||
return category.accessStatus == .private ? (getDirectLinkCell.cellState == .updating ? 2 : 3) : 2
|
||||
}
|
||||
|
||||
@IBOutlet private weak var uploadAndPublishCell: UploadActionCell!
|
||||
@IBOutlet private weak var getDirectLinkCell: UploadActionCell!
|
||||
@IBOutlet private weak var updatePublishCell: UITableViewCell!
|
||||
@IBOutlet private weak var updateDirectLinkCell: UITableViewCell!
|
||||
@IBOutlet private weak var directLinkInstructionsLabel: UILabel!
|
||||
@IBOutlet weak var uploadAndPublishCell: UploadActionCell!
|
||||
@IBOutlet weak var getDirectLinkCell: UploadActionCell!
|
||||
@IBOutlet weak var updatePublishCell: UITableViewCell!
|
||||
@IBOutlet weak var updateDirectLinkCell: UITableViewCell!
|
||||
@IBOutlet weak var directLinkInstructionsLabel: UILabel!
|
||||
@IBOutlet weak var editOnWebButton: UIButton! {
|
||||
didSet {
|
||||
editOnWebButton.setTitle(L("edit_on_web").uppercased(), for: .normal)
|
||||
}
|
||||
}
|
||||
|
||||
@IBOutlet private weak var licenseAgreementTextView: UITextView! {
|
||||
didSet {
|
||||
|
@ -82,11 +87,13 @@ final class BookmarksSharingViewController: MWMTableViewController {
|
|||
private func configureActionCells() {
|
||||
uploadAndPublishCell.config(titles: [ .normal : L("upload_and_publish"),
|
||||
.inProgress : L("upload_and_publish_progress_text"),
|
||||
.updating : L("direct_link_updating_text"),
|
||||
.completed : L("upload_and_publish_success") ],
|
||||
image: UIImage(named: "ic24PxGlobe"),
|
||||
delegate: self)
|
||||
getDirectLinkCell.config(titles: [ .normal : L("upload_and_get_direct_link"),
|
||||
.inProgress : L("direct_link_progress_text"),
|
||||
.updating : L("direct_link_updating_text"),
|
||||
.completed : L("direct_link_success") ],
|
||||
image: UIImage(named: "ic24PxLink"),
|
||||
delegate: self)
|
||||
|
@ -142,7 +149,7 @@ final class BookmarksSharingViewController: MWMTableViewController {
|
|||
if cell == uploadAndPublishCell {
|
||||
startUploadAndPublishFlow()
|
||||
} else if cell == getDirectLinkCell {
|
||||
uploadAndGetDirectLink()
|
||||
uploadAndGetDirectLink(update: false)
|
||||
} else if cell == updatePublishCell {
|
||||
updatePublic()
|
||||
} else if cell == updateDirectLinkCell {
|
||||
|
@ -151,11 +158,21 @@ final class BookmarksSharingViewController: MWMTableViewController {
|
|||
}
|
||||
|
||||
private func updatePublic() {
|
||||
|
||||
MWMAlertViewController.activeAlert().presentDefaultAlert(withTitle: L("any_access_update_alert_title"),
|
||||
message: L("any_access_update_alert_message"),
|
||||
rightButtonTitle: L("any_access_update_alert_update"),
|
||||
leftButtonTitle: L("cancel")) {
|
||||
self.uploadAndPublish(update: true)
|
||||
}
|
||||
}
|
||||
|
||||
private func updateDirectLink() {
|
||||
|
||||
MWMAlertViewController.activeAlert().presentDefaultAlert(withTitle: L("any_access_update_alert_title"),
|
||||
message: L("any_access_update_alert_message"),
|
||||
rightButtonTitle: L("any_access_update_alert_update"),
|
||||
leftButtonTitle: L("cancel")) {
|
||||
self.uploadAndGetDirectLink(update: true)
|
||||
}
|
||||
}
|
||||
|
||||
private func startUploadAndPublishFlow() {
|
||||
|
@ -167,16 +184,25 @@ final class BookmarksSharingViewController: MWMTableViewController {
|
|||
}
|
||||
}
|
||||
|
||||
private func uploadAndPublish() {
|
||||
guard let tags = sharingTags, let userStatus = sharingUserStatus else {
|
||||
assert(false, "not enough data for public sharing")
|
||||
return
|
||||
private func uploadAndPublish(update: Bool) {
|
||||
if !update {
|
||||
guard let tags = sharingTags, let userStatus = sharingUserStatus else {
|
||||
assert(false, "not enough data for public sharing")
|
||||
return
|
||||
}
|
||||
|
||||
manager.setCategory(category.categoryId, authorType: userStatus)
|
||||
manager.setCategory(category.categoryId, tags: tags)
|
||||
}
|
||||
|
||||
manager.setCategory(category.categoryId, authorType: userStatus)
|
||||
manager.setCategory(category.categoryId, tags: tags)
|
||||
|
||||
uploadAndPublishCell.cellState = update ? .updating : .inProgress
|
||||
if update {
|
||||
self.tableView.deleteRows(at: [IndexPath(row: self.publishUpdateRowIndex,
|
||||
section: self.publicSectionIndex)],
|
||||
with: .automatic)
|
||||
}
|
||||
|
||||
manager.uploadAndPublishCategory(withId: category.categoryId, progress: { (progress) in
|
||||
self.uploadAndPublishCell.cellState = .inProgress
|
||||
}) { (_, error) in
|
||||
if let error = error as NSError? {
|
||||
self.uploadAndPublishCell.cellState = .normal
|
||||
|
@ -200,11 +226,14 @@ final class BookmarksSharingViewController: MWMTableViewController {
|
|||
section: self.publicSectionIndex)],
|
||||
with: .automatic)
|
||||
self.tableView.endUpdates()
|
||||
if update {
|
||||
Toast.toast(withText: L("direct_link_updating_success")).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func uploadAndGetDirectLink() {
|
||||
private func uploadAndGetDirectLink(update: Bool) {
|
||||
Statistics.logEvent(kStatSharingOptionsClick, withParameters: [kStatItem : kStatPrivate])
|
||||
performAfterValidation(anchor: getDirectLinkCell) { [weak self] in
|
||||
guard let s = self else {
|
||||
|
@ -212,10 +241,13 @@ final class BookmarksSharingViewController: MWMTableViewController {
|
|||
return
|
||||
}
|
||||
|
||||
s.getDirectLinkCell.cellState = update ? .updating : .inProgress
|
||||
if update {
|
||||
s.tableView.deleteRows(at: [IndexPath(item: s.directLinkUpdateRowIndex,
|
||||
section: s.privateSectionIndex)],
|
||||
with: .automatic)
|
||||
}
|
||||
s.manager.uploadAndGetDirectLinkCategory(withId: s.category.categoryId, progress: { (progress) in
|
||||
if progress == .uploadStarted {
|
||||
s.getDirectLinkCell.cellState = .inProgress
|
||||
}
|
||||
}, completion: { (_, error) in
|
||||
if let error = error as NSError? {
|
||||
s.getDirectLinkCell.cellState = .normal
|
||||
|
@ -229,6 +261,9 @@ final class BookmarksSharingViewController: MWMTableViewController {
|
|||
s.tableView.insertRows(at: [IndexPath(item: s.directLinkUpdateRowIndex,
|
||||
section: s.privateSectionIndex)],
|
||||
with: .automatic)
|
||||
if update {
|
||||
Toast.toast(withText: L("direct_link_updating_success")).show()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -291,13 +326,34 @@ final class BookmarksSharingViewController: MWMTableViewController {
|
|||
}
|
||||
|
||||
private func showMalformedDataError() {
|
||||
MWMAlertViewController.activeAlert().presentInfoAlert(L("unable_upload_errorr_title"),
|
||||
text: L("unable_upload_error_subtitle_broken"))
|
||||
let alert = EditOnWebAlertViewController(with: L("html_format_error_title"),
|
||||
message: L("html_format_error_subtitle"))
|
||||
alert.onAcceptBlock = {
|
||||
self.dismiss(animated: true, completion: {
|
||||
self.performSegue(withIdentifier: self.kEditOnWebSegueIdentifier, sender: nil)
|
||||
})
|
||||
}
|
||||
alert.onCancelBlock = {
|
||||
self.dismiss(animated: true)
|
||||
}
|
||||
|
||||
navigationController?.present(alert, animated: true)
|
||||
}
|
||||
|
||||
private func showAccessError() {
|
||||
MWMAlertViewController.activeAlert().presentInfoAlert(L("unable_upload_errorr_title"),
|
||||
text: L("unable_upload_error_subtitle_edited"))
|
||||
let alert = EditOnWebAlertViewController(with: L("public_or_limited_access_after_edit_online_error_title"),
|
||||
message: L("public_or_limited_access_after_edit_online_error_message"))
|
||||
alert.onAcceptBlock = {
|
||||
self.dismiss(animated: true, completion: {
|
||||
self.performSegue(withIdentifier: self.kEditOnWebSegueIdentifier, sender: nil)
|
||||
})
|
||||
}
|
||||
|
||||
alert.onCancelBlock = {
|
||||
self.dismiss(animated: true)
|
||||
}
|
||||
|
||||
navigationController?.present(alert, animated: true)
|
||||
}
|
||||
|
||||
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
||||
|
@ -346,7 +402,7 @@ extension BookmarksSharingViewController: SharingTagsViewControllerDelegate {
|
|||
func sharingTagsViewController(_ viewController: SharingTagsViewController, didSelect tags: [MWMTag]) {
|
||||
navigationController?.popViewController(animated: true)
|
||||
sharingTags = tags
|
||||
uploadAndPublish()
|
||||
uploadAndPublish(update: false)
|
||||
}
|
||||
|
||||
func sharingTagsViewControllerDidCancel(_ viewController: SharingTagsViewController) {
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
class EditOnWebAlertViewController: UIViewController {
|
||||
private let transitioning = FadeTransitioning<AlertPresentationController>()
|
||||
private var alertTitle = ""
|
||||
private var alertMessage = ""
|
||||
|
||||
var onAcceptBlock: MWMVoidBlock?
|
||||
var onCancelBlock: MWMVoidBlock?
|
||||
|
||||
@IBOutlet weak var titleLabel: UILabel!
|
||||
@IBOutlet weak var messageLabel: UILabel!
|
||||
@IBOutlet weak var cancelButton: UIButton!
|
||||
@IBOutlet weak var acceptButton: UIButton! {
|
||||
didSet {
|
||||
acceptButton.setTitle(L("edit_on_web").uppercased(), for: .normal)
|
||||
}
|
||||
}
|
||||
|
||||
convenience init(with title: String, message: String) {
|
||||
self.init()
|
||||
alertTitle = title
|
||||
alertMessage = message
|
||||
}
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
titleLabel.text = alertTitle
|
||||
messageLabel.text = alertMessage
|
||||
}
|
||||
|
||||
override var transitioningDelegate: UIViewControllerTransitioningDelegate? {
|
||||
get { return transitioning }
|
||||
set { }
|
||||
}
|
||||
|
||||
override var modalPresentationStyle: UIModalPresentationStyle {
|
||||
get { return .custom }
|
||||
set { }
|
||||
}
|
||||
|
||||
@IBAction func onAccept(_ sender: UIButton) {
|
||||
onAcceptBlock?()
|
||||
}
|
||||
|
||||
@IBAction func onCancel(_ sender: UIButton) {
|
||||
onCancelBlock?()
|
||||
}
|
||||
}
|
|
@ -0,0 +1,115 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14460.31" 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="14460.20"/>
|
||||
<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" customClass="EditOnWebAlertViewController" customModule="maps_me" customModuleProvider="target">
|
||||
<connections>
|
||||
<outlet property="acceptButton" destination="VKv-gq-AkS" id="kY8-gy-8bh"/>
|
||||
<outlet property="cancelButton" destination="ims-sO-qtH" id="hu3-Zu-NSd"/>
|
||||
<outlet property="messageLabel" destination="UlE-bL-cfg" id="ttA-Qk-Ocu"/>
|
||||
<outlet property="titleLabel" destination="z4t-Nz-dPi" id="khc-WY-B8p"/>
|
||||
<outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
|
||||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="307" height="257"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="You have edited you bookmarks online" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="z4t-Nz-dPi">
|
||||
<rect key="frame" x="16" y="24" width="275" height="43"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="18"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="bold17"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="public_or_limited_access_after_edit_online_error_title"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Further on please edit, publish or share the guide with you friends via out website" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="UlE-bL-cfg">
|
||||
<rect key="frame" x="16" y="77" width="275" height="33.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<color key="textColor" white="0.0" alpha="0.5442155393835616" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="public_or_limited_access_after_edit_online_error_message"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" verticalCompressionResistancePriority="751" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ims-sO-qtH" userLabel="Cancel">
|
||||
<rect key="frame" x="16" y="188.5" width="275" height="48"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="48" id="lvW-2n-I6Q"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
|
||||
<state key="normal" title="Cancel">
|
||||
<color key="titleColor" white="0.0" alpha="0.38328339041095888" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="textColorHighlightedName" value="linkBlueHighlighted"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium16"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="textColorName" value="blackSecondaryText"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="onCancel:" destination="-1" eventType="touchUpInside" id="YMO-gu-PBi"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" verticalCompressionResistancePriority="751" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="VKv-gq-AkS" customClass="MWMButton">
|
||||
<rect key="frame" x="16" y="130.5" width="275" height="48"/>
|
||||
<color key="backgroundColor" red="0.1176470588" green="0.58823529409999997" blue="0.94117647059999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="275" id="E1D-6z-eho"/>
|
||||
<constraint firstAttribute="height" constant="48" id="KpB-i9-dRs"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
|
||||
<state key="normal" title="EDIT ON WEB">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium16"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="linkBlue"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="backgroundHighlightedColorName" value="linkBlueHighlighted"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="8"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="tintColorName" value="white"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="onAccept:" destination="-1" eventType="touchUpInside" id="2Fj-t8-3OH"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="ims-sO-qtH" firstAttribute="trailing" secondItem="VKv-gq-AkS" secondAttribute="trailing" id="4eC-CL-lkC"/>
|
||||
<constraint firstItem="UlE-bL-cfg" firstAttribute="trailing" secondItem="z4t-Nz-dPi" secondAttribute="trailing" id="CMm-Wn-MLd"/>
|
||||
<constraint firstItem="ims-sO-qtH" firstAttribute="top" secondItem="VKv-gq-AkS" secondAttribute="bottom" constant="10" id="CdB-n2-LbK"/>
|
||||
<constraint firstItem="z4t-Nz-dPi" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="24" id="JCY-6N-QfB"/>
|
||||
<constraint firstItem="VKv-gq-AkS" firstAttribute="top" secondItem="UlE-bL-cfg" secondAttribute="bottom" constant="20" id="NLz-BD-7D6"/>
|
||||
<constraint firstItem="VKv-gq-AkS" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="16" id="Nqc-hN-IjG"/>
|
||||
<constraint firstAttribute="bottom" secondItem="ims-sO-qtH" secondAttribute="bottom" constant="20.5" id="SdP-ZG-W3U"/>
|
||||
<constraint firstItem="UlE-bL-cfg" firstAttribute="top" secondItem="z4t-Nz-dPi" secondAttribute="bottom" constant="10" id="UQO-SJ-iZX"/>
|
||||
<constraint firstAttribute="trailing" secondItem="VKv-gq-AkS" secondAttribute="trailing" constant="16" id="fMP-8P-b6v"/>
|
||||
<constraint firstAttribute="trailing" secondItem="z4t-Nz-dPi" secondAttribute="trailing" constant="16" id="npB-Ao-XgR"/>
|
||||
<constraint firstItem="UlE-bL-cfg" firstAttribute="leading" secondItem="z4t-Nz-dPi" secondAttribute="leading" id="oHJ-L5-BLD"/>
|
||||
<constraint firstItem="z4t-Nz-dPi" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="16" id="w3r-vc-ZIQ"/>
|
||||
<constraint firstItem="ims-sO-qtH" firstAttribute="leading" secondItem="VKv-gq-AkS" secondAttribute="leading" id="xB2-ch-cgh"/>
|
||||
</constraints>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
|
||||
<point key="canvasLocation" x="128.80000000000001" y="-31.03448275862069"/>
|
||||
</view>
|
||||
</objects>
|
||||
</document>
|
|
@ -5,6 +5,7 @@ protocol UploadActionCellDelegate: AnyObject {
|
|||
enum UploadActionCellState: String {
|
||||
case normal
|
||||
case inProgress
|
||||
case updating
|
||||
case completed
|
||||
case disabled
|
||||
}
|
||||
|
@ -48,6 +49,14 @@ final class UploadActionCell: MWMTableViewCell {
|
|||
actionTitle.text = titles?[.inProgress]
|
||||
shareButton.isHidden = true
|
||||
selectionStyle = .none
|
||||
case .updating:
|
||||
progressView.isHidden = false
|
||||
actionImage.tintColor = .blackSecondaryText()
|
||||
actionTitle.textColor = .blackSecondaryText()
|
||||
actionTitle.font = .italic16()
|
||||
actionTitle.text = titles?[.updating]
|
||||
shareButton.isHidden = true
|
||||
selectionStyle = .none
|
||||
case .completed:
|
||||
progressView.isHidden = true
|
||||
actionImage.tintColor = .blackSecondaryText()
|
||||
|
|
|
@ -382,6 +382,8 @@
|
|||
471BBD942130390F00EB17C9 /* TutorialViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 471BBD932130390F00EB17C9 /* TutorialViewController.swift */; };
|
||||
4726254921C27D4B00C7BAAD /* PlacePageDescriptionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4726254821C27D4B00C7BAAD /* PlacePageDescriptionViewController.swift */; };
|
||||
47289E532209BE3D002ABFC0 /* MWMActivityIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 47289E522209BE3D002ABFC0 /* MWMActivityIndicator.m */; };
|
||||
47289E5A2212DFFF002ABFC0 /* EditOnWebAlertViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47289E582212DFFF002ABFC0 /* EditOnWebAlertViewController.swift */; };
|
||||
47289E5B2212DFFF002ABFC0 /* EditOnWebAlertViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 47289E592212DFFF002ABFC0 /* EditOnWebAlertViewController.xib */; };
|
||||
472E3F472146BCD30020E412 /* SubscriptionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472E3F462146BCD30020E412 /* SubscriptionManager.swift */; };
|
||||
472E3F4A2146C4CD0020E412 /* MWMPurchaseManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 472E3F492146C4CD0020E412 /* MWMPurchaseManager.mm */; };
|
||||
472E3F4C2147D5700020E412 /* Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472E3F4B2147D5700020E412 /* Subscription.swift */; };
|
||||
|
@ -1413,6 +1415,8 @@
|
|||
4726254821C27D4B00C7BAAD /* PlacePageDescriptionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlacePageDescriptionViewController.swift; sourceTree = "<group>"; };
|
||||
47289E512209BE3D002ABFC0 /* MWMActivityIndicator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MWMActivityIndicator.h; path = CustomViews/MWMActivityIndicator.h; sourceTree = "<group>"; };
|
||||
47289E522209BE3D002ABFC0 /* MWMActivityIndicator.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MWMActivityIndicator.m; path = CustomViews/MWMActivityIndicator.m; sourceTree = "<group>"; };
|
||||
47289E582212DFFF002ABFC0 /* EditOnWebAlertViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditOnWebAlertViewController.swift; sourceTree = "<group>"; };
|
||||
47289E592212DFFF002ABFC0 /* EditOnWebAlertViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = EditOnWebAlertViewController.xib; sourceTree = "<group>"; };
|
||||
472E3F462146BCD30020E412 /* SubscriptionManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscriptionManager.swift; sourceTree = "<group>"; };
|
||||
472E3F482146C4CD0020E412 /* MWMPurchaseManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMPurchaseManager.h; sourceTree = "<group>"; };
|
||||
472E3F492146C4CD0020E412 /* MWMPurchaseManager.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMPurchaseManager.mm; sourceTree = "<group>"; };
|
||||
|
@ -2229,6 +2233,8 @@
|
|||
33603C84219F0F6300B11FFE /* SharingPropertiesViewController.swift */,
|
||||
33F7668E21A57CDF00A88B16 /* EditOnWebViewController.swift */,
|
||||
33F8BA3B2199858B00ECA8EE /* Tags */,
|
||||
47289E582212DFFF002ABFC0 /* EditOnWebAlertViewController.swift */,
|
||||
47289E592212DFFF002ABFC0 /* EditOnWebAlertViewController.xib */,
|
||||
);
|
||||
path = Sharing;
|
||||
sourceTree = "<group>";
|
||||
|
@ -4699,6 +4705,7 @@
|
|||
34BBD6471F82649D0070CA50 /* GoogleSignIn.bundle in Resources */,
|
||||
F6E2FE851E097BA00083EBEC /* MWMPlacePageOpeningHoursWeekDayView.xib in Resources */,
|
||||
F6E2FE941E097BA00083EBEC /* PlacePageTaxiCell.xib in Resources */,
|
||||
47289E5B2212DFFF002ABFC0 /* EditOnWebAlertViewController.xib in Resources */,
|
||||
F6E2FEA61E097BA00083EBEC /* MWMPPView.xib in Resources */,
|
||||
47E3C72221108E9F008B3B27 /* BookmarksLoadedViewController.xib in Resources */,
|
||||
6741A9811BF340DE002C974C /* MWMRateAlert.xib in Resources */,
|
||||
|
@ -5193,6 +5200,7 @@
|
|||
B32FE74020D2844600EF7446 /* DownloadedBookmarksViewController.swift in Sources */,
|
||||
340416541E7C09C200E2B6D6 /* PhotoScalingView.swift in Sources */,
|
||||
4767CDA820AB401000BD8166 /* LinkTextView.swift in Sources */,
|
||||
47289E5A2212DFFF002ABFC0 /* EditOnWebAlertViewController.swift in Sources */,
|
||||
34763EE71F2F392300F4D2D3 /* MWMTextToSpeech.mm in Sources */,
|
||||
34ABA6251C2D551900FE1BEC /* MWMInputValidatorFactory.mm in Sources */,
|
||||
F6E2FD861E097BA00083EBEC /* MWMBaseMapDownloaderViewController.mm in Sources */,
|
||||
|
|
Loading…
Add table
Reference in a new issue