mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-19 21:13:35 +00:00
[ios] Changed settings to SwiftUI
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
This commit is contained in:
committed by
Konstantin Pastbin
parent
090ed5044a
commit
fdbb41e0fd
@@ -1,24 +1,31 @@
|
|||||||
import UIKit
|
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
import UIKit
|
||||||
|
|
||||||
/// Class for accesing SwiftUI views from Objective-C code
|
/// Class for accesing SwiftUI views from Objective-C code
|
||||||
@objc class BridgeControllers: NSObject {
|
@objc class BridgeControllers: NSObject {
|
||||||
/// The `ProfileView`
|
|
||||||
@objc static func profile() -> UIViewController {
|
|
||||||
return UIHostingController(rootView: ProfileView())
|
|
||||||
}
|
|
||||||
|
|
||||||
/// The `ProfileView` for presentation in an alert
|
/// The `ProfileView` for presentation in an alert
|
||||||
@objc static func profileAsAlert() -> UIViewController {
|
@objc static func profileAsAlert() -> UIViewController {
|
||||||
return UIHostingController(rootView: ProfileView(isPresentedAsAlert: true))
|
let profileBridgeController = UIHostingController(rootView: ProfileView(isPresentedAsAlert: true))
|
||||||
|
profileBridgeController.view.backgroundColor = .systemGroupedBackground
|
||||||
|
return profileBridgeController
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// Class for using the SwiftUI `SettingsView` in the interface builder
|
||||||
|
class SettingsBridgeController: UIHostingController<SettingsView> {
|
||||||
|
required init?(coder aDecoder: NSCoder) {
|
||||||
|
super.init(coder: aDecoder, rootView: SettingsView())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// Class for using the SwiftUI `ProfileView` in the interface builder
|
/// Class for using the SwiftUI `ProfileView` in the interface builder
|
||||||
class ProfileBridgeController: UIHostingController<ProfileView> {
|
class ProfileBridgeController: UIHostingController<ProfileView> {
|
||||||
required init?(coder aDecoder: NSCoder) {
|
required init?(coder aDecoder: NSCoder) {
|
||||||
super.init(coder: aDecoder, rootView: ProfileView())
|
super.init(coder: aDecoder, rootView: ProfileView())
|
||||||
|
self.view.tintColor = .alternativeAccent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
import SwiftUI
|
|
||||||
import SafariServices
|
import SafariServices
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
/// View for Safari via a Safari view controller
|
/// View for Safari via a Safari view controller
|
||||||
struct SafariView: UIViewControllerRepresentable {
|
struct SafariView: UIViewControllerRepresentable {
|
||||||
// MARK: Properties
|
// MARK: Properties
|
||||||
|
|
||||||
|
/// The notification name for dismissing this view
|
||||||
|
static let dismissNotificationName: Notification.Name = Notification.Name(rawValue: "DismissSafariView")
|
||||||
|
|
||||||
|
|
||||||
/// The url
|
/// The url
|
||||||
let url: URL
|
let url: URL
|
||||||
|
|
||||||
@@ -24,7 +27,7 @@ struct SafariView: UIViewControllerRepresentable {
|
|||||||
let safariViewControllerConfiguration = SFSafariViewController.Configuration()
|
let safariViewControllerConfiguration = SFSafariViewController.Configuration()
|
||||||
safariViewControllerConfiguration.activityButton = nil
|
safariViewControllerConfiguration.activityButton = nil
|
||||||
safariViewControllerConfiguration.barCollapsingEnabled = true
|
safariViewControllerConfiguration.barCollapsingEnabled = true
|
||||||
|
|
||||||
let safariViewController = SFSafariViewController(url: url, configuration: safariViewControllerConfiguration)
|
let safariViewController = SFSafariViewController(url: url, configuration: safariViewControllerConfiguration)
|
||||||
safariViewController.preferredBarTintColor = UIColor.accent
|
safariViewController.preferredBarTintColor = UIColor.accent
|
||||||
safariViewController.preferredControlTintColor = UIColor.white
|
safariViewController.preferredControlTintColor = UIColor.white
|
||||||
|
|||||||
@@ -605,12 +605,6 @@ NSString *const kSettingsSegue = @"Map2Settings";
|
|||||||
[self.navigationController pushViewController:descriptionViewController animated:YES];
|
[self.navigationController pushViewController:descriptionViewController animated:YES];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)openDrivingOptions {
|
|
||||||
UIStoryboard *sb = [UIStoryboard instance:MWMStoryboardDrivingOptions];
|
|
||||||
UIViewController *vc = [sb instantiateInitialViewController];
|
|
||||||
[self.navigationController pushViewController:vc animated:YES];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)processMyPositionStateModeEvent:(MWMMyPositionMode)mode {
|
- (void)processMyPositionStateModeEvent:(MWMMyPositionMode)mode {
|
||||||
self.currentPositionMode = mode;
|
self.currentPositionMode = mode;
|
||||||
[MWMLocationManager setMyPositionMode:mode];
|
[MWMLocationManager setMyPositionMode:mode];
|
||||||
|
|||||||
@@ -138,9 +138,7 @@
|
|||||||
Task(priority: .userInitiated) {
|
Task(priority: .userInitiated) {
|
||||||
await Profile.saveAuthorizationToken(from: code)
|
await Profile.saveAuthorizationToken(from: code)
|
||||||
DispatchQueue.main.sync {
|
DispatchQueue.main.sync {
|
||||||
let window = (UIApplication.shared.connectedScenes.filter { $0.activationState == .foregroundActive }.first(where: { $0 is UIWindowScene }) as? UIWindowScene)?.keyWindow
|
NotificationCenter.default.post(name: SafariView.dismissNotificationName, object: nil)
|
||||||
window?.rootViewController?.presentedViewController?.navigationController?.popToRootViewController(animated: true)
|
|
||||||
window?.rootViewController?.presentedViewController?.dismiss(animated: true)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
@@ -149,9 +147,7 @@
|
|||||||
}
|
}
|
||||||
case .incorrect:
|
case .incorrect:
|
||||||
if url.absoluteString.starts(with: "cm://oauth2/osm/callback") {
|
if url.absoluteString.starts(with: "cm://oauth2/osm/callback") {
|
||||||
let window = (UIApplication.shared.connectedScenes.filter { $0.activationState == .foregroundActive }.first(where: { $0 is UIWindowScene }) as? UIWindowScene)?.keyWindow
|
NotificationCenter.default.post(name: SafariView.dismissNotificationName, object: nil)
|
||||||
window?.rootViewController?.presentedViewController?.navigationController?.popToRootViewController(animated: true)
|
|
||||||
window?.rootViewController?.presentedViewController?.dismiss(animated: true)
|
|
||||||
}
|
}
|
||||||
// Invalid URL or API parameters.
|
// Invalid URL or API parameters.
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -1,6 +1,15 @@
|
|||||||
NS_SWIFT_NAME(Settings)
|
NS_SWIFT_NAME(SettingsBridge)
|
||||||
@interface MWMSettings : NSObject
|
@interface MWMSettings : NSObject
|
||||||
|
|
||||||
|
+ (BOOL)buildings3dViewEnabled;
|
||||||
|
+ (void)setBuildings3dViewEnabled:(BOOL)buildings3dViewEnabled;
|
||||||
|
|
||||||
|
+ (BOOL)perspectiveViewEnabled;
|
||||||
|
+ (void)setPerspectiveViewEnabled:(BOOL)perspectiveViewEnabled;
|
||||||
|
|
||||||
|
+ (BOOL)autoZoomEnabled;
|
||||||
|
+ (void)setAutoZoomEnabled:(BOOL)autoZoomEnabled;
|
||||||
|
|
||||||
+ (BOOL)autoDownloadEnabled;
|
+ (BOOL)autoDownloadEnabled;
|
||||||
+ (void)setAutoDownloadEnabled:(BOOL)autoDownloadEnabled;
|
+ (void)setAutoDownloadEnabled:(BOOL)autoDownloadEnabled;
|
||||||
|
|
||||||
@@ -16,6 +25,9 @@ NS_SWIFT_NAME(Settings)
|
|||||||
+ (MWMTheme)theme;
|
+ (MWMTheme)theme;
|
||||||
+ (void)setTheme:(MWMTheme)theme;
|
+ (void)setTheme:(MWMTheme)theme;
|
||||||
|
|
||||||
|
+ (NSInteger)powerManagement;
|
||||||
|
+ (void)setPowerManagement:(NSInteger)powerManagement;
|
||||||
|
|
||||||
+ (BOOL)routingDisclaimerApproved;
|
+ (BOOL)routingDisclaimerApproved;
|
||||||
+ (void)setRoutingDisclaimerApproved;
|
+ (void)setRoutingDisclaimerApproved;
|
||||||
|
|
||||||
@@ -40,5 +52,6 @@ NS_SWIFT_NAME(Settings)
|
|||||||
+ (void)initializeLogging;
|
+ (void)initializeLogging;
|
||||||
+ (BOOL)isFileLoggingEnabled;
|
+ (BOOL)isFileLoggingEnabled;
|
||||||
+ (void)setFileLoggingEnabled:(BOOL)fileLoggingEnabled;
|
+ (void)setFileLoggingEnabled:(BOOL)fileLoggingEnabled;
|
||||||
|
+ (NSInteger)logFileSize;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -6,6 +6,8 @@
|
|||||||
#include <CoreApi/Framework.h>
|
#include <CoreApi/Framework.h>
|
||||||
#include <CoreApi/Logger.h>
|
#include <CoreApi/Logger.h>
|
||||||
|
|
||||||
|
using namespace power_management;
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
char const * kAutoDownloadEnabledKey = "AutoDownloadEnabled";
|
char const * kAutoDownloadEnabledKey = "AutoDownloadEnabled";
|
||||||
@@ -24,6 +26,57 @@ NSString * const kUDFileLoggingEnabledKey = @"FileLoggingEnabledKey";
|
|||||||
|
|
||||||
@implementation MWMSettings
|
@implementation MWMSettings
|
||||||
|
|
||||||
|
+ (BOOL)buildings3dViewEnabled;
|
||||||
|
{
|
||||||
|
bool _ = true, on = true;
|
||||||
|
GetFramework().Load3dMode(_, on);
|
||||||
|
if (GetFramework().GetPowerManager().GetScheme() == power_management::Scheme::EconomyMaximum) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)setBuildings3dViewEnabled:(BOOL)buildings3dViewEnabled;
|
||||||
|
{
|
||||||
|
auto &f = GetFramework();
|
||||||
|
bool _ = true, is3dBuildings = true;
|
||||||
|
f.Load3dMode(_, is3dBuildings);
|
||||||
|
is3dBuildings = static_cast<bool>(buildings3dViewEnabled);
|
||||||
|
f.Save3dMode(_, is3dBuildings);
|
||||||
|
f.Allow3dMode(_, is3dBuildings);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (BOOL)perspectiveViewEnabled;
|
||||||
|
{
|
||||||
|
bool _ = true, on = true;
|
||||||
|
auto &f = GetFramework();
|
||||||
|
f.Load3dMode(on, _);
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)setPerspectiveViewEnabled:(BOOL)perspectiveViewEnabled;
|
||||||
|
{
|
||||||
|
auto &f = GetFramework();
|
||||||
|
bool is3d = true, _ = true;
|
||||||
|
f.Load3dMode(is3d, _);
|
||||||
|
is3d = static_cast<bool>(perspectiveViewEnabled);
|
||||||
|
f.Save3dMode(is3d, _);
|
||||||
|
f.Allow3dMode(is3d, _);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (BOOL)autoZoomEnabled
|
||||||
|
{
|
||||||
|
return GetFramework().LoadAutoZoom();
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)setAutoZoomEnabled:(BOOL)autoZoomEnabled
|
||||||
|
{
|
||||||
|
auto &f = GetFramework();
|
||||||
|
f.AllowAutoZoom(autoZoomEnabled);
|
||||||
|
f.SaveAutoZoom(autoZoomEnabled);
|
||||||
|
}
|
||||||
|
|
||||||
+ (BOOL)autoDownloadEnabled
|
+ (BOOL)autoDownloadEnabled
|
||||||
{
|
{
|
||||||
bool autoDownloadEnabled = true;
|
bool autoDownloadEnabled = true;
|
||||||
@@ -101,6 +154,29 @@ NSString * const kUDFileLoggingEnabledKey = @"FileLoggingEnabledKey";
|
|||||||
[MWMThemeManager invalidate];
|
[MWMThemeManager invalidate];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ (NSInteger)powerManagement
|
||||||
|
{
|
||||||
|
Scheme scheme = GetFramework().GetPowerManager().GetScheme();
|
||||||
|
if (scheme == Scheme::EconomyMaximum) {
|
||||||
|
return 2;
|
||||||
|
} else if (scheme == Scheme::Auto) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)setPowerManagement:(NSInteger)powerManagement
|
||||||
|
{
|
||||||
|
Scheme scheme = Scheme::Normal;
|
||||||
|
if (powerManagement == 2) {
|
||||||
|
scheme = Scheme::EconomyMaximum;
|
||||||
|
} else if (powerManagement == 1) {
|
||||||
|
scheme = Scheme::Auto;
|
||||||
|
}
|
||||||
|
GetFramework().GetPowerManager().SetScheme(scheme);
|
||||||
|
}
|
||||||
|
|
||||||
+ (BOOL)routingDisclaimerApproved
|
+ (BOOL)routingDisclaimerApproved
|
||||||
{
|
{
|
||||||
bool enabled = false;
|
bool enabled = false;
|
||||||
@@ -185,4 +261,10 @@ NSString * const kUDFileLoggingEnabledKey = @"FileLoggingEnabledKey";
|
|||||||
[Logger setFileLoggingEnabled:fileLoggingEnabled];
|
[Logger setFileLoggingEnabled:fileLoggingEnabled];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ (NSInteger)logFileSize
|
||||||
|
{
|
||||||
|
uint64_t logFileSize = [Logger getLogFileSize];
|
||||||
|
return logFileSize;
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -7,7 +7,12 @@
|
|||||||
+ (void)setTTSEnabled:(BOOL)enabled;
|
+ (void)setTTSEnabled:(BOOL)enabled;
|
||||||
+ (BOOL)isStreetNamesTTSEnabled;
|
+ (BOOL)isStreetNamesTTSEnabled;
|
||||||
+ (void)setStreetNamesTTSEnabled:(BOOL)enabled;
|
+ (void)setStreetNamesTTSEnabled:(BOOL)enabled;
|
||||||
|
+ (NSDictionary<NSString *, NSString *> *)availableLanguages;
|
||||||
|
+ (NSString *)selectedLanguage;
|
||||||
+ (NSString *)savedLanguage;
|
+ (NSString *)savedLanguage;
|
||||||
|
+ (NSInteger)speedCameraMode;
|
||||||
|
+ (void)setSpeedCameraMode:(NSInteger)speedCameraMode;
|
||||||
|
+ (void)playTest;
|
||||||
|
|
||||||
+ (void)addObserver:(id<MWMTextToSpeechObserver>)observer;
|
+ (void)addObserver:(id<MWMTextToSpeechObserver>)observer;
|
||||||
+ (void)removeObserver:(id<MWMTextToSpeechObserver>)observer;
|
+ (void)removeObserver:(id<MWMTextToSpeechObserver>)observer;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#import "MWMRouter.h"
|
#import "MWMRouter.h"
|
||||||
#import "MWMTextToSpeech+CPP.h"
|
#import "MWMTextToSpeech+CPP.h"
|
||||||
#import "SwiftBridge.h"
|
#import "SwiftBridge.h"
|
||||||
|
#import "TTSTester.h"
|
||||||
|
|
||||||
#include "LocaleTranslator.h"
|
#include "LocaleTranslator.h"
|
||||||
|
|
||||||
@@ -10,6 +11,7 @@
|
|||||||
#include "platform/languages.hpp"
|
#include "platform/languages.hpp"
|
||||||
|
|
||||||
using namespace locale_translator;
|
using namespace locale_translator;
|
||||||
|
using namespace routing;
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
@@ -169,10 +171,63 @@ using Observers = NSHashTable<Observer>;
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)active { return [[self class] isTTSEnabled] && [MWMRouter areTurnNotificationsEnabled]; }
|
- (BOOL)active { return [[self class] isTTSEnabled] && [MWMRouter areTurnNotificationsEnabled]; }
|
||||||
|
|
||||||
|
+ (NSDictionary<NSString *, NSString *> *)availableLanguages
|
||||||
|
{
|
||||||
|
NSMutableDictionary<NSString *, NSString *> *availableLanguages = [[NSMutableDictionary alloc] init];
|
||||||
|
auto const & v = [[self tts] availableLanguages];
|
||||||
|
for (auto i: v) {
|
||||||
|
[availableLanguages setObject:@(i.second.c_str()) forKey:@(i.first.c_str())];
|
||||||
|
}
|
||||||
|
return availableLanguages;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (NSString *)selectedLanguage {
|
||||||
|
if ([self savedLanguage] != nil) {
|
||||||
|
return [self savedLanguage];
|
||||||
|
}
|
||||||
|
|
||||||
|
NSString * preferedLanguageBcp47 = [AVSpeechSynthesisVoice currentLanguageCode];
|
||||||
|
|
||||||
|
std::pair<std::string, std::string> const lan =
|
||||||
|
std::make_pair(preferedLanguageBcp47.UTF8String, tts::translateLocale(preferedLanguageBcp47.UTF8String));
|
||||||
|
|
||||||
|
std::vector<std::pair<std::string, std::string>> const availableLanguages = [[self tts] availableLanguages];
|
||||||
|
if (find(availableLanguages.begin(), availableLanguages.end(), lan) !=
|
||||||
|
availableLanguages.end()) {
|
||||||
|
return preferedLanguageBcp47;
|
||||||
|
}
|
||||||
|
|
||||||
|
return kDefaultLanguage;
|
||||||
|
}
|
||||||
|
|
||||||
+ (NSString *)savedLanguage {
|
+ (NSString *)savedLanguage {
|
||||||
return [NSUserDefaults.standardUserDefaults stringForKey:kUserDefaultsTTSLanguageBcp47];
|
return [NSUserDefaults.standardUserDefaults stringForKey:kUserDefaultsTTSLanguageBcp47];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ (NSInteger)speedCameraMode
|
||||||
|
{
|
||||||
|
SpeedCameraManagerMode mode = GetFramework().GetRoutingManager().GetSpeedCamManager().GetMode();
|
||||||
|
if (mode == SpeedCameraManagerMode::Auto) {
|
||||||
|
return 2;
|
||||||
|
} else if (mode == SpeedCameraManagerMode::Always) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)setSpeedCameraMode:(NSInteger)speedCameraMode
|
||||||
|
{
|
||||||
|
SpeedCameraManagerMode mode = SpeedCameraManagerMode::Never;
|
||||||
|
if (speedCameraMode == 2) {
|
||||||
|
mode = SpeedCameraManagerMode::Auto;
|
||||||
|
} else if (speedCameraMode == 1) {
|
||||||
|
mode = SpeedCameraManagerMode::Always;
|
||||||
|
}
|
||||||
|
GetFramework().GetRoutingManager().GetSpeedCamManager().SetMode(mode);
|
||||||
|
}
|
||||||
|
|
||||||
- (void)createVoice:(NSString *)locale {
|
- (void)createVoice:(NSString *)locale {
|
||||||
if (!self.speechSynthesizer) {
|
if (!self.speechSynthesizer) {
|
||||||
self.speechSynthesizer = [[AVSpeechSynthesizer alloc] init];
|
self.speechSynthesizer = [[AVSpeechSynthesizer alloc] init];
|
||||||
@@ -207,6 +262,13 @@ using Observers = NSHashTable<Observer>;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ (void)playTest
|
||||||
|
{
|
||||||
|
TTSTester * ttsTester = [[TTSTester alloc] init];
|
||||||
|
[ttsTester playRandomTestString];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
- (void)speakOneString:(NSString *)textToSpeak {
|
- (void)speakOneString:(NSString *)textToSpeak {
|
||||||
AVSpeechUtterance * utterance = [AVSpeechUtterance speechUtteranceWithString:textToSpeak];
|
AVSpeechUtterance * utterance = [AVSpeechUtterance speechUtteranceWithString:textToSpeak];
|
||||||
utterance.voice = self.speechVoice;
|
utterance.voice = self.speechVoice;
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ final class ThemeManager: NSObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@objc static func invalidate() {
|
@objc static func invalidate() {
|
||||||
instance.update(theme: Settings.theme())
|
instance.update(theme: SettingsBridge.theme())
|
||||||
}
|
}
|
||||||
|
|
||||||
@available(iOS 13.0, *)
|
@available(iOS 13.0, *)
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ extension GlobalStyleSheet: IStyleSheet {
|
|||||||
}
|
}
|
||||||
case .switch:
|
case .switch:
|
||||||
return .add { s in
|
return .add { s in
|
||||||
s.onTintColor = colors.linkBlue
|
s.onTintColor = UIColor.accent
|
||||||
}
|
}
|
||||||
case .pageControl:
|
case .pageControl:
|
||||||
return .add { s in
|
return .add { s in
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import Combine
|
||||||
|
|
||||||
enum VoidResult {
|
enum VoidResult {
|
||||||
case success
|
case success
|
||||||
case failure(Error)
|
case failure(Error)
|
||||||
@@ -37,10 +39,16 @@ final class iCloudSynchronizaionManager: NSObject {
|
|||||||
var onSynchronizationStateDidChangeHandler: ((SynchronizationManagerState) -> Void)?
|
var onSynchronizationStateDidChangeHandler: ((SynchronizationManagerState) -> Void)?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var statePublisher: AnyPublisher<SynchronizationManagerState, Never> {
|
||||||
|
stateSubject.eraseToAnyPublisher()
|
||||||
|
}
|
||||||
|
|
||||||
|
private let stateSubject = PassthroughSubject<SynchronizationManagerState, Never>()
|
||||||
|
|
||||||
let fileManager: FileManager
|
let fileManager: FileManager
|
||||||
private let localDirectoryMonitor: LocalDirectoryMonitor
|
private let localDirectoryMonitor: LocalDirectoryMonitor
|
||||||
private let cloudDirectoryMonitor: CloudDirectoryMonitor
|
private let cloudDirectoryMonitor: CloudDirectoryMonitor
|
||||||
private let settings: Settings.Type
|
private let settings: SettingsBridge.Type
|
||||||
private let bookmarksManager: BookmarksManager
|
private let bookmarksManager: BookmarksManager
|
||||||
private var synchronizationStateManager: SynchronizationStateResolver
|
private var synchronizationStateManager: SynchronizationStateResolver
|
||||||
private var fileWriter: SynchronizationFileWriter?
|
private var fileWriter: SynchronizationFileWriter?
|
||||||
@@ -66,7 +74,7 @@ final class iCloudSynchronizaionManager: NSObject {
|
|||||||
do {
|
do {
|
||||||
let localDirectoryMonitor = try FileSystemDispatchSourceMonitor(fileManager: fileManager, directory: fileManager.bookmarksDirectoryUrl, fileType: fileType)
|
let localDirectoryMonitor = try FileSystemDispatchSourceMonitor(fileManager: fileManager, directory: fileManager.bookmarksDirectoryUrl, fileType: fileType)
|
||||||
let clodStorageManager = iCloudSynchronizaionManager(fileManager: fileManager,
|
let clodStorageManager = iCloudSynchronizaionManager(fileManager: fileManager,
|
||||||
settings: Settings.self,
|
settings: SettingsBridge.self,
|
||||||
bookmarksManager: BookmarksManager.shared(),
|
bookmarksManager: BookmarksManager.shared(),
|
||||||
cloudDirectoryMonitor: cloudDirectoryMonitor,
|
cloudDirectoryMonitor: cloudDirectoryMonitor,
|
||||||
localDirectoryMonitor: localDirectoryMonitor,
|
localDirectoryMonitor: localDirectoryMonitor,
|
||||||
@@ -79,7 +87,7 @@ final class iCloudSynchronizaionManager: NSObject {
|
|||||||
|
|
||||||
// MARK: - Initialization
|
// MARK: - Initialization
|
||||||
init(fileManager: FileManager,
|
init(fileManager: FileManager,
|
||||||
settings: Settings.Type,
|
settings: SettingsBridge.Type,
|
||||||
bookmarksManager: BookmarksManager,
|
bookmarksManager: BookmarksManager,
|
||||||
cloudDirectoryMonitor: CloudDirectoryMonitor,
|
cloudDirectoryMonitor: CloudDirectoryMonitor,
|
||||||
localDirectoryMonitor: LocalDirectoryMonitor,
|
localDirectoryMonitor: LocalDirectoryMonitor,
|
||||||
@@ -307,10 +315,16 @@ extension iCloudSynchronizaionManager {
|
|||||||
observers.removeValue(forKey: id)
|
observers.removeValue(forKey: id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func notifyObservers() {
|
||||||
|
notifyObserversOnSynchronizationError(synchronizationError)
|
||||||
|
}
|
||||||
|
|
||||||
private func notifyObserversOnSynchronizationError(_ error: Error?) {
|
private func notifyObserversOnSynchronizationError(_ error: Error?) {
|
||||||
let state = SynchronizationManagerState(isAvailable: cloudDirectoryMonitor.isCloudAvailable(),
|
let state = SynchronizationManagerState(isAvailable: cloudDirectoryMonitor.isCloudAvailable(),
|
||||||
isOn: settings.iCLoudSynchronizationEnabled(),
|
isOn: settings.iCLoudSynchronizationEnabled(),
|
||||||
error: error as? NSError)
|
error: error as? NSError)
|
||||||
|
stateSubject.send(state)
|
||||||
|
|
||||||
observers.removeUnreachable().forEach { _, observable in
|
observers.removeUnreachable().forEach { _, observable in
|
||||||
DispatchQueue.main.async {
|
DispatchQueue.main.async {
|
||||||
observable.onSynchronizationStateDidChangeHandler?(state)
|
observable.onSynchronizationStateDidChangeHandler?(state)
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"colors" : [
|
||||||
|
{
|
||||||
|
"color" : {
|
||||||
|
"color-space" : "srgb",
|
||||||
|
"components" : {
|
||||||
|
"alpha" : "1.000",
|
||||||
|
"blue" : "0.788",
|
||||||
|
"green" : "0.875",
|
||||||
|
"red" : "0.784"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"idiom" : "universal"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D-geboue is gedeaktiveer in batterybesparingsmodus";
|
"pref_map_3d_buildings_disabled_summary" = "3D-geboue is gedeaktiveer in batterybesparingsmodus";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Steminstruksies";
|
"pref_tts_title" = "Steminstruksies";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Announce Street Names";
|
"pref_tts_street_names_title" = "Announce Street Names";
|
||||||
@@ -1003,6 +1006,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Wil jy 'n foutverslag aan die ontwikkelaars stuur?\nOns maak staat op ons gebruikers aangesien CoMaps nie outomaties enige foutinligting insamel nie. By voorbaat dankie vir die ondersteuning van CoMaps!";
|
"bugreport_alert_message" = "Wil jy 'n foutverslag aan die ontwikkelaars stuur?\nOns maak staat op ons gebruikers aangesien CoMaps nie outomaties enige foutinligting insamel nie. By voorbaat dankie vir die ondersteuning van CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Aktiveer iCloud-sinchronisasie";
|
"enable_icloud_synchronization_title" = "Aktiveer iCloud-sinchronisasie";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "يتم إيقاف تشغيل المباني ثلاثية الأبعاد في وضع توفير الطاقة";
|
"pref_map_3d_buildings_disabled_summary" = "يتم إيقاف تشغيل المباني ثلاثية الأبعاد في وضع توفير الطاقة";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "تعليمات صوتية";
|
"pref_tts_title" = "تعليمات صوتية";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "أعلن أسماء الشوارع";
|
"pref_tts_street_names_title" = "أعلن أسماء الشوارع";
|
||||||
@@ -1003,6 +1006,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "هل ترغب في إرسال تقرير عن الأخطاء إلى المطورين؟\nنحن نعتمد على مستخدمينا لأن تطبيق CoMaps لا يجمع أي معلومات عن الأخطاء تلقائيًا. شكرًا لك مقدمًا على دعم CoMaps!";
|
"bugreport_alert_message" = "هل ترغب في إرسال تقرير عن الأخطاء إلى المطورين؟\nنحن نعتمد على مستخدمينا لأن تطبيق CoMaps لا يجمع أي معلومات عن الأخطاء تلقائيًا. شكرًا لك مقدمًا على دعم CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "تمكين مزامنة iCloud";
|
"enable_icloud_synchronization_title" = "تمكين مزامنة iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D binalar enerjiyə qənaət rejimində söndürülür";
|
"pref_map_3d_buildings_disabled_summary" = "3D binalar enerjiyə qənaət rejimində söndürülür";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Səsli təlimatlar";
|
"pref_tts_title" = "Səsli təlimatlar";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Küçə adlarını elan edin";
|
"pref_tts_street_names_title" = "Küçə adlarını elan edin";
|
||||||
@@ -980,6 +983,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Tərtibatçılara səhv hesabatı göndərmək istərdinizmi?\nCoMaps heç bir səhv məlumatını avtomatik toplamadığından istifadəçilərimizə etibar edirik. CoMaps dəstəklədiyiniz üçün əvvəlcədən təşəkkür edirik!";
|
"bugreport_alert_message" = "Tərtibatçılara səhv hesabatı göndərmək istərdinizmi?\nCoMaps heç bir səhv məlumatını avtomatik toplamadığından istifadəçilərimizə etibar edirik. CoMaps dəstəklədiyiniz üçün əvvəlcədən təşəkkür edirik!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "iCloud Sinxronizasiyasını aktivləşdirin";
|
"enable_icloud_synchronization_title" = "iCloud Sinxronizasiyasını aktivləşdirin";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "У рэжыме энергазберажэння 3D-будынкі адключаны";
|
"pref_map_3d_buildings_disabled_summary" = "У рэжыме энергазберажэння 3D-будынкі адключаны";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Галасавыя інструкцыі";
|
"pref_tts_title" = "Галасавыя інструкцыі";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Абвяшчаць назвы вуліц";
|
"pref_tts_street_names_title" = "Абвяшчаць назвы вуліц";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Хочаце адправіць справаздачу пра памылку распрацоўшчыкам?\nМы разлічваем на нашых карыстальнікаў, бо CoMaps не збірае ніякай інфармацыі пра памылкі аўтаматычна. Загадзя дзякуем за падтрымку CoMaps!";
|
"bugreport_alert_message" = "Хочаце адправіць справаздачу пра памылку распрацоўшчыкам?\nМы разлічваем на нашых карыстальнікаў, бо CoMaps не збірае ніякай інфармацыі пра памылкі аўтаматычна. Загадзя дзякуем за падтрымку CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Уключыць сінхранізацыю з iCloud";
|
"enable_icloud_synchronization_title" = "Уключыць сінхранізацыю з iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D сградите са изключени в режим на пестене на енергия";
|
"pref_map_3d_buildings_disabled_summary" = "3D сградите са изключени в режим на пестене на енергия";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Гласови инструкции";
|
"pref_tts_title" = "Гласови инструкции";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Обявете имена на улици";
|
"pref_tts_street_names_title" = "Обявете имена на улици";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Искате ли да изпратите доклад за грешка на разработчиците?\nРазчитаме на нашите потребители, тъй като CoMaps не събира информация за грешки автоматично. Благодарим ви предварително, че подкрепяте CoMaps!";
|
"bugreport_alert_message" = "Искате ли да изпратите доклад за грешка на разработчиците?\nРазчитаме на нашите потребители, тъй като CoMaps не събира информация за грешки автоматично. Благодарим ви предварително, че подкрепяте CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Активиране на синхронизацията с iCloud";
|
"enable_icloud_synchronization_title" = "Активиране на синхронизацията с iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "Els edificis en 3D es desactiven en mode d'estalvi d'energia";
|
"pref_map_3d_buildings_disabled_summary" = "Els edificis en 3D es desactiven en mode d'estalvi d'energia";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Instruccions de veu";
|
"pref_tts_title" = "Instruccions de veu";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Anuncia els noms dels carrers";
|
"pref_tts_street_names_title" = "Anuncia els noms dels carrers";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Voleu enviar un informe d’error als desenvolupadors?\nEns refiem dels nostres usuaris, ja que l’CoMaps no recull cap informació d’errors automàticament. Gràcies per avançat per donar suport a CoMaps!";
|
"bugreport_alert_message" = "Voleu enviar un informe d’error als desenvolupadors?\nEns refiem dels nostres usuaris, ja que l’CoMaps no recull cap informació d’errors automàticament. Gràcies per avançat per donar suport a CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Activa la sincronització amb l’iCloud";
|
"enable_icloud_synchronization_title" = "Activa la sincronització amb l’iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D budovy jsou vypnuty v úsporném režimu";
|
"pref_map_3d_buildings_disabled_summary" = "3D budovy jsou vypnuty v úsporném režimu";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Hlasové instrukce";
|
"pref_tts_title" = "Hlasové instrukce";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Oznamovat názvy ulic";
|
"pref_tts_street_names_title" = "Oznamovat názvy ulic";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Chcete poslat vývojářům hlášení o chybě?\nSpoléháme na naše uživatele, protože společnost CoMaps neshromažďuje žádné informace o chybách automaticky. Předem vám děkujeme za podporu CoMaps!";
|
"bugreport_alert_message" = "Chcete poslat vývojářům hlášení o chybě?\nSpoléháme na naše uživatele, protože společnost CoMaps neshromažďuje žádné informace o chybách automaticky. Předem vám děkujeme za podporu CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Povolení synchronizace s iCloudem";
|
"enable_icloud_synchronization_title" = "Povolení synchronizace s iCloudem";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D-bygninger er deaktiveret i strømbesparende tilstand";
|
"pref_map_3d_buildings_disabled_summary" = "3D-bygninger er deaktiveret i strømbesparende tilstand";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Stemmeinstruktioner";
|
"pref_tts_title" = "Stemmeinstruktioner";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Annoncer gadenavne";
|
"pref_tts_street_names_title" = "Annoncer gadenavne";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Vil du gerne sende en fejlrapport til udviklerne?\nVi er afhængige af vores brugere, da CoMaps ikke indsamler nogen fejloplysninger automatisk. Tak på forhånd for at støtte CoMaps!";
|
"bugreport_alert_message" = "Vil du gerne sende en fejlrapport til udviklerne?\nVi er afhængige af vores brugere, da CoMaps ikke indsamler nogen fejloplysninger automatisk. Tak på forhånd for at støtte CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Aktivér iCloud-synkronisering";
|
"enable_icloud_synchronization_title" = "Aktivér iCloud-synkronisering";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D-Gebäude werden im Energiesparmodus ausgeschaltet";
|
"pref_map_3d_buildings_disabled_summary" = "3D-Gebäude werden im Energiesparmodus ausgeschaltet";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Sprachführung";
|
"pref_tts_title" = "Sprachführung";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Straßennamen ankündigen";
|
"pref_tts_street_names_title" = "Straßennamen ankündigen";
|
||||||
@@ -1006,6 +1009,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Willst du einen Fehlerbericht an die Entwickler schicken?\nWir sind auf unsere Nutzer angewiesen, da CoMaps keine Fehlerinformationen automatisch sammelt. Wir danken dir im Voraus für deine Unterstützung von CoMaps!";
|
"bugreport_alert_message" = "Willst du einen Fehlerbericht an die Entwickler schicken?\nWir sind auf unsere Nutzer angewiesen, da CoMaps keine Fehlerinformationen automatisch sammelt. Wir danken dir im Voraus für deine Unterstützung von CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Aktiviere die iCloud-Synchronisierung";
|
"enable_icloud_synchronization_title" = "Aktiviere die iCloud-Synchronisierung";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "Τα τρισδιάστατα κτίρια είναι απενεργοποιημένα σε λειτουργία εξοικονόμησης ενέργειας";
|
"pref_map_3d_buildings_disabled_summary" = "Τα τρισδιάστατα κτίρια είναι απενεργοποιημένα σε λειτουργία εξοικονόμησης ενέργειας";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Φωνητικές οδηγίες";
|
"pref_tts_title" = "Φωνητικές οδηγίες";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Ανακοινώστε ονόματα οδών";
|
"pref_tts_street_names_title" = "Ανακοινώστε ονόματα οδών";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Θα θέλατε να στείλετε μια αναφορά σφάλματος στους προγραμματιστές;\nΒασιζόμαστε στους χρήστες μας, καθώς οι CoMaps δεν συλλέγουν αυτόματα καμία πληροφορία σφάλματος. Σας ευχαριστούμε εκ των προτέρων για την υποστήριξη των CoMaps!";
|
"bugreport_alert_message" = "Θα θέλατε να στείλετε μια αναφορά σφάλματος στους προγραμματιστές;\nΒασιζόμαστε στους χρήστες μας, καθώς οι CoMaps δεν συλλέγουν αυτόματα καμία πληροφορία σφάλματος. Σας ευχαριστούμε εκ των προτέρων για την υποστήριξη των CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Ενεργοποίηση συγχρονισμού iCloud";
|
"enable_icloud_synchronization_title" = "Ενεργοποίηση συγχρονισμού iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -228,8 +228,11 @@
|
|||||||
/* A message in Settings/Preferences explaining why is it not possible to enable 3D buildings when max power saving mode is enabled */
|
/* A message in Settings/Preferences explaining why is it not possible to enable 3D buildings when max power saving mode is enabled */
|
||||||
"pref_map_3d_buildings_disabled_summary" = "3D buildings are disabled in power saving mode";
|
"pref_map_3d_buildings_disabled_summary" = "3D buildings are disabled in power saving mode";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts» title */
|
||||||
"pref_tts_enable_title" = "Voice Instructions";
|
"pref_tts_title" = "Voice Instructions";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Announce Street Names";
|
"pref_tts_street_names_title" = "Announce Street Names";
|
||||||
@@ -1006,6 +1009,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Would you like to send a bug report to the developers?\nWe rely on our users as CoMaps doesn't collect any error information automatically. Thank you in advance for supporting CoMaps!";
|
"bugreport_alert_message" = "Would you like to send a bug report to the developers?\nWe rely on our users as CoMaps doesn't collect any error information automatically. Thank you in advance for supporting CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Enable iCloud Syncronization";
|
"enable_icloud_synchronization_title" = "Enable iCloud Syncronization";
|
||||||
|
|
||||||
|
|||||||
@@ -241,7 +241,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D buildings are disabled in power saving mode";
|
"pref_map_3d_buildings_disabled_summary" = "3D buildings are disabled in power saving mode";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Voice Instructions";
|
"pref_tts_title" = "Voice Instructions";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Announce Street Names";
|
"pref_tts_street_names_title" = "Announce Street Names";
|
||||||
@@ -1030,6 +1033,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Would you like to send a bug report to the developers?\nWe rely on our users as CoMaps doesn't collect any error information automatically. Thank you in advance for supporting CoMaps!";
|
"bugreport_alert_message" = "Would you like to send a bug report to the developers?\nWe rely on our users as CoMaps doesn't collect any error information automatically. Thank you in advance for supporting CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Enable iCloud Syncronization";
|
"enable_icloud_synchronization_title" = "Enable iCloud Syncronization";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "Los edificios 3D se apagan en el modo de ahorro de energía";
|
"pref_map_3d_buildings_disabled_summary" = "Los edificios 3D se apagan en el modo de ahorro de energía";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Instrucciones de voz";
|
"pref_tts_title" = "Instrucciones de voz";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Anunciar nombres de calles";
|
"pref_tts_street_names_title" = "Anunciar nombres de calles";
|
||||||
@@ -1003,6 +1006,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "¿Quiere enviar un informe de error a los desarrolladores?\nDependemos de nuestros usuarios, ya que CoMaps no recoge ninguna información sobre errores de forma automática. ¡Gracias de antemano por apoyar a CoMaps!";
|
"bugreport_alert_message" = "¿Quiere enviar un informe de error a los desarrolladores?\nDependemos de nuestros usuarios, ya que CoMaps no recoge ninguna información sobre errores de forma automática. ¡Gracias de antemano por apoyar a CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Activar la sincronización con iCloud";
|
"enable_icloud_synchronization_title" = "Activar la sincronización con iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "Los edificios 3D se desactivan en el modo de ahorro de energía";
|
"pref_map_3d_buildings_disabled_summary" = "Los edificios 3D se desactivan en el modo de ahorro de energía";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Instrucciones de voz";
|
"pref_tts_title" = "Instrucciones de voz";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Anunciar nombres de calles";
|
"pref_tts_street_names_title" = "Anunciar nombres de calles";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "¿Quiere enviar un informe de error a los desarrolladores?\nDependemos de nuestros usuarios, ya que CoMaps no recoge ninguna información sobre errores de forma automática. ¡Gracias de antemano por apoyar a CoMaps!";
|
"bugreport_alert_message" = "¿Quiere enviar un informe de error a los desarrolladores?\nDependemos de nuestros usuarios, ya que CoMaps no recoge ninguna información sobre errores de forma automática. ¡Gracias de antemano por apoyar a CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Activar la sincronización con iCloud";
|
"enable_icloud_synchronization_title" = "Activar la sincronización con iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D-vaated lülitatakse energiasäästurežiimis välja";
|
"pref_map_3d_buildings_disabled_summary" = "3D-vaated lülitatakse energiasäästurežiimis välja";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Hääljuhised";
|
"pref_tts_title" = "Hääljuhised";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Teata tänavanimesid";
|
"pref_tts_street_names_title" = "Teata tänavanimesid";
|
||||||
@@ -1005,6 +1008,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Kas soovid saata arendajatele veateate?\nMe toetume oma kasutajatele, kuna CoMaps ei kogu automaatselt mingit veateavet. Täname sind juba ette CoMapsi toetamise eest!";
|
"bugreport_alert_message" = "Kas soovid saata arendajatele veateate?\nMe toetume oma kasutajatele, kuna CoMaps ei kogu automaatselt mingit veateavet. Täname sind juba ette CoMapsi toetamise eest!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Luba iCloudi sünkroniseerimine";
|
"enable_icloud_synchronization_title" = "Luba iCloudi sünkroniseerimine";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D eraikinak desgaituta daude energia aurrezteko moduan";
|
"pref_map_3d_buildings_disabled_summary" = "3D eraikinak desgaituta daude energia aurrezteko moduan";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Ahots argibideak";
|
"pref_tts_title" = "Ahots argibideak";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Kaleen izenak iragarri";
|
"pref_tts_street_names_title" = "Kaleen izenak iragarri";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Akatsen txostena bidali nahi diezu garatzaileei?\nGure erabiltzaileengan oinarritzen gara CoMaps-ek ez baitu automatikoki akatsen informaziorik biltzen. Eskerrik asko aldez aurretik CoMaps laguntzeagatik!";
|
"bugreport_alert_message" = "Akatsen txostena bidali nahi diezu garatzaileei?\nGure erabiltzaileengan oinarritzen gara CoMaps-ek ez baitu automatikoki akatsen informaziorik biltzen. Eskerrik asko aldez aurretik CoMaps laguntzeagatik!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Gaitu iCloud sinkronizazioa";
|
"enable_icloud_synchronization_title" = "Gaitu iCloud sinkronizazioa";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "ساختمان های سه بعدی در حالت صرفه جویی در مصرف برق خاموش می شوند";
|
"pref_map_3d_buildings_disabled_summary" = "ساختمان های سه بعدی در حالت صرفه جویی در مصرف برق خاموش می شوند";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "دستور العمل صوتی";
|
"pref_tts_title" = "دستور العمل صوتی";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "نام خیابان ها را اعلام کنید";
|
"pref_tts_street_names_title" = "نام خیابان ها را اعلام کنید";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "آیا می خواهید یک گزارش اشکال برای توسعه دهندگان ارسال کنید؟\nما به کاربران خود تکیه می کنیم زیرا CoMaps هیچ گونه اطلاعات خطا را به طور خودکار جمع آوری نمی کند. پیشاپیش از شما برای حمایت از CoMaps سپاسگزاریم!";
|
"bugreport_alert_message" = "آیا می خواهید یک گزارش اشکال برای توسعه دهندگان ارسال کنید؟\nما به کاربران خود تکیه می کنیم زیرا CoMaps هیچ گونه اطلاعات خطا را به طور خودکار جمع آوری نمی کند. پیشاپیش از شما برای حمایت از CoMaps سپاسگزاریم!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "همگام سازی iCloud را فعال کنید";
|
"enable_icloud_synchronization_title" = "همگام سازی iCloud را فعال کنید";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D-rakennukset ovat poissa päältä virransäästötilassa";
|
"pref_map_3d_buildings_disabled_summary" = "3D-rakennukset ovat poissa päältä virransäästötilassa";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Ääniohjeistukset";
|
"pref_tts_title" = "Ääniohjeistukset";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Ilmoita kadunnimet";
|
"pref_tts_street_names_title" = "Ilmoita kadunnimet";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Haluatko lähettää vikailmoituksen kehittäjille?\nLuotamme käyttäjiin, sillä CoMaps ei kerää virhetietoja automaattisesti. Kiitos etukäteen CoMapsin tukemisesta!";
|
"bugreport_alert_message" = "Haluatko lähettää vikailmoituksen kehittäjille?\nLuotamme käyttäjiin, sillä CoMaps ei kerää virhetietoja automaattisesti. Kiitos etukäteen CoMapsin tukemisesta!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Ota iCloud-synkronointi käyttöön";
|
"enable_icloud_synchronization_title" = "Ota iCloud-synkronointi käyttöön";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "Les bâtiments 3D sont désactivés en mode d'économie d'énergie";
|
"pref_map_3d_buildings_disabled_summary" = "Les bâtiments 3D sont désactivés en mode d'économie d'énergie";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Instructions vocales";
|
"pref_tts_title" = "Instructions vocales";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Annoncer les noms de rue";
|
"pref_tts_street_names_title" = "Annoncer les noms de rue";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Veux-tu envoyer un rapport de bogue aux développeurs ?\nNous comptons sur nos utilisateurs, car CoMaps ne recueille pas automatiquement d'informations sur les erreurs. Merci d'avance de soutenir CoMaps !";
|
"bugreport_alert_message" = "Veux-tu envoyer un rapport de bogue aux développeurs ?\nNous comptons sur nos utilisateurs, car CoMaps ne recueille pas automatiquement d'informations sur les erreurs. Merci d'avance de soutenir CoMaps !";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Activer la synchronisation iCloud";
|
"enable_icloud_synchronization_title" = "Activer la synchronisation iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "הגדרת מבנים בתלת מימד מבוטלת במצב חיסכון בחשמל";
|
"pref_map_3d_buildings_disabled_summary" = "הגדרת מבנים בתלת מימד מבוטלת במצב חיסכון בחשמל";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "הנחיות קוליות";
|
"pref_tts_title" = "הנחיות קוליות";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "הכריזו על שמות רחובות";
|
"pref_tts_street_names_title" = "הכריזו על שמות רחובות";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "האם תרצה לשלוח דוח באג למפתחים?\nאנו סומכים על המשתמשים שלנו מכיוון ש-CoMaps לא אוספות כל מידע על שגיאות באופן אוטומטי. תודה מראש על התמיכה ב-CoMaps!";
|
"bugreport_alert_message" = "האם תרצה לשלוח דוח באג למפתחים?\nאנו סומכים על המשתמשים שלנו מכיוון ש-CoMaps לא אוספות כל מידע על שגיאות באופן אוטומטי. תודה מראש על התמיכה ב-CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "הפעל סנכרון iCloud";
|
"enable_icloud_synchronization_title" = "הפעל סנכרון iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3डी इमारतें बिजली बचत मोड में अक्षम हैं";
|
"pref_map_3d_buildings_disabled_summary" = "3डी इमारतें बिजली बचत मोड में अक्षम हैं";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "ध्वनि निर्देश";
|
"pref_tts_title" = "ध्वनि निर्देश";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "सड़कों के नाम की घोषणा करें";
|
"pref_tts_street_names_title" = "सड़कों के नाम की घोषणा करें";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "क्या आप डेवलपर्स को बग रिपोर्ट भेजना चाहेंगे?\nहम अपने उपयोगकर्ताओं पर भरोसा करते हैं क्योंकि CoMaps स्वचालित रूप से कोई त्रुटि जानकारी एकत्र नहीं करता है। CoMaps का समर्थन करने के लिए अग्रिम धन्यवाद!";
|
"bugreport_alert_message" = "क्या आप डेवलपर्स को बग रिपोर्ट भेजना चाहेंगे?\nहम अपने उपयोगकर्ताओं पर भरोसा करते हैं क्योंकि CoMaps स्वचालित रूप से कोई त्रुटि जानकारी एकत्र नहीं करता है। CoMaps का समर्थन करने के लिए अग्रिम धन्यवाद!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "iCloud सिंक्रोनाइज़ेशन सक्षम करें";
|
"enable_icloud_synchronization_title" = "iCloud सिंक्रोनाइज़ेशन सक्षम करें";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "A 3D-s épületek energiatakarékos módban ki vannak kapcsolva";
|
"pref_map_3d_buildings_disabled_summary" = "A 3D-s épületek energiatakarékos módban ki vannak kapcsolva";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Hangutasítások";
|
"pref_tts_title" = "Hangutasítások";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Utcanevek felolvasása";
|
"pref_tts_street_names_title" = "Utcanevek felolvasása";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Szeretne hibajelentést küldeni a fejlesztőknek?\nA felhasználóinkra támaszkodunk, mivel az CoMaps nem gyűjt automatikusan hibainformációkat. Előre is köszönjük, hogy támogatja az CoMaps csapatát!";
|
"bugreport_alert_message" = "Szeretne hibajelentést küldeni a fejlesztőknek?\nA felhasználóinkra támaszkodunk, mivel az CoMaps nem gyűjt automatikusan hibainformációkat. Előre is köszönjük, hogy támogatja az CoMaps csapatát!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "iCloud-szinkronizálás engedélyezése";
|
"enable_icloud_synchronization_title" = "iCloud-szinkronizálás engedélyezése";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "Bangunan 3D dimatikan dalam mode hemat daya";
|
"pref_map_3d_buildings_disabled_summary" = "Bangunan 3D dimatikan dalam mode hemat daya";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Petunjuk Suara";
|
"pref_tts_title" = "Petunjuk Suara";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Umumkan Nama Jalan";
|
"pref_tts_street_names_title" = "Umumkan Nama Jalan";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Apakah Anda ingin mengirim laporan bug ke pengembang?\nKami mengandalkan pengguna kami karena CoMaps tidak mengumpulkan informasi kesalahan secara otomatis. Terima kasih sebelumnya karena telah mendukung CoMaps!";
|
"bugreport_alert_message" = "Apakah Anda ingin mengirim laporan bug ke pengembang?\nKami mengandalkan pengguna kami karena CoMaps tidak mengumpulkan informasi kesalahan secara otomatis. Terima kasih sebelumnya karena telah mendukung CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Mengaktifkan Sinkronisasi iCloud";
|
"enable_icloud_synchronization_title" = "Mengaktifkan Sinkronisasi iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "Gli edifici 3D sono disattivati in modalità risparmio energetico";
|
"pref_map_3d_buildings_disabled_summary" = "Gli edifici 3D sono disattivati in modalità risparmio energetico";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Istruzioni vocali";
|
"pref_tts_title" = "Istruzioni vocali";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Annunciare i nomi delle strade";
|
"pref_tts_street_names_title" = "Annunciare i nomi delle strade";
|
||||||
@@ -997,6 +1000,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Vuoi inviare una segnalazione di bug agli sviluppatori?\nCi affidiamo ai nostri utenti perché CoMaps non raccoglie automaticamente informazioni sugli errori. Ti ringraziamo in anticipo per il supporto a CoMaps!";
|
"bugreport_alert_message" = "Vuoi inviare una segnalazione di bug agli sviluppatori?\nCi affidiamo ai nostri utenti perché CoMaps non raccoglie automaticamente informazioni sugli errori. Ti ringraziamo in anticipo per il supporto a CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Abilita la sincronizzazione con iCloud";
|
"enable_icloud_synchronization_title" = "Abilita la sincronizzazione con iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "省電力モードで建物の 3D 表示がオフになっている";
|
"pref_map_3d_buildings_disabled_summary" = "省電力モードで建物の 3D 表示がオフになっている";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "音声指示";
|
"pref_tts_title" = "音声指示";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "通りの名前を発表";
|
"pref_tts_street_names_title" = "通りの名前を発表";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "開発者にバグレポートを送りたいか?\nCoMapsはエラー情報を自動収集しないため、我々はユーザーに依存している。CoMapsを応援してくださりありがとう!";
|
"bugreport_alert_message" = "開発者にバグレポートを送りたいか?\nCoMapsはエラー情報を自動収集しないため、我々はユーザーに依存している。CoMapsを応援してくださりありがとう!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "iCloud同期を有効にする";
|
"enable_icloud_synchronization_title" = "iCloud同期を有効にする";
|
||||||
|
|
||||||
|
|||||||
@@ -228,7 +228,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D 빌딩은 절전 모드에서 꺼집니다";
|
"pref_map_3d_buildings_disabled_summary" = "3D 빌딩은 절전 모드에서 꺼집니다";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "음성 지침";
|
"pref_tts_title" = "음성 지침";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "\"거리 이름 발표\"";
|
"pref_tts_street_names_title" = "\"거리 이름 발표\"";
|
||||||
@@ -1003,6 +1006,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "개발자에게 버그 리포트를 보내시겠습니까?\nCoMaps은 오류 정보를 자동으로 수집하지 않으므로 사용자의 도움을 받아야 합니다. CoMaps을 이용해 주셔서 미리 감사드립니다!";
|
"bugreport_alert_message" = "개발자에게 버그 리포트를 보내시겠습니까?\nCoMaps은 오류 정보를 자동으로 수집하지 않으므로 사용자의 도움을 받아야 합니다. CoMaps을 이용해 주셔서 미리 감사드립니다!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "iCloud 동기화 활성화";
|
"enable_icloud_synchronization_title" = "iCloud 동기화 활성화";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "Trimačiai pastatai yra išjungti energijos taupymo veiksenoje";
|
"pref_map_3d_buildings_disabled_summary" = "Trimačiai pastatai yra išjungti energijos taupymo veiksenoje";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Balso instrukcijos";
|
"pref_tts_title" = "Balso instrukcijos";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Sakyti gatvių pavadinimus";
|
"pref_tts_street_names_title" = "Sakyti gatvių pavadinimus";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Ar norite išsiųsti pranešimą apie klaidą programos kūrėjams?\nTokių pranešimų mes tikimės iš savo naudotojų, nes „CoMaps“ nerenka jokios informacijos apie klaidas automatiškai. Iš anksto dėkojame, kad prisidedate prie „CoMaps“ tobulinimo!";
|
"bugreport_alert_message" = "Ar norite išsiųsti pranešimą apie klaidą programos kūrėjams?\nTokių pranešimų mes tikimės iš savo naudotojų, nes „CoMaps“ nerenka jokios informacijos apie klaidas automatiškai. Iš anksto dėkojame, kad prisidedate prie „CoMaps“ tobulinimo!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "„iCloud“ sinchronizavimo įjungimas";
|
"enable_icloud_synchronization_title" = "„iCloud“ sinchronizavimo įjungimas";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "Energotaupības režīmā 3D ēkas ir izslēgtas";
|
"pref_map_3d_buildings_disabled_summary" = "Energotaupības režīmā 3D ēkas ir izslēgtas";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Balss instrukcijas";
|
"pref_tts_title" = "Balss instrukcijas";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Izrunāt ielu nosaukumus";
|
"pref_tts_street_names_title" = "Izrunāt ielu nosaukumus";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Vai vēlaties izstrādātājiem nosūtīt ziņojumu par kļūdu?\nMēs paļaujamies uz šiem ziņojumiem, jo „CoMaps“ automātiski nevāc nekādus datus par kļūdām. Jau iepriekš pateicamies par „CoMaps“ atbalstīšanu!";
|
"bugreport_alert_message" = "Vai vēlaties izstrādātājiem nosūtīt ziņojumu par kļūdu?\nMēs paļaujamies uz šiem ziņojumiem, jo „CoMaps“ automātiski nevāc nekādus datus par kļūdām. Jau iepriekš pateicamies par „CoMaps“ atbalstīšanu!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Ieslēgta „iCloud“ sinhronizācija";
|
"enable_icloud_synchronization_title" = "Ieslēgta „iCloud“ sinhronizācija";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D इमारती वीज बचत मोडमध्ये बंद केल्या आहेत";
|
"pref_map_3d_buildings_disabled_summary" = "3D इमारती वीज बचत मोडमध्ये बंद केल्या आहेत";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "ध्वनी सूचना";
|
"pref_tts_title" = "ध्वनी सूचना";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "मार्गांची नावे घोषित करा";
|
"pref_tts_street_names_title" = "मार्गांची नावे घोषित करा";
|
||||||
@@ -1001,6 +1004,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "तुम्ही विकासकांना बग अहवाल पाठवू इच्छिता?\nआम्ही आमच्या वापरकर्त्यांवर अवलंबून आहोत कारण CoMaps कोणतीही त्रुटी माहिती स्वयंचलितपणे संकलित करत नाही. CoMaps ला समर्थन दिल्याबद्दल आगाऊ धन्यवाद!";
|
"bugreport_alert_message" = "तुम्ही विकासकांना बग अहवाल पाठवू इच्छिता?\nआम्ही आमच्या वापरकर्त्यांवर अवलंबून आहोत कारण CoMaps कोणतीही त्रुटी माहिती स्वयंचलितपणे संकलित करत नाही. CoMaps ला समर्थन दिल्याबद्दल आगाऊ धन्यवाद!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "iCloud सिंक्रोनाइझेशन सक्षम करा";
|
"enable_icloud_synchronization_title" = "iCloud सिंक्रोनाइझेशन सक्षम करा";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "Il-binjiet 3D huma mitfigħin fil-mod tal-iffrankar tal-enerġija";
|
"pref_map_3d_buildings_disabled_summary" = "Il-binjiet 3D huma mitfigħin fil-mod tal-iffrankar tal-enerġija";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Istruzzjonijiet tal-vuċi";
|
"pref_tts_title" = "Istruzzjonijiet tal-vuċi";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Ħabbar l-ismijiet tat-toroq";
|
"pref_tts_street_names_title" = "Ħabbar l-ismijiet tat-toroq";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Would you like to send a bug report to the developers?\nWe rely on our users as CoMaps doesn't collect any error information automatically. Thank you in advance for supporting CoMaps!";
|
"bugreport_alert_message" = "Would you like to send a bug report to the developers?\nWe rely on our users as CoMaps doesn't collect any error information automatically. Thank you in advance for supporting CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Enable iCloud Syncronization";
|
"enable_icloud_synchronization_title" = "Enable iCloud Syncronization";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D-bygninger er slått av i strømsparingsmodus";
|
"pref_map_3d_buildings_disabled_summary" = "3D-bygninger er slått av i strømsparingsmodus";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Taleinstrukser";
|
"pref_tts_title" = "Taleinstrukser";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Kunngjør gatenavn";
|
"pref_tts_street_names_title" = "Kunngjør gatenavn";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Vil du sende en feilrapport til utviklerne?\nVi er avhengige av brukerne våre, da CoMaps ikke samler inn noen feilinformasjon automatisk. Takk på forhånd for at du støtter CoMaps!";
|
"bugreport_alert_message" = "Vil du sende en feilrapport til utviklerne?\nVi er avhengige av brukerne våre, da CoMaps ikke samler inn noen feilinformasjon automatisk. Takk på forhånd for at du støtter CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Aktiver iCloud-synkronisering";
|
"enable_icloud_synchronization_title" = "Aktiver iCloud-synkronisering";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D-gebouwen worden uitgeschakeld in de energiebesparende modus";
|
"pref_map_3d_buildings_disabled_summary" = "3D-gebouwen worden uitgeschakeld in de energiebesparende modus";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Gesproken instructies";
|
"pref_tts_title" = "Gesproken instructies";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Straatnamen aankondigen";
|
"pref_tts_street_names_title" = "Straatnamen aankondigen";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Wil je een bugrapport naar de ontwikkelaars sturen?\nWe vertrouwen op onze gebruikers, want CoMaps verzamelt geen foutinformatie automatisch. Alvast bedankt voor je steun aan CoMaps!";
|
"bugreport_alert_message" = "Wil je een bugrapport naar de ontwikkelaars sturen?\nWe vertrouwen op onze gebruikers, want CoMaps verzamelt geen foutinformatie automatisch. Alvast bedankt voor je steun aan CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Schakel iCloud-synchronisatie in";
|
"enable_icloud_synchronization_title" = "Schakel iCloud-synchronisatie in";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "Budynki 3D są wyłączone w trybie oszczędzania energii";
|
"pref_map_3d_buildings_disabled_summary" = "Budynki 3D są wyłączone w trybie oszczędzania energii";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Komunikaty głosowe";
|
"pref_tts_title" = "Komunikaty głosowe";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Wymawiaj nazwy ulic";
|
"pref_tts_street_names_title" = "Wymawiaj nazwy ulic";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Chcesz wysłać raport o błędzie do deweloperów?\nPolegamy na naszych użytkownikach, ponieważ CoMaps nie zbiera żadnych informacji o błędach automatycznie. Z góry dziękujemy za wspieranie CoMaps!";
|
"bugreport_alert_message" = "Chcesz wysłać raport o błędzie do deweloperów?\nPolegamy na naszych użytkownikach, ponieważ CoMaps nie zbiera żadnych informacji o błędach automatycznie. Z góry dziękujemy za wspieranie CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Włącz synchronizację iCloud";
|
"enable_icloud_synchronization_title" = "Włącz synchronizację iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "Os edifícios 3D são desativados no modo de economia de energia";
|
"pref_map_3d_buildings_disabled_summary" = "Os edifícios 3D são desativados no modo de economia de energia";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Orientação por voz";
|
"pref_tts_title" = "Orientação por voz";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Anunciar nomes de ruas";
|
"pref_tts_street_names_title" = "Anunciar nomes de ruas";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Você gostaria de enviar um relatório de bug para os desenvolvedores?\nDependemos de nossos usuários, pois o CoMaps não coleta nenhuma informação de erro automaticamente. Agradecemos antecipadamente por você apoiar o CoMaps!";
|
"bugreport_alert_message" = "Você gostaria de enviar um relatório de bug para os desenvolvedores?\nDependemos de nossos usuários, pois o CoMaps não coleta nenhuma informação de erro automaticamente. Agradecemos antecipadamente por você apoiar o CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Ativar a sincronização do iCloud";
|
"enable_icloud_synchronization_title" = "Ativar a sincronização do iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "Os edifícios 3D são desativados no modo de poupança de energia";
|
"pref_map_3d_buildings_disabled_summary" = "Os edifícios 3D são desativados no modo de poupança de energia";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Instruções de voz";
|
"pref_tts_title" = "Instruções de voz";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Anunciar nomes de ruas";
|
"pref_tts_street_names_title" = "Anunciar nomes de ruas";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Gostarias de enviar um relatório de erro para os programadores?\nContamos com os nossos utilizadores, uma vez que o CoMaps não recolhe automaticamente qualquer informação de erro. Agradecemos desde já o teu apoio ao CoMaps!";
|
"bugreport_alert_message" = "Gostarias de enviar um relatório de erro para os programadores?\nContamos com os nossos utilizadores, uma vez que o CoMaps não recolhe automaticamente qualquer informação de erro. Agradecemos desde já o teu apoio ao CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Ativar a sincronização do iCloud";
|
"enable_icloud_synchronization_title" = "Ativar a sincronização do iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "Clădirile 3D sunt oprite în modul de economisire a energiei";
|
"pref_map_3d_buildings_disabled_summary" = "Clădirile 3D sunt oprite în modul de economisire a energiei";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Instrucțiuni vocale";
|
"pref_tts_title" = "Instrucțiuni vocale";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Anunțați numele străzilor";
|
"pref_tts_street_names_title" = "Anunțați numele străzilor";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Doriți să trimiteți un raport de eroare dezvoltatorilor?\nNe bazăm pe utilizatorii noștri, deoarece CoMaps nu colectează automat nicio informație privind erorile. Vă mulțumim anticipat pentru susținerea CoMaps!";
|
"bugreport_alert_message" = "Doriți să trimiteți un raport de eroare dezvoltatorilor?\nNe bazăm pe utilizatorii noștri, deoarece CoMaps nu colectează automat nicio informație privind erorile. Vă mulțumim anticipat pentru susținerea CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Activați Sincronizarea iCloud";
|
"enable_icloud_synchronization_title" = "Activați Sincronizarea iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D-здания отключаются в режиме энергосбережения";
|
"pref_map_3d_buildings_disabled_summary" = "3D-здания отключаются в режиме энергосбережения";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Голосовые инструкции";
|
"pref_tts_title" = "Голосовые инструкции";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Проговаривать названия улиц";
|
"pref_tts_street_names_title" = "Проговаривать названия улиц";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Хотите отправить разработчикам сообщение об ошибке?\nМы полагаемся на наших пользователей, так как CoMaps не собирает информацию об ошибках автоматически. Заранее спасибо за поддержку CoMaps!";
|
"bugreport_alert_message" = "Хотите отправить разработчикам сообщение об ошибке?\nМы полагаемся на наших пользователей, так как CoMaps не собирает информацию об ошибках автоматически. Заранее спасибо за поддержку CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Включить синхронизацию с iCloud";
|
"enable_icloud_synchronization_title" = "Включить синхронизацию с iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D budovy sú vypnuté v režime úspory energie";
|
"pref_map_3d_buildings_disabled_summary" = "3D budovy sú vypnuté v režime úspory energie";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Hlasové povely";
|
"pref_tts_title" = "Hlasové povely";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Oznámte názvy ulíc";
|
"pref_tts_street_names_title" = "Oznámte názvy ulíc";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Chcete poslať vývojárom hlásenie o chybe?\nSpoliehame sa na našich používateľov, pretože spoločnosť CoMaps nezhromažďuje žiadne informácie o chybách automaticky. Vopred vám ďakujeme za podporu CoMaps!";
|
"bugreport_alert_message" = "Chcete poslať vývojárom hlásenie o chybe?\nSpoliehame sa na našich používateľov, pretože spoločnosť CoMaps nezhromažďuje žiadne informácie o chybách automaticky. Vopred vám ďakujeme za podporu CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Povolenie synchronizácie iCloud";
|
"enable_icloud_synchronization_title" = "Povolenie synchronizácie iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D зграде се не приказују у режиму чувања батерије";
|
"pref_map_3d_buildings_disabled_summary" = "3D зграде се не приказују у режиму чувања батерије";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Гласовне инструкције";
|
"pref_tts_title" = "Гласовне инструкције";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Најави име улице";
|
"pref_tts_street_names_title" = "Најави име улице";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Да ли желите да пошаљете пријаву бага програмерима?\nОслањамо се на кориснике пошто CoMaps не прикупља податке о грешкама аутоматски. Хвала унапред што подржавате CoMaps!";
|
"bugreport_alert_message" = "Да ли желите да пошаљете пријаву бага програмерима?\nОслањамо се на кориснике пошто CoMaps не прикупља податке о грешкама аутоматски. Хвала унапред што подржавате CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Омогући iCloud синхронизацију";
|
"enable_icloud_synchronization_title" = "Омогући iCloud синхронизацију";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D-byggnader är avstängda i energisparläge";
|
"pref_map_3d_buildings_disabled_summary" = "3D-byggnader är avstängda i energisparläge";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Röstinstruktioner";
|
"pref_tts_title" = "Röstinstruktioner";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Läs upp gatunamn";
|
"pref_tts_street_names_title" = "Läs upp gatunamn";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Vill du skicka en felrapport till utvecklarna?\nVi förlitar oss på våra användare eftersom CoMaps inte samlar in någon felinformation automatiskt. Tack på förhand för att du stöder CoMaps!";
|
"bugreport_alert_message" = "Vill du skicka en felrapport till utvecklarna?\nVi förlitar oss på våra användare eftersom CoMaps inte samlar in någon felinformation automatiskt. Tack på förhand för att du stöder CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Aktivera iCloud-synkronisering";
|
"enable_icloud_synchronization_title" = "Aktivera iCloud-synkronisering";
|
||||||
|
|
||||||
|
|||||||
@@ -219,7 +219,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "Majengo ya 3D yamezimwa katika hali ya kuokoa nishati";
|
"pref_map_3d_buildings_disabled_summary" = "Majengo ya 3D yamezimwa katika hali ya kuokoa nishati";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Tangaza Majina ya Mitaa";
|
"pref_tts_title" = "Tangaza Majina ya Mitaa";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Tangaza Majina ya Mitaa";
|
"pref_tts_street_names_title" = "Tangaza Majina ya Mitaa";
|
||||||
@@ -994,6 +997,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Je, ungependa kutuma ripoti ya hitilafu kwa wasanidi programu?\nTunategemea watumiaji wetu kwani CoMaps hazikusanyi maelezo yoyote ya hitilafu kiotomatiki. Asante mapema kwa kusaidia CoMaps!";
|
"bugreport_alert_message" = "Je, ungependa kutuma ripoti ya hitilafu kwa wasanidi programu?\nTunategemea watumiaji wetu kwani CoMaps hazikusanyi maelezo yoyote ya hitilafu kiotomatiki. Asante mapema kwa kusaidia CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Washa Usawazishaji wa iCloud";
|
"enable_icloud_synchronization_title" = "Washa Usawazishaji wa iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "สิ่งปลูกสร้าง 3 มิติจะปิดในโหมดประหยัดพลังงาน";
|
"pref_map_3d_buildings_disabled_summary" = "สิ่งปลูกสร้าง 3 มิติจะปิดในโหมดประหยัดพลังงาน";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "คำแนะนำด้วยเสียง";
|
"pref_tts_title" = "คำแนะนำด้วยเสียง";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "ประกาศชื่อถนน";
|
"pref_tts_street_names_title" = "ประกาศชื่อถนน";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "คุณต้องการส่งรายงานข้อผิดพลาดไปยังนักพัฒนาหรือไม่?\nเราไว้วางใจผู้ใช้ของเราเนื่องจาก CoMaps จะไม่รวบรวมข้อมูลข้อผิดพลาดใด ๆ โดยอัตโนมัติ ขอขอบคุณล่วงหน้าสำหรับการสนับสนุน CoMaps!";
|
"bugreport_alert_message" = "คุณต้องการส่งรายงานข้อผิดพลาดไปยังนักพัฒนาหรือไม่?\nเราไว้วางใจผู้ใช้ของเราเนื่องจาก CoMaps จะไม่รวบรวมข้อมูลข้อผิดพลาดใด ๆ โดยอัตโนมัติ ขอขอบคุณล่วงหน้าสำหรับการสนับสนุน CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "เปิดใช้งานการซิงโครไนซ์ iCloud";
|
"enable_icloud_synchronization_title" = "เปิดใช้งานการซิงโครไนซ์ iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3B yapılar güç tutum kipindeyken kapatılır";
|
"pref_map_3d_buildings_disabled_summary" = "3B yapılar güç tutum kipindeyken kapatılır";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Sesli Yönlendirme";
|
"pref_tts_title" = "Sesli Yönlendirme";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Sokak Adlarını Söyle";
|
"pref_tts_street_names_title" = "Sokak Adlarını Söyle";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Geliştiricilere bir hata raporu göndermek ister misiniz?\nCoMaps otomatik olarak herhangi bir hata bilgisi toplamadığı için bu konuda kullanıcılarımıza güveniyoruz. CoMaps'i desteklediğiniz için şimdiden teşekkür ederiz!";
|
"bugreport_alert_message" = "Geliştiricilere bir hata raporu göndermek ister misiniz?\nCoMaps otomatik olarak herhangi bir hata bilgisi toplamadığı için bu konuda kullanıcılarımıza güveniyoruz. CoMaps'i desteklediğiniz için şimdiden teşekkür ederiz!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "iCloud Senkronizasyonunu Etkinleştir";
|
"enable_icloud_synchronization_title" = "iCloud Senkronizasyonunu Etkinleştir";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D будівлі вимкнені в режимі енергозбереження";
|
"pref_map_3d_buildings_disabled_summary" = "3D будівлі вимкнені в режимі енергозбереження";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Голосові інструкції";
|
"pref_tts_title" = "Голосові інструкції";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Проговорювати назви вулиць";
|
"pref_tts_street_names_title" = "Проговорювати назви вулиць";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Бажаєте надіслати розробникам звіт про помилку?\nМи покладаємося на наших користувачів, оскільки CoMaps не збирає інформацію про помилки автоматично. Заздалегідь дякуємо за підтримку CoMaps!";
|
"bugreport_alert_message" = "Бажаєте надіслати розробникам звіт про помилку?\nМи покладаємося на наших користувачів, оскільки CoMaps не збирає інформацію про помилки автоматично. Заздалегідь дякуємо за підтримку CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Увімкнути синхронізацію з iCloud";
|
"enable_icloud_synchronization_title" = "Увімкнути синхронізацію з iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "Tòa nhà 3D bị tắt ở chế độ tiết kiệm năng lượng";
|
"pref_map_3d_buildings_disabled_summary" = "Tòa nhà 3D bị tắt ở chế độ tiết kiệm năng lượng";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "Hướng dẫn bằng Giọng nói";
|
"pref_tts_title" = "Hướng dẫn bằng Giọng nói";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "Thông báo tên đường";
|
"pref_tts_street_names_title" = "Thông báo tên đường";
|
||||||
@@ -1003,6 +1006,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "Bạn có muốn gửi báo cáo lỗi cho nhà phát triển không?\nChúng tôi dựa vào người dùng của mình vì CoMaps không tự động thu thập bất kỳ thông tin lỗi nào. Cảm ơn bạn trước vì đã ủng hộ CoMaps!";
|
"bugreport_alert_message" = "Bạn có muốn gửi báo cáo lỗi cho nhà phát triển không?\nChúng tôi dựa vào người dùng của mình vì CoMaps không tự động thu thập bất kỳ thông tin lỗi nào. Cảm ơn bạn trước vì đã ủng hộ CoMaps!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "Kích hoạt đồng bộ hóa iCloud";
|
"enable_icloud_synchronization_title" = "Kích hoạt đồng bộ hóa iCloud";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D 建筑在省电模式下处于关闭状态";
|
"pref_map_3d_buildings_disabled_summary" = "3D 建筑在省电模式下处于关闭状态";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "语音指导";
|
"pref_tts_title" = "语音指导";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "播报街道名称";
|
"pref_tts_street_names_title" = "播报街道名称";
|
||||||
@@ -1004,6 +1007,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "您想向开发人员发送错误报告吗?\n由于 CoMaps 不会自动收集任何错误信息,因此我们只能依靠我们的用户。感谢您对 CoMaps 的支持!";
|
"bugreport_alert_message" = "您想向开发人员发送错误报告吗?\n由于 CoMaps 不会自动收集任何错误信息,因此我们只能依靠我们的用户。感谢您对 CoMaps 的支持!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "启用 iCloud 同步";
|
"enable_icloud_synchronization_title" = "启用 iCloud 同步";
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,10 @@
|
|||||||
"pref_map_3d_buildings_disabled_summary" = "3D 建築在省電模式下將會關閉";
|
"pref_map_3d_buildings_disabled_summary" = "3D 建築在省電模式下將會關閉";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts enabled» title */
|
/* Settings «Route» category: «Tts enabled» title */
|
||||||
"pref_tts_enable_title" = "語音提示";
|
"pref_tts_title" = "語音提示";
|
||||||
|
|
||||||
|
/* Settings «Route» category: «Tts enable» title */
|
||||||
|
"pref_tts_enable_title" = "Enable Voice Instructions";
|
||||||
|
|
||||||
/* Settings «Route» category: «Tts announce street names» title */
|
/* Settings «Route» category: «Tts announce street names» title */
|
||||||
"pref_tts_street_names_title" = "播報街道名稱";
|
"pref_tts_street_names_title" = "播報街道名稱";
|
||||||
@@ -1003,6 +1006,9 @@
|
|||||||
/* Message for the bug report alert. */
|
/* Message for the bug report alert. */
|
||||||
"bugreport_alert_message" = "您想向開發人員發送錯誤報告嗎?\n由於 CoMaps 不會自動收集任何錯誤資訊,因此我們只能依靠用戶的協助。感謝您對 CoMaps 的支持!";
|
"bugreport_alert_message" = "您想向開發人員發送錯誤報告嗎?\n由於 CoMaps 不會自動收集任何錯誤資訊,因此我們只能依靠用戶的協助。感謝您對 CoMaps 的支持!";
|
||||||
|
|
||||||
|
/* Title for the iCloud syncronization setting */
|
||||||
|
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||||
|
|
||||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||||
"enable_icloud_synchronization_title" = "啟用 iCloud 同步";
|
"enable_icloud_synchronization_title" = "啟用 iCloud 同步";
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,15 @@
|
|||||||
272F1F3D2E0EE0C800FA52EF /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 272F1F3C2E0EE0C400FA52EF /* ProfileView.swift */; };
|
272F1F3D2E0EE0C800FA52EF /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 272F1F3C2E0EE0C400FA52EF /* ProfileView.swift */; };
|
||||||
272F1F462E0EEF9400FA52EF /* SafariView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 272F1F452E0EEF8B00FA52EF /* SafariView.swift */; };
|
272F1F462E0EEF9400FA52EF /* SafariView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 272F1F452E0EEF8B00FA52EF /* SafariView.swift */; };
|
||||||
2765D1D02E13F9C20005CA2B /* BridgeControllers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2765D1CD2E13F9BC0005CA2B /* BridgeControllers.swift */; };
|
2765D1D02E13F9C20005CA2B /* BridgeControllers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2765D1CD2E13F9BC0005CA2B /* BridgeControllers.swift */; };
|
||||||
|
279367562E1BE16300AA5C3D /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 279367552E1BE16300AA5C3D /* Settings.swift */; };
|
||||||
|
2793675A2E1BE17300AA5C3D /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 279367592E1BE17300AA5C3D /* SettingsView.swift */; };
|
||||||
|
27AF184C2E1D5B2D00CD41E2 /* SettingsNavigationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27AF184B2E1D5A2700CD41E2 /* SettingsNavigationView.swift */; };
|
||||||
|
27AF18502E1DB61600CD41E2 /* VoiceRoutingLanguage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27AF184F2E1DB61500CD41E2 /* VoiceRoutingLanguage.swift */; };
|
||||||
|
27AF18522E1DB62000CD41E2 /* DistanceUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27AF18512E1DB61F00CD41E2 /* DistanceUnit.swift */; };
|
||||||
|
27AF18542E1DB62700CD41E2 /* MobileDataPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27AF18532E1DB62600CD41E2 /* MobileDataPolicy.swift */; };
|
||||||
|
27AF18562E1DB63000CD41E2 /* PowerSavingMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27AF18552E1DB62F00CD41E2 /* PowerSavingMode.swift */; };
|
||||||
|
27AF18582E1DB63A00CD41E2 /* Appearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27AF18572E1DB63900CD41E2 /* Appearance.swift */; };
|
||||||
|
27AF185A2E1DB64500CD41E2 /* AnnouncingSpeedTrapsWhileVoiceRouting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27AF18592E1DB64400CD41E2 /* AnnouncingSpeedTrapsWhileVoiceRouting.swift */; };
|
||||||
3304306D21D4EAFB00317CA3 /* SearchCategoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3304306C21D4EAFB00317CA3 /* SearchCategoryCell.swift */; };
|
3304306D21D4EAFB00317CA3 /* SearchCategoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3304306C21D4EAFB00317CA3 /* SearchCategoryCell.swift */; };
|
||||||
33046832219C57180041F3A8 /* CategorySettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33046831219C57180041F3A8 /* CategorySettingsViewController.swift */; };
|
33046832219C57180041F3A8 /* CategorySettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33046831219C57180041F3A8 /* CategorySettingsViewController.swift */; };
|
||||||
337F98A621D37B7400C8AC27 /* SearchTabViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 337F98A521D37B7400C8AC27 /* SearchTabViewController.swift */; };
|
337F98A621D37B7400C8AC27 /* SearchTabViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 337F98A521D37B7400C8AC27 /* SearchTabViewController.swift */; };
|
||||||
@@ -49,7 +58,6 @@
|
|||||||
340B33C61F3AEFDB00A8C1B4 /* MWMRouter+RouteManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 340B33C41F3AEFDB00A8C1B4 /* MWMRouter+RouteManager.mm */; };
|
340B33C61F3AEFDB00A8C1B4 /* MWMRouter+RouteManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 340B33C41F3AEFDB00A8C1B4 /* MWMRouter+RouteManager.mm */; };
|
||||||
340E1EEF1E2F614400CE49BF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 340E1EE51E2F614400CE49BF /* LaunchScreen.storyboard */; };
|
340E1EEF1E2F614400CE49BF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 340E1EE51E2F614400CE49BF /* LaunchScreen.storyboard */; };
|
||||||
340E1EF21E2F614400CE49BF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 340E1EE61E2F614400CE49BF /* Main.storyboard */; };
|
340E1EF21E2F614400CE49BF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 340E1EE61E2F614400CE49BF /* Main.storyboard */; };
|
||||||
340E1EF81E2F614400CE49BF /* Settings.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 340E1EE81E2F614400CE49BF /* Settings.storyboard */; };
|
|
||||||
340E1EFB1E2F614400CE49BF /* Storyboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 340E1EE91E2F614400CE49BF /* Storyboard.swift */; };
|
340E1EFB1E2F614400CE49BF /* Storyboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 340E1EE91E2F614400CE49BF /* Storyboard.swift */; };
|
||||||
340E1EFE1E2F614400CE49BF /* Welcome.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 340E1EEA1E2F614400CE49BF /* Welcome.storyboard */; };
|
340E1EFE1E2F614400CE49BF /* Welcome.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 340E1EEA1E2F614400CE49BF /* Welcome.storyboard */; };
|
||||||
343064411E9FDC7300DC7665 /* SearchIndex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3430643F1E9FDC7300DC7665 /* SearchIndex.swift */; };
|
343064411E9FDC7300DC7665 /* SearchIndex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3430643F1E9FDC7300DC7665 /* SearchIndex.swift */; };
|
||||||
@@ -179,7 +187,6 @@
|
|||||||
34F742321E0834F400AC1FD6 /* UIViewController+Navigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 34F742301E0834F400AC1FD6 /* UIViewController+Navigation.m */; };
|
34F742321E0834F400AC1FD6 /* UIViewController+Navigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 34F742301E0834F400AC1FD6 /* UIViewController+Navigation.m */; };
|
||||||
34FE5A6F1F18F30F00BCA729 /* TrafficButtonArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34FE5A6D1F18F30F00BCA729 /* TrafficButtonArea.swift */; };
|
34FE5A6F1F18F30F00BCA729 /* TrafficButtonArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34FE5A6D1F18F30F00BCA729 /* TrafficButtonArea.swift */; };
|
||||||
3D15ACEE2155117000F725D5 /* MWMObjectsCategorySelectorDataSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3D15ACED2155117000F725D5 /* MWMObjectsCategorySelectorDataSource.mm */; };
|
3D15ACEE2155117000F725D5 /* MWMObjectsCategorySelectorDataSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3D15ACED2155117000F725D5 /* MWMObjectsCategorySelectorDataSource.mm */; };
|
||||||
3DEE1AEB21F72CD300054A91 /* MWMPowerManagmentViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3DEE1AEA21F72CD300054A91 /* MWMPowerManagmentViewController.mm */; };
|
|
||||||
408645FC21495EB1000A4A1D /* categories_cuisines.txt in Resources */ = {isa = PBXBuildFile; fileRef = 408645FB21495EB1000A4A1D /* categories_cuisines.txt */; };
|
408645FC21495EB1000A4A1D /* categories_cuisines.txt in Resources */ = {isa = PBXBuildFile; fileRef = 408645FB21495EB1000A4A1D /* categories_cuisines.txt */; };
|
||||||
44360A0D2A7D34990016F412 /* TransportRuler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44360A0C2A7D34990016F412 /* TransportRuler.swift */; };
|
44360A0D2A7D34990016F412 /* TransportRuler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44360A0C2A7D34990016F412 /* TransportRuler.swift */; };
|
||||||
44360A112A7D35440016F412 /* TransportRuler.xib in Resources */ = {isa = PBXBuildFile; fileRef = 44360A102A7D35440016F412 /* TransportRuler.xib */; };
|
44360A112A7D35440016F412 /* TransportRuler.xib in Resources */ = {isa = PBXBuildFile; fileRef = 44360A102A7D35440016F412 /* TransportRuler.xib */; };
|
||||||
@@ -217,7 +224,6 @@
|
|||||||
4767CDA620AB1F6200BD8166 /* LeftAlignedIconButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4767CDA520AB1F6200BD8166 /* LeftAlignedIconButton.swift */; };
|
4767CDA620AB1F6200BD8166 /* LeftAlignedIconButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4767CDA520AB1F6200BD8166 /* LeftAlignedIconButton.swift */; };
|
||||||
4767CDA820AB401000BD8166 /* LinkTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4767CDA720AB401000BD8166 /* LinkTextView.swift */; };
|
4767CDA820AB401000BD8166 /* LinkTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4767CDA720AB401000BD8166 /* LinkTextView.swift */; };
|
||||||
47699A0821F08E37009E6585 /* NSDate+TimeDistance.m in Sources */ = {isa = PBXBuildFile; fileRef = 47699A0721F08E37009E6585 /* NSDate+TimeDistance.m */; };
|
47699A0821F08E37009E6585 /* NSDate+TimeDistance.m in Sources */ = {isa = PBXBuildFile; fileRef = 47699A0721F08E37009E6585 /* NSDate+TimeDistance.m */; };
|
||||||
477219052243E79500E5B227 /* DrivingOptionsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477219042243E79500E5B227 /* DrivingOptionsViewController.swift */; };
|
|
||||||
4788739220EE326500F6826B /* VerticallyAlignedButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4788739120EE326400F6826B /* VerticallyAlignedButton.swift */; };
|
4788739220EE326500F6826B /* VerticallyAlignedButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4788739120EE326400F6826B /* VerticallyAlignedButton.swift */; };
|
||||||
479EE94A2292FB03009DEBA6 /* ActivityIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 479EE9492292FB03009DEBA6 /* ActivityIndicator.swift */; };
|
479EE94A2292FB03009DEBA6 /* ActivityIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 479EE9492292FB03009DEBA6 /* ActivityIndicator.swift */; };
|
||||||
47A13CAD24BE9AA500027D4F /* DatePickerViewRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47A13CAC24BE9AA500027D4F /* DatePickerViewRenderer.swift */; };
|
47A13CAD24BE9AA500027D4F /* DatePickerViewRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47A13CAC24BE9AA500027D4F /* DatePickerViewRenderer.swift */; };
|
||||||
@@ -240,7 +246,6 @@
|
|||||||
47CF2E6323BA0DD500D11C30 /* CopyLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47CF2E6223BA0DD500D11C30 /* CopyLabel.swift */; };
|
47CF2E6323BA0DD500D11C30 /* CopyLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47CF2E6223BA0DD500D11C30 /* CopyLabel.swift */; };
|
||||||
47D48BF52432A7CA00FEFB1F /* ChartViewRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47D48BF42432A7C900FEFB1F /* ChartViewRenderer.swift */; };
|
47D48BF52432A7CA00FEFB1F /* ChartViewRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47D48BF42432A7C900FEFB1F /* ChartViewRenderer.swift */; };
|
||||||
47DF72B922520CE20004AB10 /* MWMRoutingOptions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 474902D9224A54EC008D71E0 /* MWMRoutingOptions.mm */; };
|
47DF72B922520CE20004AB10 /* MWMRoutingOptions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 474902D9224A54EC008D71E0 /* MWMRoutingOptions.mm */; };
|
||||||
47DF72BB225356BF0004AB10 /* DrivingOptions.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 47DF72BA225356BF0004AB10 /* DrivingOptions.storyboard */; };
|
|
||||||
47E3C7252111E41B008B3B27 /* DimmedModalPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47E3C7242111E41B008B3B27 /* DimmedModalPresentationController.swift */; };
|
47E3C7252111E41B008B3B27 /* DimmedModalPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47E3C7242111E41B008B3B27 /* DimmedModalPresentationController.swift */; };
|
||||||
47E3C7272111E5A8008B3B27 /* AlertPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47E3C7262111E5A8008B3B27 /* AlertPresentationController.swift */; };
|
47E3C7272111E5A8008B3B27 /* AlertPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47E3C7262111E5A8008B3B27 /* AlertPresentationController.swift */; };
|
||||||
47E3C7292111E614008B3B27 /* FadeInAnimatedTransitioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47E3C7282111E614008B3B27 /* FadeInAnimatedTransitioning.swift */; };
|
47E3C7292111E614008B3B27 /* FadeInAnimatedTransitioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47E3C7282111E614008B3B27 /* FadeInAnimatedTransitioning.swift */; };
|
||||||
@@ -478,7 +483,6 @@
|
|||||||
ED46DDE12D098A0C007CACD6 /* CoMapsWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = ED46DDCC2D098A0B007CACD6 /* CoMapsWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
ED46DDE12D098A0C007CACD6 /* CoMapsWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = ED46DDCC2D098A0B007CACD6 /* CoMapsWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||||
ED5BAF4B2D688F5B0088D7B1 /* SearchOnMapHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED5BAF4A2D688F5A0088D7B1 /* SearchOnMapHeaderView.swift */; };
|
ED5BAF4B2D688F5B0088D7B1 /* SearchOnMapHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED5BAF4A2D688F5A0088D7B1 /* SearchOnMapHeaderView.swift */; };
|
||||||
ED5E02142D8B17B600A5CC7B /* ModalPresentationStepsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED5E02132D8B17B600A5CC7B /* ModalPresentationStepsController.swift */; };
|
ED5E02142D8B17B600A5CC7B /* ModalPresentationStepsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED5E02132D8B17B600A5CC7B /* ModalPresentationStepsController.swift */; };
|
||||||
ED63CEB92BDF8F9D006155C4 /* SettingsTableViewiCloudSwitchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED63CEB62BDF8F9C006155C4 /* SettingsTableViewiCloudSwitchCell.swift */; };
|
|
||||||
ED70D55C2D5396F300738C1E /* SearchResult.mm in Sources */ = {isa = PBXBuildFile; fileRef = ED70D55A2D5396F300738C1E /* SearchResult.mm */; };
|
ED70D55C2D5396F300738C1E /* SearchResult.mm in Sources */ = {isa = PBXBuildFile; fileRef = ED70D55A2D5396F300738C1E /* SearchResult.mm */; };
|
||||||
ED70D5892D539A2500738C1E /* SearchOnMapViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED70D5872D539A2500738C1E /* SearchOnMapViewController.swift */; };
|
ED70D5892D539A2500738C1E /* SearchOnMapViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED70D5872D539A2500738C1E /* SearchOnMapViewController.swift */; };
|
||||||
ED70D58A2D539A2500738C1E /* SearchOnMapModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED70D5852D539A2500738C1E /* SearchOnMapModels.swift */; };
|
ED70D58A2D539A2500738C1E /* SearchOnMapModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED70D5852D539A2500738C1E /* SearchOnMapModels.swift */; };
|
||||||
@@ -499,7 +503,6 @@
|
|||||||
ED7CCC4F2C1362E300E2A737 /* FileType.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED7CCC4E2C1362E300E2A737 /* FileType.swift */; };
|
ED7CCC4F2C1362E300E2A737 /* FileType.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED7CCC4E2C1362E300E2A737 /* FileType.swift */; };
|
||||||
ED808D0F2C38407800D52585 /* CircleImageButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED808D0E2C38407800D52585 /* CircleImageButton.swift */; };
|
ED808D0F2C38407800D52585 /* CircleImageButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED808D0E2C38407800D52585 /* CircleImageButton.swift */; };
|
||||||
ED810EC52D566E9B00ECDE2C /* SearchOnMapTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED810EC42D566E9B00ECDE2C /* SearchOnMapTests.swift */; };
|
ED810EC52D566E9B00ECDE2C /* SearchOnMapTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED810EC42D566E9B00ECDE2C /* SearchOnMapTests.swift */; };
|
||||||
ED8270F02C2071A3005966DA /* SettingsTableViewDetailedSwitchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED8270EF2C2071A3005966DA /* SettingsTableViewDetailedSwitchCell.swift */; };
|
|
||||||
ED83880F2D54DEB3002A0536 /* UIImage+FilledWithColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED83880E2D54DEA4002A0536 /* UIImage+FilledWithColor.swift */; };
|
ED83880F2D54DEB3002A0536 /* UIImage+FilledWithColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED83880E2D54DEA4002A0536 /* UIImage+FilledWithColor.swift */; };
|
||||||
ED8A91E02D759B50009E063B /* LocalizableTypes.strings in Resources */ = {isa = PBXBuildFile; fileRef = ED8A91DE2D759B50009E063B /* LocalizableTypes.strings */; };
|
ED8A91E02D759B50009E063B /* LocalizableTypes.strings in Resources */ = {isa = PBXBuildFile; fileRef = ED8A91DE2D759B50009E063B /* LocalizableTypes.strings */; };
|
||||||
ED914AB22D35063A00973C45 /* TextColorStyleSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED914AB12D35063A00973C45 /* TextColorStyleSheet.swift */; };
|
ED914AB22D35063A00973C45 /* TextColorStyleSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED914AB12D35063A00973C45 /* TextColorStyleSheet.swift */; };
|
||||||
@@ -621,15 +624,6 @@
|
|||||||
F6E2FF331E097BA00083EBEC /* MWMSearchCommonCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FD2D1E097BA00083EBEC /* MWMSearchCommonCell.xib */; };
|
F6E2FF331E097BA00083EBEC /* MWMSearchCommonCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FD2D1E097BA00083EBEC /* MWMSearchCommonCell.xib */; };
|
||||||
F6E2FF361E097BA00083EBEC /* MWMSearchSuggestionCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD2F1E097BA00083EBEC /* MWMSearchSuggestionCell.mm */; };
|
F6E2FF361E097BA00083EBEC /* MWMSearchSuggestionCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD2F1E097BA00083EBEC /* MWMSearchSuggestionCell.mm */; };
|
||||||
F6E2FF391E097BA00083EBEC /* MWMSearchSuggestionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FD301E097BA00083EBEC /* MWMSearchSuggestionCell.xib */; };
|
F6E2FF391E097BA00083EBEC /* MWMSearchSuggestionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FD301E097BA00083EBEC /* MWMSearchSuggestionCell.xib */; };
|
||||||
F6E2FF451E097BA00083EBEC /* SettingsTableViewLinkCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD381E097BA00083EBEC /* SettingsTableViewLinkCell.swift */; };
|
|
||||||
F6E2FF481E097BA00083EBEC /* SettingsTableViewSelectableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD391E097BA00083EBEC /* SettingsTableViewSelectableCell.swift */; };
|
|
||||||
F6E2FF4B1E097BA00083EBEC /* SettingsTableViewSwitchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD3A1E097BA00083EBEC /* SettingsTableViewSwitchCell.swift */; };
|
|
||||||
F6E2FF571E097BA00083EBEC /* MWMMobileInternetViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD411E097BA00083EBEC /* MWMMobileInternetViewController.m */; };
|
|
||||||
F6E2FF5A1E097BA00083EBEC /* MWMNightModeController.m in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD431E097BA00083EBEC /* MWMNightModeController.m */; };
|
|
||||||
F6E2FF601E097BA00083EBEC /* MWMSettingsViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD471E097BA00083EBEC /* MWMSettingsViewController.mm */; };
|
|
||||||
F6E2FF631E097BA00083EBEC /* MWMTTSLanguageViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD491E097BA00083EBEC /* MWMTTSLanguageViewController.mm */; };
|
|
||||||
F6E2FF661E097BA00083EBEC /* MWMTTSSettingsViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD4B1E097BA00083EBEC /* MWMTTSSettingsViewController.mm */; };
|
|
||||||
F6E2FF691E097BA00083EBEC /* MWMUnitsController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD4D1E097BA00083EBEC /* MWMUnitsController.mm */; };
|
|
||||||
F6FE3C391CC50FFD00A73196 /* MWMPlaceDoesntExistAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = F6FE3C371CC50FFD00A73196 /* MWMPlaceDoesntExistAlert.m */; };
|
F6FE3C391CC50FFD00A73196 /* MWMPlaceDoesntExistAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = F6FE3C371CC50FFD00A73196 /* MWMPlaceDoesntExistAlert.m */; };
|
||||||
F6FE3C3C1CC5106500A73196 /* MWMPlaceDoesntExistAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6FE3C3A1CC5106500A73196 /* MWMPlaceDoesntExistAlert.xib */; };
|
F6FE3C3C1CC5106500A73196 /* MWMPlaceDoesntExistAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6FE3C3A1CC5106500A73196 /* MWMPlaceDoesntExistAlert.xib */; };
|
||||||
F6FEA82E1C58F108007223CC /* MWMButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F6FEA82C1C58E89B007223CC /* MWMButton.m */; };
|
F6FEA82E1C58F108007223CC /* MWMButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F6FEA82C1C58E89B007223CC /* MWMButton.m */; };
|
||||||
@@ -781,6 +775,15 @@
|
|||||||
272F1F3C2E0EE0C400FA52EF /* ProfileView.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = "<group>"; tabWidth = 4; };
|
272F1F3C2E0EE0C400FA52EF /* ProfileView.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = "<group>"; tabWidth = 4; };
|
||||||
272F1F452E0EEF8B00FA52EF /* SafariView.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = SafariView.swift; sourceTree = "<group>"; tabWidth = 4; };
|
272F1F452E0EEF8B00FA52EF /* SafariView.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = SafariView.swift; sourceTree = "<group>"; tabWidth = 4; };
|
||||||
2765D1CD2E13F9BC0005CA2B /* BridgeControllers.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = BridgeControllers.swift; sourceTree = "<group>"; tabWidth = 4; };
|
2765D1CD2E13F9BC0005CA2B /* BridgeControllers.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = BridgeControllers.swift; sourceTree = "<group>"; tabWidth = 4; };
|
||||||
|
279367552E1BE16300AA5C3D /* Settings.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = "<group>"; tabWidth = 4; };
|
||||||
|
279367592E1BE17300AA5C3D /* SettingsView.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; name = SettingsView.swift; path = UI/Settings/SettingsView.swift; sourceTree = SOURCE_ROOT; tabWidth = 4; };
|
||||||
|
27AF184B2E1D5A2700CD41E2 /* SettingsNavigationView.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = SettingsNavigationView.swift; sourceTree = "<group>"; tabWidth = 4; };
|
||||||
|
27AF184F2E1DB61500CD41E2 /* VoiceRoutingLanguage.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = VoiceRoutingLanguage.swift; sourceTree = "<group>"; tabWidth = 4; };
|
||||||
|
27AF18512E1DB61F00CD41E2 /* DistanceUnit.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = DistanceUnit.swift; sourceTree = "<group>"; tabWidth = 4; };
|
||||||
|
27AF18532E1DB62600CD41E2 /* MobileDataPolicy.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = MobileDataPolicy.swift; sourceTree = "<group>"; tabWidth = 4; };
|
||||||
|
27AF18552E1DB62F00CD41E2 /* PowerSavingMode.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = PowerSavingMode.swift; sourceTree = "<group>"; tabWidth = 4; };
|
||||||
|
27AF18572E1DB63900CD41E2 /* Appearance.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = Appearance.swift; sourceTree = "<group>"; tabWidth = 4; };
|
||||||
|
27AF18592E1DB64400CD41E2 /* AnnouncingSpeedTrapsWhileVoiceRouting.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = AnnouncingSpeedTrapsWhileVoiceRouting.swift; sourceTree = "<group>"; tabWidth = 4; };
|
||||||
28A0AB4B0D9B1048005BE974 /* Maps_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Maps_Prefix.pch; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
|
28A0AB4B0D9B1048005BE974 /* Maps_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Maps_Prefix.pch; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
|
||||||
29B97316FDCFA39411CA2CEA /* main.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = main.mm; sourceTree = "<group>"; };
|
29B97316FDCFA39411CA2CEA /* main.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = main.mm; sourceTree = "<group>"; };
|
||||||
30034C5C2B3F0B74005D961A /* az */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = az; path = az.lproj/Localizable.strings; sourceTree = "<group>"; };
|
30034C5C2B3F0B74005D961A /* az */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = az; path = az.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
@@ -842,7 +845,6 @@
|
|||||||
340B33C41F3AEFDB00A8C1B4 /* MWMRouter+RouteManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "MWMRouter+RouteManager.mm"; sourceTree = "<group>"; };
|
340B33C41F3AEFDB00A8C1B4 /* MWMRouter+RouteManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "MWMRouter+RouteManager.mm"; sourceTree = "<group>"; };
|
||||||
340E1EE51E2F614400CE49BF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
|
340E1EE51E2F614400CE49BF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||||
340E1EE61E2F614400CE49BF /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
|
340E1EE61E2F614400CE49BF /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
|
||||||
340E1EE81E2F614400CE49BF /* Settings.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Settings.storyboard; sourceTree = "<group>"; };
|
|
||||||
340E1EE91E2F614400CE49BF /* Storyboard.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Storyboard.swift; sourceTree = "<group>"; };
|
340E1EE91E2F614400CE49BF /* Storyboard.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Storyboard.swift; sourceTree = "<group>"; };
|
||||||
340E1EEA1E2F614400CE49BF /* Welcome.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Welcome.storyboard; sourceTree = "<group>"; };
|
340E1EEA1E2F614400CE49BF /* Welcome.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Welcome.storyboard; sourceTree = "<group>"; };
|
||||||
3426DEB11F45AE2800D1C43C /* MWMRouterType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMRouterType.h; sourceTree = "<group>"; };
|
3426DEB11F45AE2800D1C43C /* MWMRouterType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMRouterType.h; sourceTree = "<group>"; };
|
||||||
@@ -1102,8 +1104,6 @@
|
|||||||
34FE5A6D1F18F30F00BCA729 /* TrafficButtonArea.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TrafficButtonArea.swift; sourceTree = "<group>"; };
|
34FE5A6D1F18F30F00BCA729 /* TrafficButtonArea.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TrafficButtonArea.swift; sourceTree = "<group>"; };
|
||||||
3D15ACED2155117000F725D5 /* MWMObjectsCategorySelectorDataSource.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMObjectsCategorySelectorDataSource.mm; sourceTree = "<group>"; };
|
3D15ACED2155117000F725D5 /* MWMObjectsCategorySelectorDataSource.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMObjectsCategorySelectorDataSource.mm; sourceTree = "<group>"; };
|
||||||
3D15ACEF2155118800F725D5 /* MWMObjectsCategorySelectorDataSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMObjectsCategorySelectorDataSource.h; sourceTree = "<group>"; };
|
3D15ACEF2155118800F725D5 /* MWMObjectsCategorySelectorDataSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMObjectsCategorySelectorDataSource.h; sourceTree = "<group>"; };
|
||||||
3DEE1AE921F72CD300054A91 /* MWMPowerManagmentViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMPowerManagmentViewController.h; sourceTree = "<group>"; };
|
|
||||||
3DEE1AEA21F72CD300054A91 /* MWMPowerManagmentViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMPowerManagmentViewController.mm; sourceTree = "<group>"; };
|
|
||||||
408645FB21495EB1000A4A1D /* categories_cuisines.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = categories_cuisines.txt; path = ../../data/categories_cuisines.txt; sourceTree = "<group>"; };
|
408645FB21495EB1000A4A1D /* categories_cuisines.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = categories_cuisines.txt; path = ../../data/categories_cuisines.txt; sourceTree = "<group>"; };
|
||||||
44360A0C2A7D34990016F412 /* TransportRuler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransportRuler.swift; sourceTree = "<group>"; };
|
44360A0C2A7D34990016F412 /* TransportRuler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransportRuler.swift; sourceTree = "<group>"; };
|
||||||
44360A102A7D35440016F412 /* TransportRuler.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TransportRuler.xib; sourceTree = "<group>"; };
|
44360A102A7D35440016F412 /* TransportRuler.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TransportRuler.xib; sourceTree = "<group>"; };
|
||||||
@@ -1152,7 +1152,6 @@
|
|||||||
4767CDA720AB401000BD8166 /* LinkTextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LinkTextView.swift; sourceTree = "<group>"; };
|
4767CDA720AB401000BD8166 /* LinkTextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LinkTextView.swift; sourceTree = "<group>"; };
|
||||||
47699A0621F08E37009E6585 /* NSDate+TimeDistance.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSDate+TimeDistance.h"; sourceTree = "<group>"; };
|
47699A0621F08E37009E6585 /* NSDate+TimeDistance.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSDate+TimeDistance.h"; sourceTree = "<group>"; };
|
||||||
47699A0721F08E37009E6585 /* NSDate+TimeDistance.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSDate+TimeDistance.m"; sourceTree = "<group>"; };
|
47699A0721F08E37009E6585 /* NSDate+TimeDistance.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSDate+TimeDistance.m"; sourceTree = "<group>"; };
|
||||||
477219042243E79500E5B227 /* DrivingOptionsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DrivingOptionsViewController.swift; sourceTree = "<group>"; };
|
|
||||||
4788739120EE326400F6826B /* VerticallyAlignedButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VerticallyAlignedButton.swift; sourceTree = "<group>"; };
|
4788739120EE326400F6826B /* VerticallyAlignedButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VerticallyAlignedButton.swift; sourceTree = "<group>"; };
|
||||||
479EE9492292FB03009DEBA6 /* ActivityIndicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ActivityIndicator.swift; path = CustomViews/ActivityIndicator.swift; sourceTree = "<group>"; };
|
479EE9492292FB03009DEBA6 /* ActivityIndicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ActivityIndicator.swift; path = CustomViews/ActivityIndicator.swift; sourceTree = "<group>"; };
|
||||||
47A13CAC24BE9AA500027D4F /* DatePickerViewRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatePickerViewRenderer.swift; sourceTree = "<group>"; };
|
47A13CAC24BE9AA500027D4F /* DatePickerViewRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatePickerViewRenderer.swift; sourceTree = "<group>"; };
|
||||||
@@ -1179,7 +1178,6 @@
|
|||||||
47CA68FB250F99E500671019 /* BookmarksListCellStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksListCellStrategy.swift; sourceTree = "<group>"; };
|
47CA68FB250F99E500671019 /* BookmarksListCellStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksListCellStrategy.swift; sourceTree = "<group>"; };
|
||||||
47CF2E6223BA0DD500D11C30 /* CopyLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CopyLabel.swift; sourceTree = "<group>"; };
|
47CF2E6223BA0DD500D11C30 /* CopyLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CopyLabel.swift; sourceTree = "<group>"; };
|
||||||
47D48BF42432A7C900FEFB1F /* ChartViewRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChartViewRenderer.swift; sourceTree = "<group>"; };
|
47D48BF42432A7C900FEFB1F /* ChartViewRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChartViewRenderer.swift; sourceTree = "<group>"; };
|
||||||
47DF72BA225356BF0004AB10 /* DrivingOptions.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = DrivingOptions.storyboard; sourceTree = "<group>"; };
|
|
||||||
47E3C7242111E41B008B3B27 /* DimmedModalPresentationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DimmedModalPresentationController.swift; sourceTree = "<group>"; };
|
47E3C7242111E41B008B3B27 /* DimmedModalPresentationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DimmedModalPresentationController.swift; sourceTree = "<group>"; };
|
||||||
47E3C7262111E5A8008B3B27 /* AlertPresentationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertPresentationController.swift; sourceTree = "<group>"; };
|
47E3C7262111E5A8008B3B27 /* AlertPresentationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertPresentationController.swift; sourceTree = "<group>"; };
|
||||||
47E3C7282111E614008B3B27 /* FadeInAnimatedTransitioning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FadeInAnimatedTransitioning.swift; sourceTree = "<group>"; };
|
47E3C7282111E614008B3B27 /* FadeInAnimatedTransitioning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FadeInAnimatedTransitioning.swift; sourceTree = "<group>"; };
|
||||||
@@ -1441,7 +1439,6 @@
|
|||||||
ED49D76F2CF0E3A8004AF27E /* TrackRecordingButtonViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackRecordingButtonViewController.swift; sourceTree = "<group>"; };
|
ED49D76F2CF0E3A8004AF27E /* TrackRecordingButtonViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackRecordingButtonViewController.swift; sourceTree = "<group>"; };
|
||||||
ED5BAF4A2D688F5A0088D7B1 /* SearchOnMapHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchOnMapHeaderView.swift; sourceTree = "<group>"; };
|
ED5BAF4A2D688F5A0088D7B1 /* SearchOnMapHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchOnMapHeaderView.swift; sourceTree = "<group>"; };
|
||||||
ED5E02132D8B17B600A5CC7B /* ModalPresentationStepsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModalPresentationStepsController.swift; sourceTree = "<group>"; };
|
ED5E02132D8B17B600A5CC7B /* ModalPresentationStepsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModalPresentationStepsController.swift; sourceTree = "<group>"; };
|
||||||
ED63CEB62BDF8F9C006155C4 /* SettingsTableViewiCloudSwitchCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsTableViewiCloudSwitchCell.swift; sourceTree = "<group>"; };
|
|
||||||
ED70D5582D5396F300738C1E /* SearchItemType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SearchItemType.h; sourceTree = "<group>"; };
|
ED70D5582D5396F300738C1E /* SearchItemType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SearchItemType.h; sourceTree = "<group>"; };
|
||||||
ED70D5592D5396F300738C1E /* SearchResult.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SearchResult.h; sourceTree = "<group>"; };
|
ED70D5592D5396F300738C1E /* SearchResult.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SearchResult.h; sourceTree = "<group>"; };
|
||||||
ED70D55A2D5396F300738C1E /* SearchResult.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = SearchResult.mm; sourceTree = "<group>"; };
|
ED70D55A2D5396F300738C1E /* SearchResult.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = SearchResult.mm; sourceTree = "<group>"; };
|
||||||
@@ -1465,7 +1462,6 @@
|
|||||||
ED7CCC4E2C1362E300E2A737 /* FileType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileType.swift; sourceTree = "<group>"; };
|
ED7CCC4E2C1362E300E2A737 /* FileType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileType.swift; sourceTree = "<group>"; };
|
||||||
ED808D0E2C38407800D52585 /* CircleImageButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircleImageButton.swift; sourceTree = "<group>"; };
|
ED808D0E2C38407800D52585 /* CircleImageButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircleImageButton.swift; sourceTree = "<group>"; };
|
||||||
ED810EC42D566E9B00ECDE2C /* SearchOnMapTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchOnMapTests.swift; sourceTree = "<group>"; };
|
ED810EC42D566E9B00ECDE2C /* SearchOnMapTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchOnMapTests.swift; sourceTree = "<group>"; };
|
||||||
ED8270EF2C2071A3005966DA /* SettingsTableViewDetailedSwitchCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsTableViewDetailedSwitchCell.swift; sourceTree = "<group>"; };
|
|
||||||
ED83880E2D54DEA4002A0536 /* UIImage+FilledWithColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+FilledWithColor.swift"; sourceTree = "<group>"; };
|
ED83880E2D54DEA4002A0536 /* UIImage+FilledWithColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+FilledWithColor.swift"; sourceTree = "<group>"; };
|
||||||
ED8A91DF2D759B50009E063B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/LocalizableTypes.strings; sourceTree = "<group>"; };
|
ED8A91DF2D759B50009E063B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/LocalizableTypes.strings; sourceTree = "<group>"; };
|
||||||
ED8A91E32D759B59009E063B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/LocalizableTypes.strings; sourceTree = "<group>"; };
|
ED8A91E32D759B59009E063B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/LocalizableTypes.strings; sourceTree = "<group>"; };
|
||||||
@@ -1707,21 +1703,6 @@
|
|||||||
F6E2FD2E1E097BA00083EBEC /* MWMSearchSuggestionCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMSearchSuggestionCell.h; sourceTree = "<group>"; };
|
F6E2FD2E1E097BA00083EBEC /* MWMSearchSuggestionCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMSearchSuggestionCell.h; sourceTree = "<group>"; };
|
||||||
F6E2FD2F1E097BA00083EBEC /* MWMSearchSuggestionCell.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMSearchSuggestionCell.mm; sourceTree = "<group>"; };
|
F6E2FD2F1E097BA00083EBEC /* MWMSearchSuggestionCell.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMSearchSuggestionCell.mm; sourceTree = "<group>"; };
|
||||||
F6E2FD301E097BA00083EBEC /* MWMSearchSuggestionCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMSearchSuggestionCell.xib; sourceTree = "<group>"; };
|
F6E2FD301E097BA00083EBEC /* MWMSearchSuggestionCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMSearchSuggestionCell.xib; sourceTree = "<group>"; };
|
||||||
F6E2FD381E097BA00083EBEC /* SettingsTableViewLinkCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsTableViewLinkCell.swift; sourceTree = "<group>"; };
|
|
||||||
F6E2FD391E097BA00083EBEC /* SettingsTableViewSelectableCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsTableViewSelectableCell.swift; sourceTree = "<group>"; };
|
|
||||||
F6E2FD3A1E097BA00083EBEC /* SettingsTableViewSwitchCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsTableViewSwitchCell.swift; sourceTree = "<group>"; };
|
|
||||||
F6E2FD401E097BA00083EBEC /* MWMMobileInternetViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMMobileInternetViewController.h; sourceTree = "<group>"; };
|
|
||||||
F6E2FD411E097BA00083EBEC /* MWMMobileInternetViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMMobileInternetViewController.m; sourceTree = "<group>"; };
|
|
||||||
F6E2FD421E097BA00083EBEC /* MWMNightModeController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMNightModeController.h; sourceTree = "<group>"; };
|
|
||||||
F6E2FD431E097BA00083EBEC /* MWMNightModeController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMNightModeController.m; sourceTree = "<group>"; };
|
|
||||||
F6E2FD461E097BA00083EBEC /* MWMSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMSettingsViewController.h; sourceTree = "<group>"; };
|
|
||||||
F6E2FD471E097BA00083EBEC /* MWMSettingsViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMSettingsViewController.mm; sourceTree = "<group>"; };
|
|
||||||
F6E2FD481E097BA00083EBEC /* MWMTTSLanguageViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMTTSLanguageViewController.h; sourceTree = "<group>"; };
|
|
||||||
F6E2FD491E097BA00083EBEC /* MWMTTSLanguageViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMTTSLanguageViewController.mm; sourceTree = "<group>"; };
|
|
||||||
F6E2FD4A1E097BA00083EBEC /* MWMTTSSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMTTSSettingsViewController.h; sourceTree = "<group>"; };
|
|
||||||
F6E2FD4B1E097BA00083EBEC /* MWMTTSSettingsViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMTTSSettingsViewController.mm; sourceTree = "<group>"; };
|
|
||||||
F6E2FD4C1E097BA00083EBEC /* MWMUnitsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMUnitsController.h; sourceTree = "<group>"; };
|
|
||||||
F6E2FD4D1E097BA00083EBEC /* MWMUnitsController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMUnitsController.mm; sourceTree = "<group>"; };
|
|
||||||
F6FE3C361CC50FFD00A73196 /* MWMPlaceDoesntExistAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlaceDoesntExistAlert.h; sourceTree = "<group>"; };
|
F6FE3C361CC50FFD00A73196 /* MWMPlaceDoesntExistAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlaceDoesntExistAlert.h; sourceTree = "<group>"; };
|
||||||
F6FE3C371CC50FFD00A73196 /* MWMPlaceDoesntExistAlert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = MWMPlaceDoesntExistAlert.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
|
F6FE3C371CC50FFD00A73196 /* MWMPlaceDoesntExistAlert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = MWMPlaceDoesntExistAlert.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
|
||||||
F6FE3C3A1CC5106500A73196 /* MWMPlaceDoesntExistAlert.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMPlaceDoesntExistAlert.xib; sourceTree = "<group>"; };
|
F6FE3C3A1CC5106500A73196 /* MWMPlaceDoesntExistAlert.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMPlaceDoesntExistAlert.xib; sourceTree = "<group>"; };
|
||||||
@@ -1958,11 +1939,26 @@
|
|||||||
2749E5C32E17F736006E73EC /* Model */ = {
|
2749E5C32E17F736006E73EC /* Model */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
279367552E1BE16300AA5C3D /* Settings.swift */,
|
||||||
|
27AF185B2E1DB64B00CD41E2 /* Settings Types */,
|
||||||
270C9C252E16AB6300ABA688 /* Profile.swift */,
|
270C9C252E16AB6300ABA688 /* Profile.swift */,
|
||||||
);
|
);
|
||||||
path = Model;
|
path = Model;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
27AF185B2E1DB64B00CD41E2 /* Settings Types */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
27AF184F2E1DB61500CD41E2 /* VoiceRoutingLanguage.swift */,
|
||||||
|
27AF18512E1DB61F00CD41E2 /* DistanceUnit.swift */,
|
||||||
|
27AF18532E1DB62600CD41E2 /* MobileDataPolicy.swift */,
|
||||||
|
27AF18552E1DB62F00CD41E2 /* PowerSavingMode.swift */,
|
||||||
|
27AF18572E1DB63900CD41E2 /* Appearance.swift */,
|
||||||
|
27AF18592E1DB64400CD41E2 /* AnnouncingSpeedTrapsWhileVoiceRouting.swift */,
|
||||||
|
);
|
||||||
|
path = "Settings Types";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
29B97314FDCFA39411CA2CEA /* Maps */ = {
|
29B97314FDCFA39411CA2CEA /* Maps */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -2232,7 +2228,6 @@
|
|||||||
children = (
|
children = (
|
||||||
340E1EE51E2F614400CE49BF /* LaunchScreen.storyboard */,
|
340E1EE51E2F614400CE49BF /* LaunchScreen.storyboard */,
|
||||||
340E1EE61E2F614400CE49BF /* Main.storyboard */,
|
340E1EE61E2F614400CE49BF /* Main.storyboard */,
|
||||||
340E1EE81E2F614400CE49BF /* Settings.storyboard */,
|
|
||||||
340E1EE91E2F614400CE49BF /* Storyboard.swift */,
|
340E1EE91E2F614400CE49BF /* Storyboard.swift */,
|
||||||
CDB4D4D6222D248900104869 /* CarPlayStoryboard.storyboard */,
|
CDB4D4D6222D248900104869 /* CarPlayStoryboard.storyboard */,
|
||||||
340E1EEA1E2F614400CE49BF /* Welcome.storyboard */,
|
340E1EEA1E2F614400CE49BF /* Welcome.storyboard */,
|
||||||
@@ -3940,40 +3935,13 @@
|
|||||||
F6E2FD361E097BA00083EBEC /* Settings */ = {
|
F6E2FD361E097BA00083EBEC /* Settings */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
279367592E1BE17300AA5C3D /* SettingsView.swift */,
|
||||||
|
27AF184B2E1D5A2700CD41E2 /* SettingsNavigationView.swift */,
|
||||||
272F1F352E0EE00B00FA52EF /* Profile */,
|
272F1F352E0EE00B00FA52EF /* Profile */,
|
||||||
F6E2FD371E097BA00083EBEC /* Cells */,
|
|
||||||
F6E2FD401E097BA00083EBEC /* MWMMobileInternetViewController.h */,
|
|
||||||
F6E2FD411E097BA00083EBEC /* MWMMobileInternetViewController.m */,
|
|
||||||
F6E2FD421E097BA00083EBEC /* MWMNightModeController.h */,
|
|
||||||
F6E2FD431E097BA00083EBEC /* MWMNightModeController.m */,
|
|
||||||
F6E2FD461E097BA00083EBEC /* MWMSettingsViewController.h */,
|
|
||||||
F6E2FD471E097BA00083EBEC /* MWMSettingsViewController.mm */,
|
|
||||||
F6E2FD481E097BA00083EBEC /* MWMTTSLanguageViewController.h */,
|
|
||||||
F6E2FD491E097BA00083EBEC /* MWMTTSLanguageViewController.mm */,
|
|
||||||
F6E2FD4A1E097BA00083EBEC /* MWMTTSSettingsViewController.h */,
|
|
||||||
F6E2FD4B1E097BA00083EBEC /* MWMTTSSettingsViewController.mm */,
|
|
||||||
F6E2FD4C1E097BA00083EBEC /* MWMUnitsController.h */,
|
|
||||||
F6E2FD4D1E097BA00083EBEC /* MWMUnitsController.mm */,
|
|
||||||
3DEE1AE921F72CD300054A91 /* MWMPowerManagmentViewController.h */,
|
|
||||||
3DEE1AEA21F72CD300054A91 /* MWMPowerManagmentViewController.mm */,
|
|
||||||
477219042243E79500E5B227 /* DrivingOptionsViewController.swift */,
|
|
||||||
47DF72BA225356BF0004AB10 /* DrivingOptions.storyboard */,
|
|
||||||
);
|
);
|
||||||
path = Settings;
|
path = Settings;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
F6E2FD371E097BA00083EBEC /* Cells */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
ED63CEB62BDF8F9C006155C4 /* SettingsTableViewiCloudSwitchCell.swift */,
|
|
||||||
F6E2FD381E097BA00083EBEC /* SettingsTableViewLinkCell.swift */,
|
|
||||||
F6E2FD391E097BA00083EBEC /* SettingsTableViewSelectableCell.swift */,
|
|
||||||
F6E2FD3A1E097BA00083EBEC /* SettingsTableViewSwitchCell.swift */,
|
|
||||||
ED8270EF2C2071A3005966DA /* SettingsTableViewDetailedSwitchCell.swift */,
|
|
||||||
);
|
|
||||||
path = Cells;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
F6FE3C351CC50FDF00A73196 /* PlaceDoesntExist */ = {
|
F6FE3C351CC50FDF00A73196 /* PlaceDoesntExist */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -4341,7 +4309,6 @@
|
|||||||
470E1675252AD7F2002D201A /* BookmarksListInfoViewController.xib in Resources */,
|
470E1675252AD7F2002D201A /* BookmarksListInfoViewController.xib in Resources */,
|
||||||
F6E2FE7F1E097BA00083EBEC /* MWMPlacePageOpeningHoursCell.xib in Resources */,
|
F6E2FE7F1E097BA00083EBEC /* MWMPlacePageOpeningHoursCell.xib in Resources */,
|
||||||
34AB66711FC5AA330078E451 /* TransportTransitTrain.xib in Resources */,
|
34AB66711FC5AA330078E451 /* TransportTransitTrain.xib in Resources */,
|
||||||
47DF72BB225356BF0004AB10 /* DrivingOptions.storyboard in Resources */,
|
|
||||||
F6E2FE851E097BA00083EBEC /* MWMPlacePageOpeningHoursWeekDayView.xib in Resources */,
|
F6E2FE851E097BA00083EBEC /* MWMPlacePageOpeningHoursWeekDayView.xib in Resources */,
|
||||||
6741A9601BF340DE002C974C /* MWMRoutingDisclaimerAlert.xib in Resources */,
|
6741A9601BF340DE002C974C /* MWMRoutingDisclaimerAlert.xib in Resources */,
|
||||||
B3E3B4FD20D463B700DA8C13 /* BMCCategoriesHeader.xib in Resources */,
|
B3E3B4FD20D463B700DA8C13 /* BMCCategoriesHeader.xib in Resources */,
|
||||||
@@ -4377,7 +4344,6 @@
|
|||||||
6741A94D1BF340DE002C974C /* resources-xxhdpi_light in Resources */,
|
6741A94D1BF340DE002C974C /* resources-xxhdpi_light in Resources */,
|
||||||
3404F49E2028A2430090E401 /* BMCActionsCell.xib in Resources */,
|
3404F49E2028A2430090E401 /* BMCActionsCell.xib in Resources */,
|
||||||
6741A9551BF340DE002C974C /* resources-xxhdpi_dark in Resources */,
|
6741A9551BF340DE002C974C /* resources-xxhdpi_dark in Resources */,
|
||||||
340E1EF81E2F614400CE49BF /* Settings.storyboard in Resources */,
|
|
||||||
44360A112A7D35440016F412 /* TransportRuler.xib in Resources */,
|
44360A112A7D35440016F412 /* TransportRuler.xib in Resources */,
|
||||||
6741A9421BF340DE002C974C /* sound-strings in Resources */,
|
6741A9421BF340DE002C974C /* sound-strings in Resources */,
|
||||||
F69018BD1E9F7CB600B3C10B /* MWMAutoupdateController.xib in Resources */,
|
F69018BD1E9F7CB600B3C10B /* MWMAutoupdateController.xib in Resources */,
|
||||||
@@ -4422,7 +4388,6 @@
|
|||||||
34D3B04F1E38A20C004100F9 /* Bundle+Init.swift in Sources */,
|
34D3B04F1E38A20C004100F9 /* Bundle+Init.swift in Sources */,
|
||||||
34AB666E1FC5AA330078E451 /* TransportTransitStepsCollectionView.swift in Sources */,
|
34AB666E1FC5AA330078E451 /* TransportTransitStepsCollectionView.swift in Sources */,
|
||||||
993DF11E23F6BDB100AC231A /* UITextViewRenderer.swift in Sources */,
|
993DF11E23F6BDB100AC231A /* UITextViewRenderer.swift in Sources */,
|
||||||
F6E2FF5A1E097BA00083EBEC /* MWMNightModeController.m in Sources */,
|
|
||||||
471A7BB8247FE3C300A0D4C1 /* URL+Query.swift in Sources */,
|
471A7BB8247FE3C300A0D4C1 /* URL+Query.swift in Sources */,
|
||||||
47F86D0120C93D8D00FEE291 /* TabViewController.swift in Sources */,
|
47F86D0120C93D8D00FEE291 /* TabViewController.swift in Sources */,
|
||||||
99536113235DB86C008B218F /* InsetsLabel.swift in Sources */,
|
99536113235DB86C008B218F /* InsetsLabel.swift in Sources */,
|
||||||
@@ -4515,7 +4480,6 @@
|
|||||||
340475621E081A4600C92850 /* MWMNetworkPolicy+UI.m in Sources */,
|
340475621E081A4600C92850 /* MWMNetworkPolicy+UI.m in Sources */,
|
||||||
F6E2FEE51E097BA00083EBEC /* MWMSearchNoResults.m in Sources */,
|
F6E2FEE51E097BA00083EBEC /* MWMSearchNoResults.m in Sources */,
|
||||||
ED5E02142D8B17B600A5CC7B /* ModalPresentationStepsController.swift in Sources */,
|
ED5E02142D8B17B600A5CC7B /* ModalPresentationStepsController.swift in Sources */,
|
||||||
F6E2FF631E097BA00083EBEC /* MWMTTSLanguageViewController.mm in Sources */,
|
|
||||||
4715273524907F8200E91BBA /* BookmarkColorViewController.swift in Sources */,
|
4715273524907F8200E91BBA /* BookmarkColorViewController.swift in Sources */,
|
||||||
47E3C7292111E614008B3B27 /* FadeInAnimatedTransitioning.swift in Sources */,
|
47E3C7292111E614008B3B27 /* FadeInAnimatedTransitioning.swift in Sources */,
|
||||||
ED79A5D42BDF8D6100952D1F /* MetadataItem.swift in Sources */,
|
ED79A5D42BDF8D6100952D1F /* MetadataItem.swift in Sources */,
|
||||||
@@ -4560,6 +4524,7 @@
|
|||||||
B33D21AF20DAF9F000BAD749 /* Toast.swift in Sources */,
|
B33D21AF20DAF9F000BAD749 /* Toast.swift in Sources */,
|
||||||
6741A9D41BF340DE002C974C /* MWMAlertViewController.mm in Sources */,
|
6741A9D41BF340DE002C974C /* MWMAlertViewController.mm in Sources */,
|
||||||
34D3B0181E389D05004100F9 /* EditorAdditionalNamePlaceholderTableViewCell.swift in Sources */,
|
34D3B0181E389D05004100F9 /* EditorAdditionalNamePlaceholderTableViewCell.swift in Sources */,
|
||||||
|
27AF18562E1DB63000CD41E2 /* PowerSavingMode.swift in Sources */,
|
||||||
993DF12223F6BDB100AC231A /* UINavigationItemRenderer.swift in Sources */,
|
993DF12223F6BDB100AC231A /* UINavigationItemRenderer.swift in Sources */,
|
||||||
993DF12B23F6BDB100AC231A /* StyleManager.swift in Sources */,
|
993DF12B23F6BDB100AC231A /* StyleManager.swift in Sources */,
|
||||||
ED43B8BD2C12063500D07BAA /* DocumentPicker.swift in Sources */,
|
ED43B8BD2C12063500D07BAA /* DocumentPicker.swift in Sources */,
|
||||||
@@ -4567,6 +4532,7 @@
|
|||||||
47B9065521C7FA400079C85E /* NSString+MD5.m in Sources */,
|
47B9065521C7FA400079C85E /* NSString+MD5.m in Sources */,
|
||||||
ED5BAF4B2D688F5B0088D7B1 /* SearchOnMapHeaderView.swift in Sources */,
|
ED5BAF4B2D688F5B0088D7B1 /* SearchOnMapHeaderView.swift in Sources */,
|
||||||
CDB4D5022231412900104869 /* SettingsTemplateBuilder.swift in Sources */,
|
CDB4D5022231412900104869 /* SettingsTemplateBuilder.swift in Sources */,
|
||||||
|
27AF18522E1DB62000CD41E2 /* DistanceUnit.swift in Sources */,
|
||||||
993DF10A23F6BDB100AC231A /* UISwitchRenderer.swift in Sources */,
|
993DF10A23F6BDB100AC231A /* UISwitchRenderer.swift in Sources */,
|
||||||
99C9642C2428C0F700E41723 /* PlacePageHeaderBuilder.swift in Sources */,
|
99C9642C2428C0F700E41723 /* PlacePageHeaderBuilder.swift in Sources */,
|
||||||
99C9642B2428C0F700E41723 /* PlacePageHeaderViewController.swift in Sources */,
|
99C9642B2428C0F700E41723 /* PlacePageHeaderViewController.swift in Sources */,
|
||||||
@@ -4578,10 +4544,7 @@
|
|||||||
49AB95982CB2FE5300468EA2 /* UIButton+ImagePadding.swift in Sources */,
|
49AB95982CB2FE5300468EA2 /* UIButton+ImagePadding.swift in Sources */,
|
||||||
99A906E523F6F7030005872B /* ActionBarViewController.swift in Sources */,
|
99A906E523F6F7030005872B /* ActionBarViewController.swift in Sources */,
|
||||||
47B9065421C7FA400079C85E /* UIImageView+WebImage.m in Sources */,
|
47B9065421C7FA400079C85E /* UIImageView+WebImage.m in Sources */,
|
||||||
F6E2FF481E097BA00083EBEC /* SettingsTableViewSelectableCell.swift in Sources */,
|
|
||||||
ED63CEB92BDF8F9D006155C4 /* SettingsTableViewiCloudSwitchCell.swift in Sources */,
|
|
||||||
47CA68D4250043C000671019 /* BookmarksListPresenter.swift in Sources */,
|
47CA68D4250043C000671019 /* BookmarksListPresenter.swift in Sources */,
|
||||||
F6E2FF451E097BA00083EBEC /* SettingsTableViewLinkCell.swift in Sources */,
|
|
||||||
34C9BD0A1C6DBCDA000DC38D /* MWMNavigationController.m in Sources */,
|
34C9BD0A1C6DBCDA000DC38D /* MWMNavigationController.m in Sources */,
|
||||||
ED1080A72B791CFE0023F27E /* SocialMediaCollectionViewHeader.swift in Sources */,
|
ED1080A72B791CFE0023F27E /* SocialMediaCollectionViewHeader.swift in Sources */,
|
||||||
F6E2FE311E097BA00083EBEC /* MWMStreetEditorViewController.mm in Sources */,
|
F6E2FE311E097BA00083EBEC /* MWMStreetEditorViewController.mm in Sources */,
|
||||||
@@ -4640,6 +4603,7 @@
|
|||||||
CDCA2745223FCFD200167D87 /* SearchResultInfo.swift in Sources */,
|
CDCA2745223FCFD200167D87 /* SearchResultInfo.swift in Sources */,
|
||||||
349A13831DEC138C00C7DB60 /* MWMMobileInternetAlert.m in Sources */,
|
349A13831DEC138C00C7DB60 /* MWMMobileInternetAlert.m in Sources */,
|
||||||
6741A9EC1BF340DE002C974C /* MWMCircularProgress.m in Sources */,
|
6741A9EC1BF340DE002C974C /* MWMCircularProgress.m in Sources */,
|
||||||
|
27AF184C2E1D5B2D00CD41E2 /* SettingsNavigationView.swift in Sources */,
|
||||||
993DF11923F6BDB100AC231A /* UITextFieldRenderer.swift in Sources */,
|
993DF11923F6BDB100AC231A /* UITextFieldRenderer.swift in Sources */,
|
||||||
272F1F462E0EEF9400FA52EF /* SafariView.swift in Sources */,
|
272F1F462E0EEF9400FA52EF /* SafariView.swift in Sources */,
|
||||||
340475591E081A4600C92850 /* WebViewController.m in Sources */,
|
340475591E081A4600C92850 /* WebViewController.m in Sources */,
|
||||||
@@ -4651,12 +4615,13 @@
|
|||||||
99F3EB1123F418C900C713F8 /* PlacePageBuilder.swift in Sources */,
|
99F3EB1123F418C900C713F8 /* PlacePageBuilder.swift in Sources */,
|
||||||
4735008A23A83CF700661A95 /* DownloadedMapsDataSource.swift in Sources */,
|
4735008A23A83CF700661A95 /* DownloadedMapsDataSource.swift in Sources */,
|
||||||
CD9AD96F2281DF3600EC174A /* CategoryInfo.swift in Sources */,
|
CD9AD96F2281DF3600EC174A /* CategoryInfo.swift in Sources */,
|
||||||
3DEE1AEB21F72CD300054A91 /* MWMPowerManagmentViewController.mm in Sources */,
|
|
||||||
34AB66771FC5AA330078E451 /* TransportRoutePreviewStatus.swift in Sources */,
|
34AB66771FC5AA330078E451 /* TransportRoutePreviewStatus.swift in Sources */,
|
||||||
34D3AFEA1E378AF1004100F9 /* UINib+Init.swift in Sources */,
|
34D3AFEA1E378AF1004100F9 /* UINib+Init.swift in Sources */,
|
||||||
34AB663E1FC5AA330078E451 /* RouteManagerTransitioning.swift in Sources */,
|
34AB663E1FC5AA330078E451 /* RouteManagerTransitioning.swift in Sources */,
|
||||||
993DF0CB23F6BD0600AC231A /* ElevationDetailsRouter.swift in Sources */,
|
993DF0CB23F6BD0600AC231A /* ElevationDetailsRouter.swift in Sources */,
|
||||||
EDB71D8C2D8474A0004A6A7F /* CornerRadius.swift in Sources */,
|
EDB71D8C2D8474A0004A6A7F /* CornerRadius.swift in Sources */,
|
||||||
|
27AF18502E1DB61600CD41E2 /* VoiceRoutingLanguage.swift in Sources */,
|
||||||
|
279367562E1BE16300AA5C3D /* Settings.swift in Sources */,
|
||||||
47CA68FC250F99E500671019 /* BookmarksListCellStrategy.swift in Sources */,
|
47CA68FC250F99E500671019 /* BookmarksListCellStrategy.swift in Sources */,
|
||||||
34AB662F1FC5AA330078E451 /* RouteManagerPresentationController.swift in Sources */,
|
34AB662F1FC5AA330078E451 /* RouteManagerPresentationController.swift in Sources */,
|
||||||
993F5508237C622700545511 /* DeepLinkRouteStrategyAdapter.mm in Sources */,
|
993F5508237C622700545511 /* DeepLinkRouteStrategyAdapter.mm in Sources */,
|
||||||
@@ -4691,15 +4656,12 @@
|
|||||||
993DF12D23F6BDB100AC231A /* GlobalStyleSheet.swift in Sources */,
|
993DF12D23F6BDB100AC231A /* GlobalStyleSheet.swift in Sources */,
|
||||||
F6E2FF361E097BA00083EBEC /* MWMSearchSuggestionCell.mm in Sources */,
|
F6E2FF361E097BA00083EBEC /* MWMSearchSuggestionCell.mm in Sources */,
|
||||||
3472B5CF200F4A2B00DC6CD5 /* BackgroundFetchTask.swift in Sources */,
|
3472B5CF200F4A2B00DC6CD5 /* BackgroundFetchTask.swift in Sources */,
|
||||||
477219052243E79500E5B227 /* DrivingOptionsViewController.swift in Sources */,
|
|
||||||
CDB4D4E4222E8FF600104869 /* CarPlayService.swift in Sources */,
|
CDB4D4E4222E8FF600104869 /* CarPlayService.swift in Sources */,
|
||||||
F6E2FF661E097BA00083EBEC /* MWMTTSSettingsViewController.mm in Sources */,
|
|
||||||
3454D7C21E07F045004AF2AD /* NSString+Categories.m in Sources */,
|
3454D7C21E07F045004AF2AD /* NSString+Categories.m in Sources */,
|
||||||
ED2D74662D1435A600660FBF /* LiveActivityManager.swift in Sources */,
|
ED2D74662D1435A600660FBF /* LiveActivityManager.swift in Sources */,
|
||||||
34E7761F1F14DB48003040B3 /* PlacePageArea.swift in Sources */,
|
34E7761F1F14DB48003040B3 /* PlacePageArea.swift in Sources */,
|
||||||
ED79A5D82BDF8D6100952D1F /* LocalDirectoryMonitor.swift in Sources */,
|
ED79A5D82BDF8D6100952D1F /* LocalDirectoryMonitor.swift in Sources */,
|
||||||
EDC4E34B2C5D1BEF009286A2 /* RecentlyDeletedCategoriesViewController.swift in Sources */,
|
EDC4E34B2C5D1BEF009286A2 /* RecentlyDeletedCategoriesViewController.swift in Sources */,
|
||||||
ED8270F02C2071A3005966DA /* SettingsTableViewDetailedSwitchCell.swift in Sources */,
|
|
||||||
4728F69322CF89A400E00028 /* GradientView.swift in Sources */,
|
4728F69322CF89A400E00028 /* GradientView.swift in Sources */,
|
||||||
F6381BF61CD12045004CA943 /* LocaleTranslator.mm in Sources */,
|
F6381BF61CD12045004CA943 /* LocaleTranslator.mm in Sources */,
|
||||||
9917D17F2397B1D600A7E06E /* IPadModalPresentationController.swift in Sources */,
|
9917D17F2397B1D600A7E06E /* IPadModalPresentationController.swift in Sources */,
|
||||||
@@ -4716,12 +4678,13 @@
|
|||||||
F6E2FE821E097BA00083EBEC /* MWMPlacePageOpeningHoursDayView.m in Sources */,
|
F6E2FE821E097BA00083EBEC /* MWMPlacePageOpeningHoursDayView.m in Sources */,
|
||||||
F6E2FD6B1E097BA00083EBEC /* MWMMapDownloaderSubplaceTableViewCell.m in Sources */,
|
F6E2FD6B1E097BA00083EBEC /* MWMMapDownloaderSubplaceTableViewCell.m in Sources */,
|
||||||
CDCA27842245090900167D87 /* ListenerContainer.swift in Sources */,
|
CDCA27842245090900167D87 /* ListenerContainer.swift in Sources */,
|
||||||
|
27AF18582E1DB63A00CD41E2 /* Appearance.swift in Sources */,
|
||||||
47E3C7252111E41B008B3B27 /* DimmedModalPresentationController.swift in Sources */,
|
47E3C7252111E41B008B3B27 /* DimmedModalPresentationController.swift in Sources */,
|
||||||
3472B5CB200F43EF00DC6CD5 /* BackgroundFetchScheduler.swift in Sources */,
|
3472B5CB200F43EF00DC6CD5 /* BackgroundFetchScheduler.swift in Sources */,
|
||||||
34FE5A6F1F18F30F00BCA729 /* TrafficButtonArea.swift in Sources */,
|
34FE5A6F1F18F30F00BCA729 /* TrafficButtonArea.swift in Sources */,
|
||||||
993DF10D23F6BDB100AC231A /* UIPageControlRenderer.swift in Sources */,
|
993DF10D23F6BDB100AC231A /* UIPageControlRenderer.swift in Sources */,
|
||||||
FA8E808925F412E2002A1434 /* FirstSession.mm in Sources */,
|
FA8E808925F412E2002A1434 /* FirstSession.mm in Sources */,
|
||||||
F6E2FF691E097BA00083EBEC /* MWMUnitsController.mm in Sources */,
|
2793675A2E1BE17300AA5C3D /* SettingsView.swift in Sources */,
|
||||||
6741AA031BF340DE002C974C /* MWMActivityViewController.mm in Sources */,
|
6741AA031BF340DE002C974C /* MWMActivityViewController.mm in Sources */,
|
||||||
ED808D0F2C38407800D52585 /* CircleImageButton.swift in Sources */,
|
ED808D0F2C38407800D52585 /* CircleImageButton.swift in Sources */,
|
||||||
CDCA27382237F1BD00167D87 /* BookmarkInfo.swift in Sources */,
|
CDCA27382237F1BD00167D87 /* BookmarkInfo.swift in Sources */,
|
||||||
@@ -4754,6 +4717,7 @@
|
|||||||
ED70D5922D539A2500738C1E /* PlaceholderView.swift in Sources */,
|
ED70D5922D539A2500738C1E /* PlaceholderView.swift in Sources */,
|
||||||
ED70D5932D539A2500738C1E /* SearchOnMapManager.swift in Sources */,
|
ED70D5932D539A2500738C1E /* SearchOnMapManager.swift in Sources */,
|
||||||
3454D7BC1E07F045004AF2AD /* CLLocation+Mercator.mm in Sources */,
|
3454D7BC1E07F045004AF2AD /* CLLocation+Mercator.mm in Sources */,
|
||||||
|
27AF185A2E1DB64500CD41E2 /* AnnouncingSpeedTrapsWhileVoiceRouting.swift in Sources */,
|
||||||
47E3C7272111E5A8008B3B27 /* AlertPresentationController.swift in Sources */,
|
47E3C7272111E5A8008B3B27 /* AlertPresentationController.swift in Sources */,
|
||||||
CDCA27812243F59800167D87 /* CarPlayRouter.swift in Sources */,
|
CDCA27812243F59800167D87 /* CarPlayRouter.swift in Sources */,
|
||||||
34F5E0D41E3F254800B1C415 /* UIView+Hierarchy.swift in Sources */,
|
34F5E0D41E3F254800B1C415 /* UIView+Hierarchy.swift in Sources */,
|
||||||
@@ -4764,7 +4728,6 @@
|
|||||||
47CA68D12500435E00671019 /* BookmarksListViewController.swift in Sources */,
|
47CA68D12500435E00671019 /* BookmarksListViewController.swift in Sources */,
|
||||||
34AB66321FC5AA330078E451 /* RouteManagerHeaderView.swift in Sources */,
|
34AB66321FC5AA330078E451 /* RouteManagerHeaderView.swift in Sources */,
|
||||||
347040301EA6470700038379 /* BorderedButton.swift in Sources */,
|
347040301EA6470700038379 /* BorderedButton.swift in Sources */,
|
||||||
F6E2FF4B1E097BA00083EBEC /* SettingsTableViewSwitchCell.swift in Sources */,
|
|
||||||
993DF12623F6BDB100AC231A /* SwizzleStyle.m in Sources */,
|
993DF12623F6BDB100AC231A /* SwizzleStyle.m in Sources */,
|
||||||
993DF10E23F6BDB100AC231A /* UIButtonRenderer.swift in Sources */,
|
993DF10E23F6BDB100AC231A /* UIButtonRenderer.swift in Sources */,
|
||||||
99514BBB23E82B450085D3A7 /* ElevationProfileBuilder.swift in Sources */,
|
99514BBB23E82B450085D3A7 /* ElevationProfileBuilder.swift in Sources */,
|
||||||
@@ -4842,7 +4805,6 @@
|
|||||||
47E3C7312111F4C2008B3B27 /* CoverVerticalPresentationAnimator.swift in Sources */,
|
47E3C7312111F4C2008B3B27 /* CoverVerticalPresentationAnimator.swift in Sources */,
|
||||||
99E2B0122368A8C700FFABC5 /* MWMCategory+PlacesCountTitle.swift in Sources */,
|
99E2B0122368A8C700FFABC5 /* MWMCategory+PlacesCountTitle.swift in Sources */,
|
||||||
F6D67CDC2062B9C00032FD38 /* BCCreateCategoryAlert.swift in Sources */,
|
F6D67CDC2062B9C00032FD38 /* BCCreateCategoryAlert.swift in Sources */,
|
||||||
F6E2FF601E097BA00083EBEC /* MWMSettingsViewController.mm in Sources */,
|
|
||||||
F6E2FE2B1E097BA00083EBEC /* MWMStreetEditorEditTableViewCell.m in Sources */,
|
F6E2FE2B1E097BA00083EBEC /* MWMStreetEditorEditTableViewCell.m in Sources */,
|
||||||
34AB66891FC5AA330078E451 /* NavigationControlView.swift in Sources */,
|
34AB66891FC5AA330078E451 /* NavigationControlView.swift in Sources */,
|
||||||
479EE94A2292FB03009DEBA6 /* ActivityIndicator.swift in Sources */,
|
479EE94A2292FB03009DEBA6 /* ActivityIndicator.swift in Sources */,
|
||||||
@@ -4861,7 +4823,6 @@
|
|||||||
34AB39C21D2BD8310021857D /* MWMStopButton.m in Sources */,
|
34AB39C21D2BD8310021857D /* MWMStopButton.m in Sources */,
|
||||||
3488B01A1E9D0B230068AFD8 /* UIColor+Modifications.swift in Sources */,
|
3488B01A1E9D0B230068AFD8 /* UIColor+Modifications.swift in Sources */,
|
||||||
6741AA281BF340DE002C974C /* MWMAlert.mm in Sources */,
|
6741AA281BF340DE002C974C /* MWMAlert.mm in Sources */,
|
||||||
F6E2FF571E097BA00083EBEC /* MWMMobileInternetViewController.m in Sources */,
|
|
||||||
993DF11323F6BDB100AC231A /* UITableViewRenderer.swift in Sources */,
|
993DF11323F6BDB100AC231A /* UITableViewRenderer.swift in Sources */,
|
||||||
34AB66261FC5AA330078E451 /* RouteManagerDimView.swift in Sources */,
|
34AB66261FC5AA330078E451 /* RouteManagerDimView.swift in Sources */,
|
||||||
EDFDFB4A2B722A310013A44C /* SocialMediaCollectionViewCell.swift in Sources */,
|
EDFDFB4A2B722A310013A44C /* SocialMediaCollectionViewCell.swift in Sources */,
|
||||||
@@ -4872,6 +4833,7 @@
|
|||||||
CDCA278622451F5000167D87 /* RouteInfo.swift in Sources */,
|
CDCA278622451F5000167D87 /* RouteInfo.swift in Sources */,
|
||||||
3467CEB6202C6FA900D3C670 /* BMCNotificationsCell.swift in Sources */,
|
3467CEB6202C6FA900D3C670 /* BMCNotificationsCell.swift in Sources */,
|
||||||
337F98B221D3BAE600C8AC27 /* SearchCategoriesViewController.swift in Sources */,
|
337F98B221D3BAE600C8AC27 /* SearchCategoriesViewController.swift in Sources */,
|
||||||
|
27AF18542E1DB62700CD41E2 /* MobileDataPolicy.swift in Sources */,
|
||||||
F6E2FE0A1E097BA00083EBEC /* MWMOpeningHoursDeleteScheduleTableViewCell.mm in Sources */,
|
F6E2FE0A1E097BA00083EBEC /* MWMOpeningHoursDeleteScheduleTableViewCell.mm in Sources */,
|
||||||
3454D7DA1E07F045004AF2AD /* UILabel+RuntimeAttributes.m in Sources */,
|
3454D7DA1E07F045004AF2AD /* UILabel+RuntimeAttributes.m in Sources */,
|
||||||
34AB66531FC5AA330078E451 /* MWMiPadRoutePreview.m in Sources */,
|
34AB66531FC5AA330078E451 /* MWMiPadRoutePreview.m in Sources */,
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import Network
|
import Network
|
||||||
import OSMEditor
|
import OSMEditor
|
||||||
|
|
||||||
|
|
||||||
/// The OpenStreetMap profile
|
/// The OpenStreetMap profile
|
||||||
@objc class Profile: NSObject {
|
@objc class Profile: NSObject {
|
||||||
// MARK: Properties
|
// MARK: Properties
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
extension Settings {
|
||||||
|
/// The announcing of speed traps for voice guidance during routing
|
||||||
|
@objc enum AnnouncingSpeedTrapsWhileVoiceRouting: Int, Codable, CaseIterable, Identifiable {
|
||||||
|
case always = 1
|
||||||
|
case onlyWhenTooFast = 2
|
||||||
|
case never = 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// MARK: Properties
|
||||||
|
|
||||||
|
/// The id
|
||||||
|
var id: Self { self }
|
||||||
|
|
||||||
|
|
||||||
|
/// The description text
|
||||||
|
var description: String {
|
||||||
|
switch self {
|
||||||
|
case .always:
|
||||||
|
return String(localized: "pref_tts_speedcams_always")
|
||||||
|
case .onlyWhenTooFast:
|
||||||
|
return String(localized: "pref_tts_speedcams_auto")
|
||||||
|
case .never:
|
||||||
|
return String(localized: "pref_tts_speedcams_never")
|
||||||
|
default:
|
||||||
|
return String()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
30
iphone/Maps/Model/Settings Types/Appearance.swift
Normal file
30
iphone/Maps/Model/Settings Types/Appearance.swift
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
extension Settings {
|
||||||
|
/// The visual appeareance
|
||||||
|
@objc enum Appearance: Int, Codable, CaseIterable, Identifiable {
|
||||||
|
case auto = 1
|
||||||
|
case light = 2
|
||||||
|
case dark = 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// MARK: Properties
|
||||||
|
|
||||||
|
/// The id
|
||||||
|
var id: Self { self }
|
||||||
|
|
||||||
|
|
||||||
|
/// The description text
|
||||||
|
var description: String {
|
||||||
|
switch self {
|
||||||
|
case .auto:
|
||||||
|
return String(localized: "auto")
|
||||||
|
case .light:
|
||||||
|
return String(localized: "pref_appearance_light")
|
||||||
|
case .dark:
|
||||||
|
return String(localized: "pref_appearance_dark")
|
||||||
|
default:
|
||||||
|
return String()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
27
iphone/Maps/Model/Settings Types/DistanceUnit.swift
Normal file
27
iphone/Maps/Model/Settings Types/DistanceUnit.swift
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
extension Settings {
|
||||||
|
/// The unit system used for distances
|
||||||
|
@objc enum DistanceUnit: Int, Codable, CaseIterable, Identifiable {
|
||||||
|
case metric = 0
|
||||||
|
case imperial = 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// MARK: Properties
|
||||||
|
|
||||||
|
/// The id
|
||||||
|
var id: Self { self }
|
||||||
|
|
||||||
|
|
||||||
|
/// The description text
|
||||||
|
var description: String {
|
||||||
|
switch self {
|
||||||
|
case .metric:
|
||||||
|
return String(localized: "kilometres")
|
||||||
|
case .imperial:
|
||||||
|
return String(localized: "miles")
|
||||||
|
default:
|
||||||
|
return String()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
30
iphone/Maps/Model/Settings Types/MobileDataPolicy.swift
Normal file
30
iphone/Maps/Model/Settings Types/MobileDataPolicy.swift
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
extension Settings {
|
||||||
|
/// The mobile data policy
|
||||||
|
@objc enum MobileDataPolicy: Int, Codable, CaseIterable, Identifiable {
|
||||||
|
case always = 1
|
||||||
|
case ask = 2
|
||||||
|
case never = 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// MARK: Properties
|
||||||
|
|
||||||
|
/// The id
|
||||||
|
var id: Self { self }
|
||||||
|
|
||||||
|
|
||||||
|
/// The description text
|
||||||
|
var description: String {
|
||||||
|
switch self {
|
||||||
|
case .always:
|
||||||
|
return String(localized: "mobile_data_option_always")
|
||||||
|
case .ask:
|
||||||
|
return String(localized: "mobile_data_option_ask")
|
||||||
|
case .never:
|
||||||
|
return String(localized: "mobile_data_option_never")
|
||||||
|
default:
|
||||||
|
return String()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
30
iphone/Maps/Model/Settings Types/PowerSavingMode.swift
Normal file
30
iphone/Maps/Model/Settings Types/PowerSavingMode.swift
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
extension Settings {
|
||||||
|
/// The power saving mode
|
||||||
|
@objc enum PowerSavingMode: Int, Codable, CaseIterable, Identifiable {
|
||||||
|
case auto = 1
|
||||||
|
case maximum = 2
|
||||||
|
case never = 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// MARK: Properties
|
||||||
|
|
||||||
|
/// The id
|
||||||
|
var id: Self { self }
|
||||||
|
|
||||||
|
|
||||||
|
/// The description text
|
||||||
|
var description: String {
|
||||||
|
switch self {
|
||||||
|
case .auto:
|
||||||
|
return String(localized: "power_managment_setting_auto")
|
||||||
|
case .maximum:
|
||||||
|
return String(localized: "power_managment_setting_manual_max")
|
||||||
|
case .never:
|
||||||
|
return String(localized: "power_managment_setting_never")
|
||||||
|
default:
|
||||||
|
return String()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
31
iphone/Maps/Model/Settings Types/VoiceRoutingLanguage.swift
Normal file
31
iphone/Maps/Model/Settings Types/VoiceRoutingLanguage.swift
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
extension Settings {
|
||||||
|
/// A language used for voice guidance during routing
|
||||||
|
struct VoiceRoutingLanguage: Codable, Identifiable {
|
||||||
|
// MARK: Properties
|
||||||
|
|
||||||
|
/// The id
|
||||||
|
var id: String
|
||||||
|
|
||||||
|
|
||||||
|
/// The localized name
|
||||||
|
var localizedName: String
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// MARK: - Comparable
|
||||||
|
extension Settings.VoiceRoutingLanguage: Equatable {
|
||||||
|
static func == (lhs: Settings.VoiceRoutingLanguage, rhs: Settings.VoiceRoutingLanguage) -> Bool {
|
||||||
|
return lhs.id == rhs.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// MARK: - Comparable
|
||||||
|
extension Settings.VoiceRoutingLanguage: Comparable {
|
||||||
|
static func < (lhs: Settings.VoiceRoutingLanguage, rhs: Settings.VoiceRoutingLanguage) -> Bool {
|
||||||
|
return lhs.localizedName.localizedCaseInsensitiveCompare(rhs.localizedName) == .orderedAscending
|
||||||
|
}
|
||||||
|
}
|
||||||
362
iphone/Maps/Model/Settings.swift
Normal file
362
iphone/Maps/Model/Settings.swift
Normal file
@@ -0,0 +1,362 @@
|
|||||||
|
import Combine
|
||||||
|
|
||||||
|
/// The settings
|
||||||
|
@objc class Settings: NSObject {
|
||||||
|
// MARK: Properties
|
||||||
|
|
||||||
|
/// Key for storing if the sync beta alert has been shown in the user defaults
|
||||||
|
static private let userDefaultsKeyHasShownSyncBetaAlert = "kUDDidShowICloudSynchronizationEnablingAlert"
|
||||||
|
|
||||||
|
|
||||||
|
/// The current distance unit
|
||||||
|
static var distanceUnit: DistanceUnit {
|
||||||
|
get {
|
||||||
|
if SettingsBridge.measurementUnits() == .imperial {
|
||||||
|
return .imperial
|
||||||
|
} else {
|
||||||
|
return .metric
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
if newValue == .imperial {
|
||||||
|
SettingsBridge.setMeasurementUnits(.imperial)
|
||||||
|
} else {
|
||||||
|
SettingsBridge.setMeasurementUnits(.metric)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// If zoom buttons should be displayed
|
||||||
|
@objc static var hasZoomButtons: Bool {
|
||||||
|
get {
|
||||||
|
return SettingsBridge.zoomButtonsEnabled()
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
SettingsBridge.setZoomButtonsEnabled(newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// If 3D buildings should be displayed
|
||||||
|
@objc static var has3dBuildings: Bool {
|
||||||
|
get {
|
||||||
|
return SettingsBridge.buildings3dViewEnabled()
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
SettingsBridge.setBuildings3dViewEnabled(newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// If automatic map downloads should be enabled
|
||||||
|
@objc static var hasAutomaticDownload: Bool {
|
||||||
|
get {
|
||||||
|
return SettingsBridge.autoDownloadEnabled()
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
SettingsBridge.setAutoDownloadEnabled(newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// The current mobile data policy
|
||||||
|
@objc static var mobileDataPolicy: MobileDataPolicy {
|
||||||
|
get {
|
||||||
|
let networkPolicyPermission = NetworkPolicy.shared().permission
|
||||||
|
if networkPolicyPermission == .always {
|
||||||
|
return .always
|
||||||
|
} else if networkPolicyPermission == .never {
|
||||||
|
return .never
|
||||||
|
} else {
|
||||||
|
return .ask
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
if newValue == .always {
|
||||||
|
NetworkPolicy.shared().permission = .always
|
||||||
|
} else if newValue == .never {
|
||||||
|
NetworkPolicy.shared().permission = .never
|
||||||
|
} else {
|
||||||
|
NetworkPolicy.shared().permission = .ask
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// The current power saving mode
|
||||||
|
@objc static var powerSavingMode: PowerSavingMode {
|
||||||
|
get {
|
||||||
|
return PowerSavingMode(rawValue: SettingsBridge.powerManagement()) ?? .never
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
SettingsBridge.setPowerManagement(newValue.rawValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// If an increased font size should be used for map labels
|
||||||
|
@objc static var hasIncreasedFontsize: Bool {
|
||||||
|
get {
|
||||||
|
return SettingsBridge.largeFontSize()
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
SettingsBridge.setLargeFontSize(newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// If names should be transliterated to Latin
|
||||||
|
@objc static var shouldTransliterateToLatin: Bool {
|
||||||
|
get {
|
||||||
|
return SettingsBridge.transliteration()
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
SettingsBridge.setTransliteration(newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// If the compass should be calibrated
|
||||||
|
@objc static var shouldCalibrateCompass: Bool {
|
||||||
|
get {
|
||||||
|
return SettingsBridge.compassCalibrationEnabled()
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
SettingsBridge.setCompassCalibrationEnabled(newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// The current appearance
|
||||||
|
@objc static var appearance: Appearance {
|
||||||
|
get {
|
||||||
|
let theme = SettingsBridge.theme()
|
||||||
|
if theme == MWMTheme.day {
|
||||||
|
return .light
|
||||||
|
} else if theme == MWMTheme.night {
|
||||||
|
return .dark
|
||||||
|
} else {
|
||||||
|
return .auto
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
if newValue == .light {
|
||||||
|
SettingsBridge.setTheme(MWMTheme.day)
|
||||||
|
} else if newValue == .dark {
|
||||||
|
SettingsBridge.setTheme(MWMTheme.night)
|
||||||
|
} else {
|
||||||
|
SettingsBridge.setTheme(MWMTheme.auto)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// If the bookmarks should be synced via iCloud
|
||||||
|
@objc static var shouldSync: Bool {
|
||||||
|
get {
|
||||||
|
return SettingsBridge.iCLoudSynchronizationEnabled()
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
SettingsBridge.setICLoudSynchronizationEnabled(newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// If the sync beta alert has been shown
|
||||||
|
@objc static var hasShownSyncBetaAlert: Bool {
|
||||||
|
get {
|
||||||
|
return UserDefaults.standard.bool(forKey: userDefaultsKeyHasShownSyncBetaAlert)
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
UserDefaults.standard.set(newValue, forKey: userDefaultsKeyHasShownSyncBetaAlert)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// The publisher for state changes of the iCloud sync
|
||||||
|
static var syncStatePublisher: AnyPublisher<SynchronizationManagerState, Never> {
|
||||||
|
iCloudSynchronizaionManager.shared.notifyObservers()
|
||||||
|
return iCloudSynchronizaionManager.shared.statePublisher
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// If our custom logging is enabled
|
||||||
|
@objc static var isLogging: Bool {
|
||||||
|
get {
|
||||||
|
return SettingsBridge.isFileLoggingEnabled()
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
SettingsBridge.setFileLoggingEnabled(newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// The formatter for the size of the log file
|
||||||
|
@objc static var logSizeFormatter: MeasurementFormatter {
|
||||||
|
let measurementFormatter = MeasurementFormatter()
|
||||||
|
measurementFormatter.unitStyle = .medium
|
||||||
|
measurementFormatter.unitOptions = .naturalScale
|
||||||
|
return measurementFormatter
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// The size of the log file in bytes
|
||||||
|
@objc static var logSize: Measurement<UnitInformationStorage> {
|
||||||
|
return Measurement<UnitInformationStorage>(value: Double(SettingsBridge.logFileSize()), unit: .bytes)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// If the perspective view should be used during routing
|
||||||
|
@objc static var hasPerspectiveViewWhileRouting: Bool {
|
||||||
|
get {
|
||||||
|
return SettingsBridge.perspectiveViewEnabled()
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
SettingsBridge.setPerspectiveViewEnabled(newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// If auto zoom should be used during routing
|
||||||
|
@objc static var hasAutoZoomWhileRouting: Bool {
|
||||||
|
get {
|
||||||
|
return SettingsBridge.autoZoomEnabled()
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
SettingsBridge.setAutoZoomEnabled(newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// If voice guidance should be provided during routing
|
||||||
|
@objc static var shouldProvideVoiceRouting: Bool {
|
||||||
|
get {
|
||||||
|
return MWMTextToSpeech.isTTSEnabled()
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
MWMTextToSpeech.setTTSEnabled(newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// The available languages for voice guidance during routing
|
||||||
|
static var availableLanguagesForVoiceRouting: [VoiceRoutingLanguage] {
|
||||||
|
return MWMTextToSpeech.availableLanguages().map { language in
|
||||||
|
return VoiceRoutingLanguage(id: language.key, localizedName: language.value)
|
||||||
|
}.sorted()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// The current language for voice guidance during routing
|
||||||
|
@objc static var languageForVoiceRouting: VoiceRoutingLanguage.ID {
|
||||||
|
get {
|
||||||
|
return MWMTextToSpeech.selectedLanguage()
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
MWMTextToSpeech.tts().setNotificationsLocale(newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// If street names should be announced in the voice guidance during routing
|
||||||
|
@objc static var shouldAnnounceStreetnamesWhileVoiceRouting: Bool {
|
||||||
|
get {
|
||||||
|
return MWMTextToSpeech.isStreetNamesTTSEnabled()
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
MWMTextToSpeech.setStreetNamesTTSEnabled(newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// The current announcement of speed traps in the voice guidance during routing
|
||||||
|
@objc static var announcingSpeedTrapsWhileVoiceRouting: AnnouncingSpeedTrapsWhileVoiceRouting {
|
||||||
|
get {
|
||||||
|
return AnnouncingSpeedTrapsWhileVoiceRouting(rawValue: MWMTextToSpeech.speedCameraMode()) ?? .never
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
MWMTextToSpeech.setSpeedCameraMode(newValue.rawValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// If toll roads should be avoided during routing
|
||||||
|
@objc static var shouldAvoidTollRoadsWhileRouting: Bool {
|
||||||
|
get {
|
||||||
|
return RoutingOptions().avoidToll
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
RoutingOptions().avoidToll = newValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// If unpaved roads should be avoided during routing
|
||||||
|
@objc static var shouldAvoidUnpavedRoadsWhileRouting: Bool {
|
||||||
|
get {
|
||||||
|
return RoutingOptions().avoidDirty
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
RoutingOptions().avoidDirty = newValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// If ferries should be avoided during routing
|
||||||
|
@objc static var shouldAvoidFerriesWhileRouting: Bool {
|
||||||
|
get {
|
||||||
|
return RoutingOptions().avoidFerry
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
RoutingOptions().avoidFerry = newValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// If motorways should be avoided during routing
|
||||||
|
@objc static var shouldAvoidMotorwaysWhileRouting: Bool {
|
||||||
|
get {
|
||||||
|
return RoutingOptions().avoidMotorway
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
RoutingOptions().avoidMotorway = newValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// MARK: Methods
|
||||||
|
|
||||||
|
/// Create a bookmarks backup before enabling the sync beta
|
||||||
|
/// - Parameter completionHandler: A compeltion handler, which returns if a backup has been created
|
||||||
|
static func createBookmarksBackupBecauseOfSyncBeta(completionHandler: ((_ hasCreatedBackup: Bool) -> Void)?) {
|
||||||
|
BookmarksManager.shared().shareAllCategories { status, url in
|
||||||
|
switch status {
|
||||||
|
case .success:
|
||||||
|
let window = (UIApplication.shared.connectedScenes.filter { $0.activationState == .foregroundActive }.first(where: { $0 is UIWindowScene }) as? UIWindowScene)?.keyWindow
|
||||||
|
if let viewController = window?.rootViewController?.presentedViewController {
|
||||||
|
let shareController = ActivityViewController.share(for: url, message: String(localized: "share_bookmarks_email_body")) { _, _, _, _ in
|
||||||
|
completionHandler?(true)
|
||||||
|
}
|
||||||
|
shareController.present(inParentViewController: viewController, anchorView: nil)
|
||||||
|
}
|
||||||
|
case .emptyCategory:
|
||||||
|
Toast.show(withText: String(localized: "bookmarks_error_title_share_empty"))
|
||||||
|
completionHandler?(false)
|
||||||
|
case .archiveError:
|
||||||
|
Toast.show(withText: String(localized: "dialog_routing_system_error"))
|
||||||
|
completionHandler?(false)
|
||||||
|
case .fileError:
|
||||||
|
Toast.show(withText: String(localized: "dialog_routing_system_error"))
|
||||||
|
completionHandler?(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// Play a test audio snippet for voice guidance during routing
|
||||||
|
@objc static func playVoiceRoutingTest() {
|
||||||
|
MWMTextToSpeech.playTest()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -48,7 +48,7 @@ extension BottomMenuInteractor: BottomMenuInteractorProtocol {
|
|||||||
|
|
||||||
func donate() {
|
func donate() {
|
||||||
close()
|
close()
|
||||||
guard var url = Settings.donateUrl() else { return }
|
guard var url = SettingsBridge.donateUrl() else { return }
|
||||||
if url == "https://www.comaps.app/donate/" {
|
if url == "https://www.comaps.app/donate/" {
|
||||||
url = L("translated_om_site_url") + "donate/"
|
url = L("translated_om_site_url") + "donate/"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class BottomMenuPresenter: NSObject {
|
|||||||
self.view = view
|
self.view = view
|
||||||
self.interactor = interactor
|
self.interactor = interactor
|
||||||
self.sections = sections
|
self.sections = sections
|
||||||
let disableDonate = Settings.donateUrl() == nil
|
let disableDonate = SettingsBridge.donateUrl() == nil
|
||||||
self.menuCells = CellType.allCases.filter { disableDonate ? $0 != .donate : true }
|
self.menuCells = CellType.allCases.filter { disableDonate ? $0 != .donate : true }
|
||||||
self.cellToHighlight = Self.getCellToHighlight()
|
self.cellToHighlight = Self.getCellToHighlight()
|
||||||
super.init()
|
super.init()
|
||||||
@@ -112,7 +112,7 @@ extension BottomMenuPresenter {
|
|||||||
title: L("download_maps"),
|
title: L("download_maps"),
|
||||||
badgeCount: MapsAppDelegate.theApp().badgeNumber())
|
badgeCount: MapsAppDelegate.theApp().badgeNumber())
|
||||||
case .donate:
|
case .donate:
|
||||||
cell.configure(imageName: Settings.isNY() ? "ic_christmas_tree" : "ic_menu_donate",
|
cell.configure(imageName: SettingsBridge.isNY() ? "ic_christmas_tree" : "ic_menu_donate",
|
||||||
title: L("donate"))
|
title: L("donate"))
|
||||||
case .settings:
|
case .settings:
|
||||||
cell.configure(imageName: "ic_menu_settings",
|
cell.configure(imageName: "ic_menu_settings",
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ class BottomTabBarViewController: UIViewController {
|
|||||||
|
|
||||||
override func viewWillAppear(_ animated: Bool) {
|
override func viewWillAppear(_ animated: Bool) {
|
||||||
super.viewWillAppear(animated)
|
super.viewWillAppear(animated)
|
||||||
if Settings.isNY() {
|
if SettingsBridge.isNY() {
|
||||||
helpButton.setTitle("🎄", for: .normal)
|
helpButton.setTitle("🎄", for: .normal)
|
||||||
helpButton.setImage(nil, for: .normal)
|
helpButton.setImage(nil, for: .normal)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ private extension AboutController {
|
|||||||
func setupDonation() {
|
func setupDonation() {
|
||||||
donationView.donateButtonDidTapHandler = { [weak self] in
|
donationView.donateButtonDidTapHandler = { [weak self] in
|
||||||
guard let self else { return }
|
guard let self else { return }
|
||||||
self.openUrl(self.isDonateEnabled() ? Settings.donateUrl() : L("translated_om_site_url") + "support-us/")
|
self.openUrl(self.isDonateEnabled() ? SettingsBridge.donateUrl() : L("translated_om_site_url") + "support-us/")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -266,7 +266,7 @@ private extension AboutController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func isDonateEnabled() -> Bool {
|
func isDonateEnabled() -> Bool {
|
||||||
return Settings.donateUrl() != nil
|
return SettingsBridge.donateUrl() != nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func buildInfoTableViewData() -> [AboutInfoTableViewCellModel] {
|
func buildInfoTableViewData() -> [AboutInfoTableViewCellModel] {
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ final class ElevationProfileFormatter {
|
|||||||
private let altitudeStep: CGFloat
|
private let altitudeStep: CGFloat
|
||||||
private let units: Units
|
private let units: Units
|
||||||
|
|
||||||
init(units: Units = Settings.measurementUnits()) {
|
init(units: Units = SettingsBridge.measurementUnits()) {
|
||||||
self.units = units
|
self.units = units
|
||||||
self.distanceFormatter = DistanceFormatter.self
|
self.distanceFormatter = DistanceFormatter.self
|
||||||
self.altitudeFormatter = AltitudeFormatter.self
|
self.altitudeFormatter = AltitudeFormatter.self
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
class SettingsTableViewDetailedSwitchCell: SettingsTableViewSwitchCell {
|
|
||||||
|
|
||||||
override func awakeFromNib() {
|
|
||||||
super.awakeFromNib()
|
|
||||||
styleDetail()
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc
|
|
||||||
func setDetail(_ text: String?) {
|
|
||||||
detailTextLabel?.text = text
|
|
||||||
setNeedsLayout()
|
|
||||||
}
|
|
||||||
|
|
||||||
private func styleDetail() {
|
|
||||||
detailTextLabel?.setFontStyleAndApply(.regular12, color: .blackSecondary)
|
|
||||||
detailTextLabel?.numberOfLines = 0
|
|
||||||
detailTextLabel?.lineBreakMode = .byWordWrapping
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
@objc
|
|
||||||
final class SettingsTableViewLinkCell: MWMTableViewCell {
|
|
||||||
|
|
||||||
override func awakeFromNib() {
|
|
||||||
super.awakeFromNib()
|
|
||||||
setupCell()
|
|
||||||
}
|
|
||||||
|
|
||||||
private func setupCell() {
|
|
||||||
setStyle(.background)
|
|
||||||
textLabel?.setFontStyle(.regular17, color: .blackPrimary)
|
|
||||||
textLabel?.numberOfLines = 0
|
|
||||||
textLabel?.lineBreakMode = .byWordWrapping
|
|
||||||
detailTextLabel?.setFontStyle(.regular17, color: .blackSecondary)
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc func config(title: String, info: String?) {
|
|
||||||
textLabel?.text = title
|
|
||||||
detailTextLabel?.text = info
|
|
||||||
detailTextLabel?.isHidden = info == nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
@objc
|
|
||||||
final class SettingsTableViewSelectableCell: MWMTableViewCell {
|
|
||||||
|
|
||||||
override func awakeFromNib() {
|
|
||||||
super.awakeFromNib()
|
|
||||||
setupCell()
|
|
||||||
}
|
|
||||||
|
|
||||||
override func applyTheme() {
|
|
||||||
super.applyTheme()
|
|
||||||
textLabel?.applyTheme()
|
|
||||||
}
|
|
||||||
|
|
||||||
private func setupCell() {
|
|
||||||
setStyle(.background)
|
|
||||||
textLabel?.setFontStyle(.regular17, color: .blackPrimary)
|
|
||||||
textLabel?.numberOfLines = 0
|
|
||||||
textLabel?.lineBreakMode = .byWordWrapping
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc func config(title: String) {
|
|
||||||
textLabel?.text = title
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
@objc
|
|
||||||
protocol SettingsTableViewSwitchCellDelegate {
|
|
||||||
func switchCell(_ cell: SettingsTableViewSwitchCell, didChangeValue value: Bool)
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc
|
|
||||||
class SettingsTableViewSwitchCell: MWMTableViewCell {
|
|
||||||
|
|
||||||
let switchButton = UISwitch()
|
|
||||||
|
|
||||||
@IBOutlet weak var delegate: SettingsTableViewSwitchCellDelegate?
|
|
||||||
|
|
||||||
@objc
|
|
||||||
var isEnabled = true {
|
|
||||||
didSet {
|
|
||||||
styleTitle()
|
|
||||||
switchButton.isUserInteractionEnabled = isEnabled
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc
|
|
||||||
var isOn: Bool {
|
|
||||||
get { return switchButton.isOn }
|
|
||||||
set { switchButton.isOn = newValue }
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc
|
|
||||||
func setOn(_ isOn: Bool, animated: Bool) {
|
|
||||||
switchButton.setOn(isOn, animated: animated)
|
|
||||||
}
|
|
||||||
|
|
||||||
override func awakeFromNib() {
|
|
||||||
super.awakeFromNib()
|
|
||||||
setupCell()
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc
|
|
||||||
func config(delegate: SettingsTableViewSwitchCellDelegate, title: String, isOn: Bool) {
|
|
||||||
backgroundColor = UIColor.white()
|
|
||||||
|
|
||||||
self.delegate = delegate
|
|
||||||
|
|
||||||
self.textLabel?.text = title
|
|
||||||
styleTitle()
|
|
||||||
|
|
||||||
switchButton.isOn = isOn
|
|
||||||
}
|
|
||||||
|
|
||||||
private func setupCell() {
|
|
||||||
setStyle(.background)
|
|
||||||
styleTitle()
|
|
||||||
textLabel?.numberOfLines = 0
|
|
||||||
textLabel?.lineBreakMode = .byWordWrapping
|
|
||||||
|
|
||||||
switchButton.onTintColor = UIColor.linkBlue()
|
|
||||||
switchButton.addTarget(self, action: #selector(switchChanged), for: .valueChanged)
|
|
||||||
accessoryView = switchButton
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc
|
|
||||||
private func switchChanged() {
|
|
||||||
delegate?.switchCell(self, didChangeValue: switchButton.isOn)
|
|
||||||
}
|
|
||||||
|
|
||||||
private func styleTitle() {
|
|
||||||
textLabel?.setFontStyleAndApply(.regular17, color: isEnabled ? .blackPrimary : .blackSecondary)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
final class SettingsTableViewiCloudSwitchCell: SettingsTableViewDetailedSwitchCell {
|
|
||||||
|
|
||||||
@objc
|
|
||||||
func updateWithSynchronizationState(_ state: SynchronizationManagerState) {
|
|
||||||
guard state.isAvailable else {
|
|
||||||
accessoryView = nil
|
|
||||||
accessoryType = .detailButton
|
|
||||||
return
|
|
||||||
}
|
|
||||||
accessoryView = switchButton
|
|
||||||
detailTextLabel?.text = state.error?.localizedDescription
|
|
||||||
setOn(state.isOn, animated: true)
|
|
||||||
setNeedsLayout()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,138 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="8YO-Xx-cAh">
|
|
||||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
|
||||||
<dependencies>
|
|
||||||
<deployment identifier="iOS"/>
|
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/>
|
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
|
||||||
</dependencies>
|
|
||||||
<scenes>
|
|
||||||
<!--Driving Options View Controller-->
|
|
||||||
<scene sceneID="BWZ-fX-cej">
|
|
||||||
<objects>
|
|
||||||
<tableViewController storyboardIdentifier="DrivingOptionsViewController" id="8YO-Xx-cAh" userLabel="Driving Options View Controller" customClass="DrivingOptionsViewController" customModule="CoMaps" customModuleProvider="target" sceneMemberID="viewController">
|
|
||||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="18" sectionFooterHeight="18" id="Q8U-4Z-lWC">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<color key="backgroundColor" systemColor="groupTableViewBackgroundColor"/>
|
|
||||||
<sections>
|
|
||||||
<tableViewSection id="qNN-Uw-84i">
|
|
||||||
<cells>
|
|
||||||
<tableViewCell contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="AO5-68-HQQ" style="IBUITableViewCellStyleDefault" id="YrA-ve-xPG" customClass="SettingsTableViewSwitchCell" customModule="CoMaps" customModuleProvider="target">
|
|
||||||
<rect key="frame" x="0.0" y="18" width="375" height="43.5"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="YrA-ve-xPG" id="gKI-YE-akp">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<subviews>
|
|
||||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="AO5-68-HQQ">
|
|
||||||
<rect key="frame" x="16" y="0.0" width="343" height="43.5"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="0.0"/>
|
|
||||||
<nil key="textColor"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
<userDefinedRuntimeAttributes>
|
|
||||||
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="avoid_tolls"/>
|
|
||||||
</userDefinedRuntimeAttributes>
|
|
||||||
</label>
|
|
||||||
</subviews>
|
|
||||||
</tableViewCellContentView>
|
|
||||||
<connections>
|
|
||||||
<outlet property="delegate" destination="8YO-Xx-cAh" id="w8e-bi-R4K"/>
|
|
||||||
</connections>
|
|
||||||
</tableViewCell>
|
|
||||||
<tableViewCell contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="Hy1-A1-IL1" style="IBUITableViewCellStyleDefault" id="Edm-gG-iZL" customClass="SettingsTableViewSwitchCell" customModule="CoMaps" customModuleProvider="target">
|
|
||||||
<rect key="frame" x="0.0" y="61.5" width="375" height="43.5"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Edm-gG-iZL" id="mIt-Ku-xiU">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<subviews>
|
|
||||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Hy1-A1-IL1">
|
|
||||||
<rect key="frame" x="16" y="0.0" width="343" height="43.5"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="0.0"/>
|
|
||||||
<nil key="textColor"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
<userDefinedRuntimeAttributes>
|
|
||||||
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="avoid_unpaved"/>
|
|
||||||
</userDefinedRuntimeAttributes>
|
|
||||||
</label>
|
|
||||||
</subviews>
|
|
||||||
</tableViewCellContentView>
|
|
||||||
<connections>
|
|
||||||
<outlet property="delegate" destination="8YO-Xx-cAh" id="d0x-IA-p32"/>
|
|
||||||
</connections>
|
|
||||||
</tableViewCell>
|
|
||||||
<tableViewCell contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="US8-Te-0z2" style="IBUITableViewCellStyleDefault" id="ZqG-Fn-9Da" customClass="SettingsTableViewSwitchCell" customModule="CoMaps" customModuleProvider="target">
|
|
||||||
<rect key="frame" x="0.0" y="105" width="375" height="43.5"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ZqG-Fn-9Da" id="7US-xU-xAU">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<subviews>
|
|
||||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="US8-Te-0z2">
|
|
||||||
<rect key="frame" x="16" y="0.0" width="343" height="43.5"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="0.0"/>
|
|
||||||
<nil key="textColor"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
<userDefinedRuntimeAttributes>
|
|
||||||
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="avoid_ferry"/>
|
|
||||||
</userDefinedRuntimeAttributes>
|
|
||||||
</label>
|
|
||||||
</subviews>
|
|
||||||
</tableViewCellContentView>
|
|
||||||
<connections>
|
|
||||||
<outlet property="delegate" destination="8YO-Xx-cAh" id="SKD-CC-bJO"/>
|
|
||||||
</connections>
|
|
||||||
</tableViewCell>
|
|
||||||
<tableViewCell contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="4wZ-U1-Rre" style="IBUITableViewCellStyleDefault" id="EZ7-Gy-8aA" customClass="SettingsTableViewSwitchCell" customModule="CoMaps" customModuleProvider="target">
|
|
||||||
<rect key="frame" x="0.0" y="148.5" width="375" height="43.5"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="EZ7-Gy-8aA" id="6ee-yF-kGr">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<subviews>
|
|
||||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="4wZ-U1-Rre">
|
|
||||||
<rect key="frame" x="16" y="0.0" width="343" height="43.5"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="0.0"/>
|
|
||||||
<nil key="textColor"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
<userDefinedRuntimeAttributes>
|
|
||||||
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="avoid_motorways"/>
|
|
||||||
</userDefinedRuntimeAttributes>
|
|
||||||
</label>
|
|
||||||
</subviews>
|
|
||||||
</tableViewCellContentView>
|
|
||||||
<connections>
|
|
||||||
<outlet property="delegate" destination="8YO-Xx-cAh" id="bcu-c0-4xR"/>
|
|
||||||
</connections>
|
|
||||||
</tableViewCell>
|
|
||||||
</cells>
|
|
||||||
</tableViewSection>
|
|
||||||
</sections>
|
|
||||||
<connections>
|
|
||||||
<outlet property="dataSource" destination="8YO-Xx-cAh" id="3Lz-g5-LiH"/>
|
|
||||||
<outlet property="delegate" destination="8YO-Xx-cAh" id="Iup-r1-FJ7"/>
|
|
||||||
</connections>
|
|
||||||
</tableView>
|
|
||||||
<connections>
|
|
||||||
<outlet property="ferryCrossingsCell" destination="ZqG-Fn-9Da" id="td7-b1-uPz"/>
|
|
||||||
<outlet property="motorwaysCell" destination="EZ7-Gy-8aA" id="g4i-mp-cFD"/>
|
|
||||||
<outlet property="tollRoadsCell" destination="YrA-ve-xPG" id="s0c-im-mto"/>
|
|
||||||
<outlet property="unpavedRoadsCell" destination="Edm-gG-iZL" id="X5s-mB-VZ6"/>
|
|
||||||
</connections>
|
|
||||||
</tableViewController>
|
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="XZd-C9-klr" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
|
||||||
</objects>
|
|
||||||
<point key="canvasLocation" x="100" y="100"/>
|
|
||||||
</scene>
|
|
||||||
</scenes>
|
|
||||||
<resources>
|
|
||||||
<systemColor name="groupTableViewBackgroundColor">
|
|
||||||
<color red="0.94901960784313721" green="0.94901960784313721" blue="0.96862745098039216" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
|
||||||
</systemColor>
|
|
||||||
</resources>
|
|
||||||
</document>
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
|
|
||||||
class DrivingOptionsViewController: MWMTableViewController {
|
|
||||||
let options = RoutingOptions()
|
|
||||||
@IBOutlet var tollRoadsCell: SettingsTableViewSwitchCell!
|
|
||||||
@IBOutlet var unpavedRoadsCell: SettingsTableViewSwitchCell!
|
|
||||||
@IBOutlet var ferryCrossingsCell: SettingsTableViewSwitchCell!
|
|
||||||
@IBOutlet var motorwaysCell: SettingsTableViewSwitchCell!
|
|
||||||
|
|
||||||
override func viewDidLoad() {
|
|
||||||
super.viewDidLoad()
|
|
||||||
title = L("driving_options_title")
|
|
||||||
tollRoadsCell.isOn = options.avoidToll
|
|
||||||
unpavedRoadsCell.isOn = options.avoidDirty
|
|
||||||
ferryCrossingsCell.isOn = options.avoidFerry
|
|
||||||
motorwaysCell.isOn = options.avoidMotorway
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
extension DrivingOptionsViewController: SettingsTableViewSwitchCellDelegate {
|
|
||||||
func switchCell(_ cell: SettingsTableViewSwitchCell, didChangeValue value: Bool) {
|
|
||||||
if cell == tollRoadsCell {
|
|
||||||
options.avoidToll = cell.isOn
|
|
||||||
} else if cell == unpavedRoadsCell {
|
|
||||||
options.avoidDirty = cell.isOn
|
|
||||||
} else if cell == ferryCrossingsCell {
|
|
||||||
options.avoidFerry = cell.isOn
|
|
||||||
} else if cell == motorwaysCell {
|
|
||||||
options.avoidMotorway = cell.isOn
|
|
||||||
}
|
|
||||||
|
|
||||||
options.save()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#import "MWMTableViewController.h"
|
|
||||||
|
|
||||||
@interface MWMMobileInternetViewController : MWMTableViewController
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
#import "MWMMobileInternetViewController.h"
|
|
||||||
#import "SwiftBridge.h"
|
|
||||||
|
|
||||||
@interface MWMMobileInternetViewController ()
|
|
||||||
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSelectableCell * always;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSelectableCell * ask;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSelectableCell * never;
|
|
||||||
@property(weak, nonatomic) SettingsTableViewSelectableCell * selected;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation MWMMobileInternetViewController
|
|
||||||
|
|
||||||
- (void)viewDidLoad
|
|
||||||
{
|
|
||||||
[super viewDidLoad];
|
|
||||||
self.title = L(@"mobile_data");
|
|
||||||
|
|
||||||
SettingsTableViewSelectableCell * selected;
|
|
||||||
switch ([MWMNetworkPolicy sharedPolicy].permission) {
|
|
||||||
case MWMNetworkPolicyPermissionAlways:
|
|
||||||
selected = self.always;
|
|
||||||
break;
|
|
||||||
case MWMNetworkPolicyPermissionNever:
|
|
||||||
selected = self.never;
|
|
||||||
break;
|
|
||||||
case MWMNetworkPolicyPermissionToday:
|
|
||||||
case MWMNetworkPolicyPermissionNotToday:
|
|
||||||
case MWMNetworkPolicyPermissionAsk:
|
|
||||||
selected = self.ask;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
selected.accessoryType = UITableViewCellAccessoryCheckmark;
|
|
||||||
self.selected = selected;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setSelected:(SettingsTableViewSelectableCell *)selected
|
|
||||||
{
|
|
||||||
if ([_selected isEqual:selected])
|
|
||||||
return;
|
|
||||||
|
|
||||||
_selected = selected;
|
|
||||||
if ([selected isEqual:self.always])
|
|
||||||
[MWMNetworkPolicy sharedPolicy].permission = MWMNetworkPolicyPermissionAlways;
|
|
||||||
else if ([selected isEqual:self.ask])
|
|
||||||
[MWMNetworkPolicy sharedPolicy].permission = MWMNetworkPolicyPermissionAsk;
|
|
||||||
else if ([selected isEqual:self.never])
|
|
||||||
[MWMNetworkPolicy sharedPolicy].permission = MWMNetworkPolicyPermissionNever;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
|
|
||||||
{
|
|
||||||
SettingsTableViewSelectableCell * selected = self.selected;
|
|
||||||
selected.accessoryType = UITableViewCellAccessoryNone;
|
|
||||||
selected = [tableView cellForRowAtIndexPath:indexPath];
|
|
||||||
selected.accessoryType = UITableViewCellAccessoryCheckmark;
|
|
||||||
selected.selected = NO;
|
|
||||||
self.selected = selected;
|
|
||||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
|
|
||||||
{
|
|
||||||
return L(@"mobile_data_description");
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#import "MWMTableViewController.h"
|
|
||||||
|
|
||||||
@interface MWMNightModeController : MWMTableViewController
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
#import "MWMNightModeController.h"
|
|
||||||
#import "MWMSettings.h"
|
|
||||||
#import "SwiftBridge.h"
|
|
||||||
|
|
||||||
@interface MWMNightModeController ()
|
|
||||||
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSelectableCell * autoSwitch;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSelectableCell * on;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSelectableCell * off;
|
|
||||||
@property(weak, nonatomic) SettingsTableViewSelectableCell * selectedCell;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation MWMNightModeController
|
|
||||||
|
|
||||||
- (void)viewDidLoad
|
|
||||||
{
|
|
||||||
[super viewDidLoad];
|
|
||||||
self.title = L(@"pref_appearance_title");
|
|
||||||
SettingsTableViewSelectableCell * selectedCell = nil;
|
|
||||||
switch ([MWMSettings theme])
|
|
||||||
{
|
|
||||||
case MWMThemeVehicleDay: NSAssert(false, @"Invalid case");
|
|
||||||
case MWMThemeDay: selectedCell = self.off; break;
|
|
||||||
case MWMThemeVehicleNight: NSAssert(false, @"Invalid case");
|
|
||||||
case MWMThemeNight: selectedCell = self.on; break;
|
|
||||||
case MWMThemeAuto: selectedCell = self.autoSwitch; break;
|
|
||||||
}
|
|
||||||
selectedCell.accessoryType = UITableViewCellAccessoryCheckmark;
|
|
||||||
self.selectedCell = selectedCell;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setSelectedCell:(SettingsTableViewSelectableCell *)cell
|
|
||||||
{
|
|
||||||
if ([_selectedCell isEqual:cell])
|
|
||||||
return;
|
|
||||||
|
|
||||||
_selectedCell = cell;
|
|
||||||
if ([cell isEqual:self.on])
|
|
||||||
[MWMSettings setTheme:MWMThemeNight];
|
|
||||||
else if ([cell isEqual:self.off])
|
|
||||||
[MWMSettings setTheme:MWMThemeDay];
|
|
||||||
else if ([cell isEqual:self.autoSwitch])
|
|
||||||
[MWMSettings setTheme:MWMThemeAuto];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
|
|
||||||
{
|
|
||||||
SettingsTableViewSelectableCell * selectedCell = self.selectedCell;
|
|
||||||
selectedCell.accessoryType = UITableViewCellAccessoryNone;
|
|
||||||
selectedCell = [tableView cellForRowAtIndexPath:indexPath];
|
|
||||||
selectedCell.accessoryType = UITableViewCellAccessoryCheckmark;
|
|
||||||
selectedCell.selected = NO;
|
|
||||||
self.selectedCell = selectedCell;
|
|
||||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#import "MWMTableViewController.h"
|
|
||||||
|
|
||||||
@interface MWMPowerManagmentViewController : MWMTableViewController
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
#import "MWMPowerManagmentViewController.h"
|
|
||||||
|
|
||||||
#import "SwiftBridge.h"
|
|
||||||
|
|
||||||
#include <CoreApi/Framework.h>
|
|
||||||
|
|
||||||
using namespace power_management;
|
|
||||||
|
|
||||||
@interface MWMPowerManagmentViewController ()
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSelectableCell * never;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSelectableCell * manualMax;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSelectableCell * automatic;
|
|
||||||
@property(weak, nonatomic) SettingsTableViewSelectableCell * selectedCell;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation MWMPowerManagmentViewController
|
|
||||||
|
|
||||||
- (void)viewDidLoad
|
|
||||||
{
|
|
||||||
[super viewDidLoad];
|
|
||||||
self.title = L(@"power_managment_title");
|
|
||||||
|
|
||||||
SettingsTableViewSelectableCell * selectedCell;
|
|
||||||
switch (GetFramework().GetPowerManager().GetScheme())
|
|
||||||
{
|
|
||||||
case Scheme::None: break;
|
|
||||||
case Scheme::Normal: selectedCell = self.never; break;
|
|
||||||
case Scheme::EconomyMedium: break;
|
|
||||||
case Scheme::EconomyMaximum: selectedCell = self.manualMax; break;
|
|
||||||
case Scheme::Auto: selectedCell = self.automatic; break;
|
|
||||||
}
|
|
||||||
selectedCell.accessoryType = UITableViewCellAccessoryCheckmark;
|
|
||||||
self.selectedCell = selectedCell;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setSelectedCell:(SettingsTableViewSelectableCell *)selectedCell
|
|
||||||
{
|
|
||||||
if (self.selectedCell == selectedCell)
|
|
||||||
return;
|
|
||||||
|
|
||||||
_selectedCell.accessoryType = UITableViewCellAccessoryNone;
|
|
||||||
selectedCell.accessoryType = UITableViewCellAccessoryCheckmark;
|
|
||||||
|
|
||||||
_selectedCell = selectedCell;
|
|
||||||
Scheme scheme = Scheme::Auto;
|
|
||||||
if ([selectedCell isEqual:self.never])
|
|
||||||
scheme = Scheme::Normal;
|
|
||||||
else if ([selectedCell isEqual:self.manualMax])
|
|
||||||
scheme = Scheme::EconomyMaximum;
|
|
||||||
|
|
||||||
GetFramework().GetPowerManager().SetScheme(scheme);
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
|
|
||||||
{
|
|
||||||
self.selectedCell = [tableView cellForRowAtIndexPath:indexPath];
|
|
||||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
|
|
||||||
{
|
|
||||||
return L(@"power_managment_description");
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#import "MWMTableViewController.h"
|
|
||||||
|
|
||||||
@interface MWMSettingsViewController : MWMTableViewController
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -1,394 +0,0 @@
|
|||||||
#import "MWMSettingsViewController.h"
|
|
||||||
#import "MWMTextToSpeech+CPP.h"
|
|
||||||
#import "SwiftBridge.h"
|
|
||||||
#import "MWMActivityViewController.h"
|
|
||||||
|
|
||||||
#import <CoreApi/Framework.h>
|
|
||||||
|
|
||||||
#include "map/gps_tracker.hpp"
|
|
||||||
|
|
||||||
using namespace power_management;
|
|
||||||
|
|
||||||
static NSString * const kUDDidShowICloudSynchronizationEnablingAlert = @"kUDDidShowICloudSynchronizationEnablingAlert";
|
|
||||||
|
|
||||||
@interface MWMSettingsViewController ()<SettingsTableViewSwitchCellDelegate>
|
|
||||||
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewLinkCell *profileCell;
|
|
||||||
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewLinkCell *unitsCell;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSwitchCell *zoomButtonsCell;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSwitchCell *is3dCell;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSwitchCell *autoDownloadCell;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewLinkCell *mobileInternetCell;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewLinkCell *powerManagementCell;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSwitchCell *fontScaleCell;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSwitchCell *transliterationCell;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSwitchCell *compassCalibrationCell;
|
|
||||||
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewLinkCell *nightModeCell;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSwitchCell *perspectiveViewCell;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSwitchCell *autoZoomCell;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewLinkCell *voiceInstructionsCell;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewLinkCell *drivingOptionsCell;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewiCloudSwitchCell *iCloudSynchronizationCell;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewDetailedSwitchCell *enableLoggingCell;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation MWMSettingsViewController
|
|
||||||
|
|
||||||
- (void)viewDidLoad {
|
|
||||||
[super viewDidLoad];
|
|
||||||
self.title = L(@"settings");
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)viewWillAppear:(BOOL)animated {
|
|
||||||
[super viewWillAppear:animated];
|
|
||||||
[self configCells];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)viewDidAppear:(BOOL)animated {
|
|
||||||
[super viewDidAppear:animated];
|
|
||||||
[self highlightFeatureIfNeeded];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)highlightFeatureIfNeeded {
|
|
||||||
UITableViewCell * cell = nil;
|
|
||||||
DeepLinkInAppFeatureHighlightData * featureToHighlight = [DeepLinkHandler.shared getInAppFeatureHighlightData];
|
|
||||||
if (!featureToHighlight || featureToHighlight.urlType != DeeplinkUrlTypeSettings)
|
|
||||||
return;
|
|
||||||
switch (featureToHighlight.feature) {
|
|
||||||
case InAppFeatureHighlightTypeNone:
|
|
||||||
case InAppFeatureHighlightTypeTrackRecorder:
|
|
||||||
// Еhere is no options for the track recorder yet.
|
|
||||||
break;
|
|
||||||
case InAppFeatureHighlightTypeICloud:
|
|
||||||
cell = self.iCloudSynchronizationCell;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
NSIndexPath * indexPath = [self.tableView indexPathForCell:cell];
|
|
||||||
if (!cell || !indexPath)
|
|
||||||
return;
|
|
||||||
[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
|
|
||||||
[cell highlight];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)configCells {
|
|
||||||
[self configProfileSection];
|
|
||||||
[self configCommonSection];
|
|
||||||
[self configNavigationSection];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)configProfileSection {
|
|
||||||
NSString *userName = Profile.name;
|
|
||||||
if (userName == nil) {
|
|
||||||
userName = @"";
|
|
||||||
}
|
|
||||||
[self.profileCell configWithTitle:L(@"osm_profile") info:userName.length != 0 ? userName : @""];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)configCommonSection {
|
|
||||||
NSString * units = nil;
|
|
||||||
switch ([MWMSettings measurementUnits]) {
|
|
||||||
case MWMUnitsMetric:
|
|
||||||
units = L(@"kilometres");
|
|
||||||
break;
|
|
||||||
case MWMUnitsImperial:
|
|
||||||
units = L(@"miles");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
[self.unitsCell configWithTitle:L(@"measurement_units") info:units];
|
|
||||||
|
|
||||||
[self.zoomButtonsCell configWithDelegate:self title:L(@"pref_zoom_title") isOn:[MWMSettings zoomButtonsEnabled]];
|
|
||||||
|
|
||||||
bool on = true, _ = true;
|
|
||||||
GetFramework().Load3dMode(_, on);
|
|
||||||
if (GetFramework().GetPowerManager().GetScheme() == Scheme::EconomyMaximum)
|
|
||||||
{
|
|
||||||
self.is3dCell.isEnabled = false;
|
|
||||||
[self.is3dCell configWithDelegate:self title:L(@"pref_map_3d_buildings_title") isOn:false];
|
|
||||||
UITapGestureRecognizer * tapRecogniser = [[UITapGestureRecognizer alloc] initWithTarget:self
|
|
||||||
action:@selector(show3dBuildingsAlert:)];
|
|
||||||
|
|
||||||
self.is3dCell.gestureRecognizers = @[tapRecogniser];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
self.is3dCell.isEnabled = true;
|
|
||||||
[self.is3dCell configWithDelegate:self title:L(@"pref_map_3d_buildings_title") isOn:on];
|
|
||||||
self.is3dCell.gestureRecognizers = nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
[self.autoDownloadCell configWithDelegate:self
|
|
||||||
title:L(@"autodownload")
|
|
||||||
isOn:[MWMSettings autoDownloadEnabled]];
|
|
||||||
|
|
||||||
NSString * mobileInternet = nil;
|
|
||||||
switch ([MWMNetworkPolicy sharedPolicy].permission) {
|
|
||||||
case MWMNetworkPolicyPermissionAlways:
|
|
||||||
mobileInternet = L(@"mobile_data_option_always");
|
|
||||||
break;
|
|
||||||
case MWMNetworkPolicyPermissionNever:
|
|
||||||
mobileInternet = L(@"mobile_data_option_never");
|
|
||||||
break;
|
|
||||||
case MWMNetworkPolicyPermissionToday:
|
|
||||||
case MWMNetworkPolicyPermissionNotToday:
|
|
||||||
case MWMNetworkPolicyPermissionAsk:
|
|
||||||
mobileInternet = L(@"mobile_data_option_ask");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
[self.mobileInternetCell configWithTitle:L(@"mobile_data") info:mobileInternet];
|
|
||||||
|
|
||||||
NSString * powerManagement = nil;
|
|
||||||
switch (GetFramework().GetPowerManager().GetScheme()) {
|
|
||||||
case Scheme::None:
|
|
||||||
break;
|
|
||||||
case Scheme::Normal:
|
|
||||||
powerManagement = L(@"power_managment_setting_never");
|
|
||||||
break;
|
|
||||||
case Scheme::EconomyMedium:
|
|
||||||
break;
|
|
||||||
case Scheme::EconomyMaximum:
|
|
||||||
powerManagement = L(@"power_managment_setting_manual_max");
|
|
||||||
break;
|
|
||||||
case Scheme::Auto:
|
|
||||||
powerManagement = L(@"power_managment_setting_auto");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
[self.powerManagementCell configWithTitle:L(@"power_managment_title") info:powerManagement];
|
|
||||||
|
|
||||||
[self.fontScaleCell configWithDelegate:self title:L(@"big_font") isOn:[MWMSettings largeFontSize]];
|
|
||||||
|
|
||||||
[self.transliterationCell configWithDelegate:self
|
|
||||||
title:L(@"transliteration_title")
|
|
||||||
isOn:[MWMSettings transliteration]];
|
|
||||||
|
|
||||||
[self.compassCalibrationCell configWithDelegate:self
|
|
||||||
title:L(@"pref_calibration_title")
|
|
||||||
isOn:[MWMSettings compassCalibrationEnabled]];
|
|
||||||
|
|
||||||
NSString * nightMode = nil;
|
|
||||||
switch ([MWMSettings theme]) {
|
|
||||||
case MWMThemeVehicleDay:
|
|
||||||
NSAssert(false, @"Invalid case");
|
|
||||||
case MWMThemeDay:
|
|
||||||
nightMode = L(@"pref_appearance_light");
|
|
||||||
break;
|
|
||||||
case MWMThemeVehicleNight:
|
|
||||||
NSAssert(false, @"Invalid case");
|
|
||||||
case MWMThemeNight:
|
|
||||||
nightMode = L(@"pref_appearance_dark");
|
|
||||||
break;
|
|
||||||
case MWMThemeAuto:
|
|
||||||
nightMode = L(@"auto");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
[self.nightModeCell configWithTitle:L(@"pref_appearance_title") info:nightMode];
|
|
||||||
|
|
||||||
[self.iCloudSynchronizationCell configWithDelegate:self
|
|
||||||
title:@"iCloud Synchronization (Beta)"
|
|
||||||
isOn:[MWMSettings iCLoudSynchronizationEnabled]];
|
|
||||||
|
|
||||||
__weak __typeof(self) weakSelf = self;
|
|
||||||
[iCloudSynchronizaionManager.shared addObserver:self synchronizationStateDidChangeHandler:^(SynchronizationManagerState * state) {
|
|
||||||
__strong auto strongSelf = weakSelf;
|
|
||||||
[strongSelf.iCloudSynchronizationCell updateWithSynchronizationState:state];
|
|
||||||
}];
|
|
||||||
|
|
||||||
[self.enableLoggingCell configWithDelegate:self title:L(@"enable_logging") isOn:MWMSettings.isFileLoggingEnabled];
|
|
||||||
[self updateLogFileSize];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)updateLogFileSize {
|
|
||||||
uint64_t logFileSize = [Logger getLogFileSize];
|
|
||||||
NSString * detailString = logFileSize == 0 ? nil : [NSString stringWithFormat:L(@"log_file_size"), formattedSize(logFileSize)];
|
|
||||||
[self.enableLoggingCell setDetail:detailString];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)show3dBuildingsAlert:(UITapGestureRecognizer *)recognizer {
|
|
||||||
UIAlertController * alert =
|
|
||||||
[UIAlertController alertControllerWithTitle:L(@"pref_map_3d_buildings_title")
|
|
||||||
message:L(@"pref_map_3d_buildings_disabled_summary")
|
|
||||||
preferredStyle:UIAlertControllerStyleAlert];
|
|
||||||
|
|
||||||
UIAlertAction * okButton = [UIAlertAction actionWithTitle:@"OK"
|
|
||||||
style:UIAlertActionStyleDefault
|
|
||||||
handler:nil];
|
|
||||||
[alert addAction:okButton];
|
|
||||||
|
|
||||||
[self presentViewController:alert animated:YES completion:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)configNavigationSection {
|
|
||||||
bool _ = true, on = true;
|
|
||||||
auto &f = GetFramework();
|
|
||||||
f.Load3dMode(on, _);
|
|
||||||
[self.perspectiveViewCell configWithDelegate:self title:L(@"pref_map_3d_title") isOn:on];
|
|
||||||
|
|
||||||
[self.autoZoomCell configWithDelegate:self title:L(@"pref_map_auto_zoom") isOn:GetFramework().LoadAutoZoom()];
|
|
||||||
|
|
||||||
NSString * ttsEnabledString = [MWMTextToSpeech isTTSEnabled] ? L(@"on") : L(@"off");
|
|
||||||
[self.voiceInstructionsCell configWithTitle:L(@"pref_tts_enable_title") info:ttsEnabledString];
|
|
||||||
[self.drivingOptionsCell configWithTitle:L(@"driving_options_title") info:@""];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)showICloudSynchronizationEnablingAlert:(void (^)(BOOL))isEnabled {
|
|
||||||
UIAlertController * alertController = [UIAlertController alertControllerWithTitle:L(@"enable_icloud_synchronization_title")
|
|
||||||
message:L(@"enable_icloud_synchronization_message")
|
|
||||||
preferredStyle:UIAlertControllerStyleAlert];
|
|
||||||
UIAlertAction * enableButton = [UIAlertAction actionWithTitle:L(@"enable")
|
|
||||||
style:UIAlertActionStyleDefault
|
|
||||||
handler:^(UIAlertAction * action) {
|
|
||||||
[self setICloudSynchronizationEnablingAlertIsShown];
|
|
||||||
isEnabled(YES);
|
|
||||||
}];
|
|
||||||
UIAlertAction * backupButton = [UIAlertAction actionWithTitle:L(@"backup")
|
|
||||||
style:UIAlertActionStyleDefault
|
|
||||||
handler:^(UIAlertAction * action) {
|
|
||||||
[MWMBookmarksManager.sharedManager shareAllCategoriesWithCompletion:^(MWMBookmarksShareStatus status, NSURL * _Nonnull url) {
|
|
||||||
switch (status) {
|
|
||||||
case MWMBookmarksShareStatusSuccess: {
|
|
||||||
MWMActivityViewController * shareController = [MWMActivityViewController shareControllerForURL:url message:L(@"share_bookmarks_email_body") completionHandler:^(UIActivityType _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError) {
|
|
||||||
[self setICloudSynchronizationEnablingAlertIsShown];
|
|
||||||
isEnabled(completed);
|
|
||||||
}];
|
|
||||||
[shareController presentInParentViewController:self anchorView:self.iCloudSynchronizationCell];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case MWMBookmarksShareStatusEmptyCategory:
|
|
||||||
[Toast showWithText:L(@"bookmarks_error_title_share_empty")];
|
|
||||||
isEnabled(NO);
|
|
||||||
break;
|
|
||||||
case MWMBookmarksShareStatusArchiveError:
|
|
||||||
case MWMBookmarksShareStatusFileError:
|
|
||||||
[Toast showWithText:L(@"dialog_routing_system_error")];
|
|
||||||
isEnabled(NO);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}];
|
|
||||||
UIAlertAction * cancelButton = [UIAlertAction actionWithTitle:L(@"cancel")
|
|
||||||
style:UIAlertActionStyleCancel
|
|
||||||
handler:^(UIAlertAction * action) {
|
|
||||||
isEnabled(NO);
|
|
||||||
}];
|
|
||||||
|
|
||||||
[alertController addAction:cancelButton];
|
|
||||||
if (![MWMBookmarksManager.sharedManager areAllCategoriesEmpty])
|
|
||||||
[alertController addAction:backupButton];
|
|
||||||
[alertController addAction:enableButton];
|
|
||||||
[self presentViewController:alertController animated:YES completion:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setICloudSynchronizationEnablingAlertIsShown {
|
|
||||||
[NSUserDefaults.standardUserDefaults setBool:YES forKey:kUDDidShowICloudSynchronizationEnablingAlert];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)showICloudIsDisabledAlert {
|
|
||||||
UIAlertController * alertController = [UIAlertController alertControllerWithTitle:L(@"icloud_disabled_title")
|
|
||||||
message:L(@"icloud_disabled_message")
|
|
||||||
preferredStyle:UIAlertControllerStyleAlert];
|
|
||||||
UIAlertAction * okButton = [UIAlertAction actionWithTitle:L(@"ok")
|
|
||||||
style:UIAlertActionStyleCancel
|
|
||||||
handler:nil];
|
|
||||||
[alertController addAction:okButton];
|
|
||||||
[self presentViewController:alertController animated:YES completion:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark - SettingsTableViewSwitchCellDelegate
|
|
||||||
|
|
||||||
- (void)switchCell:(SettingsTableViewSwitchCell *)cell didChangeValue:(BOOL)value {
|
|
||||||
if (cell == self.zoomButtonsCell) {
|
|
||||||
[MWMSettings setZoomButtonsEnabled:value];
|
|
||||||
} else if (cell == self.is3dCell) {
|
|
||||||
auto &f = GetFramework();
|
|
||||||
bool _ = true, is3dBuildings = true;
|
|
||||||
f.Load3dMode(_, is3dBuildings);
|
|
||||||
is3dBuildings = static_cast<bool>(value);
|
|
||||||
f.Save3dMode(_, is3dBuildings);
|
|
||||||
f.Allow3dMode(_, is3dBuildings);
|
|
||||||
} else if (cell == self.autoDownloadCell) {
|
|
||||||
[MWMSettings setAutoDownloadEnabled:value];
|
|
||||||
} else if (cell == self.fontScaleCell) {
|
|
||||||
[MWMSettings setLargeFontSize:value];
|
|
||||||
} else if (cell == self.transliterationCell) {
|
|
||||||
[MWMSettings setTransliteration:value];
|
|
||||||
} else if (cell == self.compassCalibrationCell) {
|
|
||||||
[MWMSettings setCompassCalibrationEnabled:value];
|
|
||||||
} else if (cell == self.perspectiveViewCell) {
|
|
||||||
auto &f = GetFramework();
|
|
||||||
bool _ = true, is3d = true;
|
|
||||||
f.Load3dMode(is3d, _);
|
|
||||||
is3d = static_cast<bool>(value);
|
|
||||||
f.Save3dMode(is3d, _);
|
|
||||||
f.Allow3dMode(is3d, _);
|
|
||||||
} else if (cell == self.autoZoomCell) {
|
|
||||||
auto &f = GetFramework();
|
|
||||||
f.AllowAutoZoom(value);
|
|
||||||
f.SaveAutoZoom(value);
|
|
||||||
} else if (cell == self.iCloudSynchronizationCell) {
|
|
||||||
if (![NSUserDefaults.standardUserDefaults boolForKey:kUDDidShowICloudSynchronizationEnablingAlert]) {
|
|
||||||
[self showICloudSynchronizationEnablingAlert:^(BOOL isEnabled) {
|
|
||||||
[MWMSettings setICLoudSynchronizationEnabled:isEnabled];
|
|
||||||
}];
|
|
||||||
} else {
|
|
||||||
[MWMSettings setICLoudSynchronizationEnabled:value];
|
|
||||||
}
|
|
||||||
} else if (cell == self.enableLoggingCell) {
|
|
||||||
[MWMSettings setFileLoggingEnabled:value];
|
|
||||||
[self updateLogFileSize];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark - UITableViewDelegate
|
|
||||||
|
|
||||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
|
||||||
[tableView deselectRowAtIndexPath:indexPath animated:true];
|
|
||||||
auto cell = [tableView cellForRowAtIndexPath:indexPath];
|
|
||||||
if (cell == self.unitsCell) {
|
|
||||||
[self performSegueWithIdentifier:@"SettingsToUnits" sender:nil];
|
|
||||||
} else if (cell == self.mobileInternetCell) {
|
|
||||||
[self performSegueWithIdentifier:@"SettingsToMobileInternetSegue" sender:nil];
|
|
||||||
} else if (cell == self.powerManagementCell) {
|
|
||||||
[self performSegueWithIdentifier:@"SettingsToPowerManagementSegue" sender:nil];
|
|
||||||
} else if (cell == self.nightModeCell) {
|
|
||||||
[self performSegueWithIdentifier:@"SettingsToNightMode" sender:nil];
|
|
||||||
} else if (cell == self.voiceInstructionsCell) {
|
|
||||||
[self performSegueWithIdentifier:@"SettingsToTTSSegue" sender:nil];
|
|
||||||
} else if (cell == self.drivingOptionsCell) {
|
|
||||||
[self performSegueWithIdentifier:@"settingsToDrivingOptionsSegue" sender:nil];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
|
|
||||||
auto cell = [tableView cellForRowAtIndexPath:indexPath];
|
|
||||||
if (cell == self.iCloudSynchronizationCell) {
|
|
||||||
[self showICloudIsDisabledAlert];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark - UITableViewDataSource
|
|
||||||
|
|
||||||
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
|
|
||||||
switch (section) {
|
|
||||||
case 1:
|
|
||||||
return L(@"general_settings");
|
|
||||||
case 2:
|
|
||||||
return L(@"prefs_group_route");
|
|
||||||
case 3:
|
|
||||||
return L(@"info");
|
|
||||||
default:
|
|
||||||
return nil;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section {
|
|
||||||
switch (section) {
|
|
||||||
case 1:
|
|
||||||
return L(@"enable_logging_warning_message");
|
|
||||||
default:
|
|
||||||
return nil;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#import "MWMTableViewController.h"
|
|
||||||
|
|
||||||
@interface MWMTTSLanguageViewController : MWMTableViewController
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
#import "MWMTTSLanguageViewController.h"
|
|
||||||
#import "MWMTTSSettingsViewController.h"
|
|
||||||
#import "MWMTextToSpeech+CPP.h"
|
|
||||||
#import "SwiftBridge.h"
|
|
||||||
|
|
||||||
static NSString * const kUnwingSegueIdentifier = @"UnwindToTTSSettings";
|
|
||||||
|
|
||||||
@implementation MWMTTSLanguageViewController
|
|
||||||
|
|
||||||
- (void)viewDidLoad
|
|
||||||
{
|
|
||||||
[super viewDidLoad];
|
|
||||||
self.title = L(@"pref_tts_other_section_title");
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(SettingsTableViewSelectableCell *)sender
|
|
||||||
{
|
|
||||||
if (![segue.identifier isEqualToString:kUnwingSegueIdentifier])
|
|
||||||
return;
|
|
||||||
MWMTTSSettingsViewController * dest = segue.destinationViewController;
|
|
||||||
UITableViewCell * cell = sender;
|
|
||||||
NSUInteger const row = [self.tableView indexPathForCell:cell].row;
|
|
||||||
[dest setAdditionalTTSLanguage:[[MWMTextToSpeech tts] availableLanguages][row]];
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark - UITableViewDataSource && UITableViewDelegate
|
|
||||||
|
|
||||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
|
|
||||||
{
|
|
||||||
return [[MWMTextToSpeech tts] availableLanguages].size();
|
|
||||||
}
|
|
||||||
|
|
||||||
- (UITableViewCell *)tableView:(UITableView *)tableView
|
|
||||||
cellForRowAtIndexPath:(NSIndexPath *)indexPath
|
|
||||||
{
|
|
||||||
Class cls = [SettingsTableViewSelectableCell class];
|
|
||||||
auto cell = static_cast<SettingsTableViewSelectableCell *>(
|
|
||||||
[tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]);
|
|
||||||
[cell
|
|
||||||
configWithTitle:@([[MWMTextToSpeech tts] availableLanguages][indexPath.row].second.c_str())];
|
|
||||||
return cell;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
#import "MWMTableViewController.h"
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
#include <utility>
|
|
||||||
|
|
||||||
@interface MWMTTSSettingsViewController : MWMTableViewController
|
|
||||||
|
|
||||||
- (void)setAdditionalTTSLanguage:(std::pair<std::string, std::string> const &)l;
|
|
||||||
|
|
||||||
- (std::vector<std::pair<std::string, std::string>> const &)languages;
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -1,391 +0,0 @@
|
|||||||
#import "MWMTTSSettingsViewController.h"
|
|
||||||
#import <AVFoundation/AVFoundation.h>
|
|
||||||
#import "MWMTextToSpeech+CPP.h"
|
|
||||||
#import "TTSTester.h"
|
|
||||||
#import "SwiftBridge.h"
|
|
||||||
|
|
||||||
#include <CoreApi/Framework.h>
|
|
||||||
#include "LocaleTranslator.h"
|
|
||||||
|
|
||||||
using namespace locale_translator;
|
|
||||||
using namespace routing;
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
NSString * kSelectTTSLanguageSegueName = @"TTSLanguage";
|
|
||||||
|
|
||||||
enum class Section
|
|
||||||
{
|
|
||||||
VoiceInstructions,
|
|
||||||
StreetNames,
|
|
||||||
Language,
|
|
||||||
SpeedCameras,
|
|
||||||
Count
|
|
||||||
};
|
|
||||||
|
|
||||||
using SectionType = underlying_type_t<Section>;
|
|
||||||
|
|
||||||
struct BaseCellStategy
|
|
||||||
{
|
|
||||||
virtual UITableViewCell * BuildCell(UITableView * tableView, NSIndexPath * indexPath,
|
|
||||||
MWMTTSSettingsViewController * controller) = 0;
|
|
||||||
|
|
||||||
virtual void SelectCell(UITableView * /* tableView */, NSIndexPath * /* indexPath */,
|
|
||||||
MWMTTSSettingsViewController * /* controller */) {};
|
|
||||||
|
|
||||||
virtual NSString * TitleForFooter() const { return nil; }
|
|
||||||
|
|
||||||
virtual NSString * TitleForHeader() const { return nil; }
|
|
||||||
|
|
||||||
virtual size_t NumberOfRows(MWMTTSSettingsViewController * /* controller */) const { return 1; }
|
|
||||||
|
|
||||||
virtual ~BaseCellStategy() {}
|
|
||||||
};
|
|
||||||
|
|
||||||
UITableViewCell* voiceInstructionsCell;
|
|
||||||
UITableViewCell* streetNamesCell;
|
|
||||||
|
|
||||||
struct VoiceInstructionCellStrategy : BaseCellStategy
|
|
||||||
{
|
|
||||||
UITableViewCell * BuildCell(UITableView * tableView, NSIndexPath * indexPath,
|
|
||||||
MWMTTSSettingsViewController * controller) override
|
|
||||||
{
|
|
||||||
Class cls = [SettingsTableViewSwitchCell class];
|
|
||||||
auto cell = static_cast<SettingsTableViewSwitchCell *>(
|
|
||||||
[tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]);
|
|
||||||
[cell configWithDelegate:static_cast<id<SettingsTableViewSwitchCellDelegate>>(controller)
|
|
||||||
title:L(@"pref_tts_enable_title")
|
|
||||||
isOn:[MWMTextToSpeech isTTSEnabled]];
|
|
||||||
voiceInstructionsCell = cell;
|
|
||||||
return cell;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct LanguageCellStrategy : BaseCellStategy
|
|
||||||
{
|
|
||||||
TTSTester * ttsTester = [[TTSTester alloc] init];
|
|
||||||
|
|
||||||
UITableViewCell * BuildCell(UITableView * tableView, NSIndexPath * indexPath,
|
|
||||||
MWMTTSSettingsViewController * controller) override
|
|
||||||
{
|
|
||||||
NSInteger const row = indexPath.row;
|
|
||||||
// "Other" cell
|
|
||||||
if (row == controller.languages.size())
|
|
||||||
{
|
|
||||||
Class cls = [SettingsTableViewLinkCell class];
|
|
||||||
auto cell = static_cast<SettingsTableViewLinkCell *>(
|
|
||||||
[tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]);
|
|
||||||
[cell configWithTitle:L(@"pref_tts_other_section_title") info:nil];
|
|
||||||
return cell;
|
|
||||||
}
|
|
||||||
|
|
||||||
// "Test TTS" cell
|
|
||||||
if (row == controller.languages.size() + 1)
|
|
||||||
{
|
|
||||||
Class cls = [SettingsTableViewSelectableCell class];
|
|
||||||
auto cell = static_cast<SettingsTableViewSelectableCell *>(
|
|
||||||
[tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]);
|
|
||||||
[cell configWithTitle:L(@"pref_tts_test_voice_title")];
|
|
||||||
cell.accessoryType = UITableViewCellAccessoryNone;
|
|
||||||
return cell;
|
|
||||||
}
|
|
||||||
|
|
||||||
Class cls = [SettingsTableViewSelectableCell class];
|
|
||||||
auto cell = static_cast<SettingsTableViewSelectableCell *>(
|
|
||||||
[tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]);
|
|
||||||
pair<string, string> const p = controller.languages[row];
|
|
||||||
[cell configWithTitle:@(p.second.c_str())];
|
|
||||||
BOOL const isSelected = [@(p.first.c_str()) isEqualToString:[MWMTextToSpeech savedLanguage]];
|
|
||||||
if (isSelected)
|
|
||||||
{
|
|
||||||
m_selectedCell = cell;
|
|
||||||
cell.accessoryType = UITableViewCellAccessoryCheckmark;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cell.accessoryType = UITableViewCellAccessoryNone;
|
|
||||||
}
|
|
||||||
|
|
||||||
return cell;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t NumberOfRows(MWMTTSSettingsViewController * controller) const override
|
|
||||||
{
|
|
||||||
return controller.languages.size() + 2; // Number of languages + "Other" cell + "TTS Test" cell
|
|
||||||
}
|
|
||||||
|
|
||||||
NSString * TitleForHeader() const override { return L(@"pref_tts_language_title"); }
|
|
||||||
|
|
||||||
void SelectCell(UITableView * tableView, NSIndexPath * indexPath,
|
|
||||||
MWMTTSSettingsViewController * controller) override
|
|
||||||
{
|
|
||||||
NSInteger const row = indexPath.row;
|
|
||||||
if (row == controller.languages.size())
|
|
||||||
{
|
|
||||||
[controller performSegueWithIdentifier:kSelectTTSLanguageSegueName sender:nil];
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (row == controller.languages.size() + 1)
|
|
||||||
{
|
|
||||||
[ttsTester playRandomTestString];
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto cell = [tableView cellForRowAtIndexPath:indexPath];
|
|
||||||
if (m_selectedCell == cell)
|
|
||||||
return;
|
|
||||||
|
|
||||||
m_selectedCell.accessoryType = UITableViewCellAccessoryNone;
|
|
||||||
[[MWMTextToSpeech tts] setNotificationsLocale:@(controller.languages[row].first.c_str())];
|
|
||||||
cell.accessoryType = UITableViewCellAccessoryCheckmark;
|
|
||||||
m_selectedCell = cell;
|
|
||||||
}
|
|
||||||
|
|
||||||
SettingsTableViewSelectableCell * m_selectedCell = nil;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct CamerasCellStrategy : BaseCellStategy
|
|
||||||
{
|
|
||||||
UITableViewCell * BuildCell(UITableView * tableView, NSIndexPath * indexPath,
|
|
||||||
MWMTTSSettingsViewController * controller) override
|
|
||||||
{
|
|
||||||
auto const mode = GetFramework().GetRoutingManager().GetSpeedCamManager().GetMode();
|
|
||||||
Class cls = [SettingsTableViewSelectableCell class];
|
|
||||||
auto cell = static_cast<SettingsTableViewSelectableCell *>(
|
|
||||||
[tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]);
|
|
||||||
NSString * title = nil;
|
|
||||||
switch (static_cast<SpeedCameraManagerMode>(indexPath.row))
|
|
||||||
{
|
|
||||||
case SpeedCameraManagerMode::Auto: title = L(@"pref_tts_speedcams_auto"); break;
|
|
||||||
case SpeedCameraManagerMode::Always: title = L(@"pref_tts_speedcams_always"); break;
|
|
||||||
case SpeedCameraManagerMode::Never: title = L(@"pref_tts_speedcams_never"); break;
|
|
||||||
case SpeedCameraManagerMode::MaxValue: CHECK(false, ()); return nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
CHECK(title, ());
|
|
||||||
[cell configWithTitle:title];
|
|
||||||
bool const isSelectedCell = base::Underlying(mode) == indexPath.row;
|
|
||||||
if (isSelectedCell)
|
|
||||||
{
|
|
||||||
m_selectedCell = cell;
|
|
||||||
cell.accessoryType = UITableViewCellAccessoryCheckmark;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cell.accessoryType = UITableViewCellAccessoryNone;
|
|
||||||
}
|
|
||||||
|
|
||||||
return cell;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t NumberOfRows(MWMTTSSettingsViewController * /* controller */) const override
|
|
||||||
{
|
|
||||||
return base::Underlying(SpeedCameraManagerMode::MaxValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
NSString * TitleForHeader() const override { return L(@"speedcams_alert_title"); }
|
|
||||||
|
|
||||||
NSString * TitleForFooter() const override { return nil; }
|
|
||||||
|
|
||||||
void SelectCell(UITableView * tableView, NSIndexPath * indexPath,
|
|
||||||
MWMTTSSettingsViewController * /* controller */) override
|
|
||||||
{
|
|
||||||
auto cell = [tableView cellForRowAtIndexPath:indexPath];
|
|
||||||
if (cell == m_selectedCell)
|
|
||||||
return;
|
|
||||||
|
|
||||||
m_selectedCell.accessoryType = UITableViewCellAccessoryNone;
|
|
||||||
auto & scm = GetFramework().GetRoutingManager().GetSpeedCamManager();
|
|
||||||
auto const mode = static_cast<SpeedCameraManagerMode>(indexPath.row);
|
|
||||||
CHECK_NOT_EQUAL(mode, SpeedCameraManagerMode::MaxValue, ());
|
|
||||||
scm.SetMode(mode);
|
|
||||||
cell.accessoryType = UITableViewCellAccessoryCheckmark;
|
|
||||||
m_selectedCell = cell;
|
|
||||||
}
|
|
||||||
|
|
||||||
SettingsTableViewSelectableCell * m_selectedCell = nil;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct StreetNamesCellStrategy : BaseCellStategy
|
|
||||||
{
|
|
||||||
UITableViewCell * BuildCell(UITableView * tableView, NSIndexPath * indexPath,
|
|
||||||
MWMTTSSettingsViewController * controller) override
|
|
||||||
{
|
|
||||||
Class cls = [SettingsTableViewSwitchCell class];
|
|
||||||
auto cell = static_cast<SettingsTableViewSwitchCell *>(
|
|
||||||
[tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]);
|
|
||||||
[cell configWithDelegate:static_cast<id<SettingsTableViewSwitchCellDelegate>>(controller)
|
|
||||||
title:L(@"pref_tts_street_names_title")
|
|
||||||
isOn:[MWMTextToSpeech isStreetNamesTTSEnabled]];
|
|
||||||
streetNamesCell = cell;
|
|
||||||
return cell;
|
|
||||||
}
|
|
||||||
|
|
||||||
NSString * TitleForFooter() const override { return L(@"pref_tts_street_names_description"); }
|
|
||||||
};
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
@interface MWMTTSSettingsViewController ()<SettingsTableViewSwitchCellDelegate>
|
|
||||||
{
|
|
||||||
pair<string, string> m_additionalTTSLanguage;
|
|
||||||
vector<pair<string, string>> m_languages;
|
|
||||||
unordered_map<SectionType, unique_ptr<BaseCellStategy>> m_strategies;
|
|
||||||
}
|
|
||||||
|
|
||||||
@property(nonatomic) BOOL isLocaleLanguageAbsent;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation MWMTTSSettingsViewController
|
|
||||||
|
|
||||||
- (instancetype)initWithCoder:(NSCoder *)aDecoder
|
|
||||||
{
|
|
||||||
self = [super initWithCoder:aDecoder];
|
|
||||||
if (self)
|
|
||||||
{
|
|
||||||
using base::Underlying;
|
|
||||||
m_strategies.emplace(Underlying(Section::VoiceInstructions), make_unique<VoiceInstructionCellStrategy>());
|
|
||||||
m_strategies.emplace(Underlying(Section::StreetNames), make_unique<StreetNamesCellStrategy>());
|
|
||||||
m_strategies.emplace(Underlying(Section::Language), make_unique<LanguageCellStrategy>());
|
|
||||||
m_strategies.emplace(Underlying(Section::SpeedCameras), make_unique<CamerasCellStrategy>());
|
|
||||||
}
|
|
||||||
|
|
||||||
return self;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)viewDidLoad
|
|
||||||
{
|
|
||||||
[super viewDidLoad];
|
|
||||||
self.title = L(@"pref_tts_enable_title");
|
|
||||||
MWMTextToSpeech * tts = [MWMTextToSpeech tts];
|
|
||||||
|
|
||||||
m_languages.reserve(3);
|
|
||||||
pair<string, string> const standard = tts.standardLanguage;
|
|
||||||
m_languages.push_back(standard);
|
|
||||||
|
|
||||||
using namespace tts;
|
|
||||||
NSString * currentBcp47 = [AVSpeechSynthesisVoice currentLanguageCode];
|
|
||||||
string const currentBcp47Str = currentBcp47.UTF8String;
|
|
||||||
if (currentBcp47Str != standard.first && !currentBcp47Str.empty())
|
|
||||||
{
|
|
||||||
auto const & v = tts.availableLanguages;
|
|
||||||
NSAssert(!v.empty(), @"Vector can't be empty!");
|
|
||||||
std::string const translated = translateLocale(currentBcp47Str);
|
|
||||||
auto cur = std::make_pair(currentBcp47Str, translated);
|
|
||||||
if (translated.empty() || find(v.begin(), v.end(), cur) != v.end())
|
|
||||||
m_languages.push_back(std::move(cur));
|
|
||||||
else
|
|
||||||
self.isLocaleLanguageAbsent = YES;
|
|
||||||
}
|
|
||||||
|
|
||||||
NSString * nsSavedLanguage = [MWMTextToSpeech savedLanguage];
|
|
||||||
if (nsSavedLanguage.length)
|
|
||||||
{
|
|
||||||
std::string const savedLanguage = nsSavedLanguage.UTF8String;
|
|
||||||
if (savedLanguage != currentBcp47Str && savedLanguage != standard.first &&
|
|
||||||
!savedLanguage.empty())
|
|
||||||
m_languages.emplace_back(savedLanguage, translateLocale(savedLanguage));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (IBAction)unwind:(id)sender
|
|
||||||
{
|
|
||||||
size_t const size = m_languages.size();
|
|
||||||
if (find(m_languages.begin(), m_languages.end(), m_additionalTTSLanguage) != m_languages.end())
|
|
||||||
{
|
|
||||||
[self.tableView reloadData];
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
switch (size)
|
|
||||||
{
|
|
||||||
case 1: m_languages.push_back(m_additionalTTSLanguage); break;
|
|
||||||
case 2:
|
|
||||||
if (self.isLocaleLanguageAbsent)
|
|
||||||
m_languages[size - 1] = m_additionalTTSLanguage;
|
|
||||||
else
|
|
||||||
m_languages.push_back(m_additionalTTSLanguage);
|
|
||||||
break;
|
|
||||||
case 3: m_languages[size - 1] = m_additionalTTSLanguage; break;
|
|
||||||
default: NSAssert(false, @"Incorrect language's count"); break;
|
|
||||||
}
|
|
||||||
[self.tableView reloadData];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setAdditionalTTSLanguage:(pair<string, string> const &)l
|
|
||||||
{
|
|
||||||
[[MWMTextToSpeech tts] setNotificationsLocale:@(l.first.c_str())];
|
|
||||||
m_additionalTTSLanguage = l;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (vector<pair<string, string>> const &)languages
|
|
||||||
{
|
|
||||||
return m_languages;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark - UITableViewDataSource
|
|
||||||
|
|
||||||
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
|
|
||||||
{
|
|
||||||
auto const & strategy = m_strategies[static_cast<SectionType>(section)];
|
|
||||||
CHECK(strategy, ());
|
|
||||||
return strategy->TitleForHeader();
|
|
||||||
}
|
|
||||||
|
|
||||||
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
|
|
||||||
{
|
|
||||||
auto const & strategy = m_strategies[static_cast<SectionType>(section)];
|
|
||||||
CHECK(strategy, ());
|
|
||||||
return strategy->TitleForFooter();
|
|
||||||
}
|
|
||||||
|
|
||||||
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
|
|
||||||
{
|
|
||||||
return [MWMTextToSpeech isTTSEnabled] ? base::Underlying(Section::Count) : 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
|
|
||||||
{
|
|
||||||
auto const & strategy = m_strategies[static_cast<SectionType>(section)];
|
|
||||||
CHECK(strategy, ());
|
|
||||||
return strategy->NumberOfRows(self);
|
|
||||||
}
|
|
||||||
|
|
||||||
- (UITableViewCell *)tableView:(UITableView *)tableView
|
|
||||||
cellForRowAtIndexPath:(NSIndexPath *)indexPath
|
|
||||||
{
|
|
||||||
auto const & strategy = m_strategies[static_cast<SectionType>(indexPath.section)];
|
|
||||||
CHECK(strategy, ());
|
|
||||||
return strategy->BuildCell(tableView, indexPath, self);
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
|
|
||||||
{
|
|
||||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
|
||||||
auto const & strategy = m_strategies[static_cast<SectionType>(indexPath.section)];
|
|
||||||
CHECK(strategy, ());
|
|
||||||
return strategy->SelectCell(tableView, indexPath, self);
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark - SettingsTableViewSwitchCellDelegate
|
|
||||||
|
|
||||||
- (void)switchCell:(SettingsTableViewSwitchCell *)cell didChangeValue:(BOOL)value
|
|
||||||
{
|
|
||||||
if (cell == voiceInstructionsCell)
|
|
||||||
{
|
|
||||||
[MWMTextToSpeech setTTSEnabled:value];
|
|
||||||
auto indexSet = [NSIndexSet indexSetWithIndexesInRange:{base::Underlying(Section::StreetNames), base::Underlying(Section::Count) - 1}];
|
|
||||||
auto const animation = UITableViewRowAnimationFade;
|
|
||||||
if (value)
|
|
||||||
[self.tableView insertSections:indexSet withRowAnimation:animation];
|
|
||||||
else
|
|
||||||
[self.tableView deleteSections:indexSet withRowAnimation:animation];
|
|
||||||
}
|
|
||||||
else if (cell == streetNamesCell)
|
|
||||||
{
|
|
||||||
[MWMTextToSpeech setStreetNamesTTSEnabled:value];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#import "MWMTableViewController.h"
|
|
||||||
|
|
||||||
@interface MWMUnitsController : MWMTableViewController
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
#import "MWMUnitsController.h"
|
|
||||||
#import "MWMSettings.h"
|
|
||||||
#import "SwiftBridge.h"
|
|
||||||
|
|
||||||
@interface MWMUnitsController ()
|
|
||||||
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSelectableCell * kilometers;
|
|
||||||
@property(weak, nonatomic) IBOutlet SettingsTableViewSelectableCell * miles;
|
|
||||||
@property(weak, nonatomic) SettingsTableViewSelectableCell * selectedCell;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation MWMUnitsController
|
|
||||||
|
|
||||||
- (void)viewDidLoad
|
|
||||||
{
|
|
||||||
[super viewDidLoad];
|
|
||||||
self.title = L(@"measurement_units");
|
|
||||||
|
|
||||||
switch ([MWMSettings measurementUnits])
|
|
||||||
{
|
|
||||||
case MWMUnitsMetric: self.selectedCell = self.kilometers; break;
|
|
||||||
case MWMUnitsImperial: self.selectedCell = self.miles; break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setSelectedCell:(SettingsTableViewSelectableCell *)cell
|
|
||||||
{
|
|
||||||
SettingsTableViewSelectableCell * selectedCell = _selectedCell;
|
|
||||||
if (selectedCell == cell)
|
|
||||||
return;
|
|
||||||
|
|
||||||
selectedCell.accessoryType = UITableViewCellAccessoryNone;
|
|
||||||
cell.accessoryType = UITableViewCellAccessoryCheckmark;
|
|
||||||
cell.selected = NO;
|
|
||||||
_selectedCell = cell;
|
|
||||||
if (cell == self.kilometers)
|
|
||||||
[MWMSettings setMeasurementUnits:MWMUnitsMetric];
|
|
||||||
else
|
|
||||||
[MWMSettings setMeasurementUnits:MWMUnitsImperial];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
|
|
||||||
{
|
|
||||||
self.selectedCell = [tableView cellForRowAtIndexPath:indexPath];
|
|
||||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
|
|
||||||
/// View for the OpenStreetMapp profile
|
/// View for the OpenStreetMapp profile
|
||||||
struct ExistingProfileView: View {
|
struct ExistingProfileView: View {
|
||||||
// MARK: - Properties
|
// MARK: - Properties
|
||||||
@@ -25,6 +24,10 @@ struct ExistingProfileView: View {
|
|||||||
@State private var showNotes: Bool = false
|
@State private var showNotes: Bool = false
|
||||||
|
|
||||||
|
|
||||||
|
/// The publisher to know when to stop showing the Safari view for the login form
|
||||||
|
private let stopShowingLoginPublisher = NotificationCenter.default.publisher(for: SafariView.dismissNotificationName)
|
||||||
|
|
||||||
|
|
||||||
/// If the profile is being presented as an alert
|
/// If the profile is being presented as an alert
|
||||||
var isPresentedAsAlert: Bool = false
|
var isPresentedAsAlert: Bool = false
|
||||||
|
|
||||||
@@ -33,36 +36,32 @@ struct ExistingProfileView: View {
|
|||||||
var body: some View {
|
var body: some View {
|
||||||
VStack(alignment: .leading) {
|
VStack(alignment: .leading) {
|
||||||
if Profile.needsReauthorization {
|
if Profile.needsReauthorization {
|
||||||
ScrollView {
|
List {
|
||||||
Text("osm_profile_reauthorize_promt")
|
Text("osm_profile_reauthorize_promt")
|
||||||
.font(.headline)
|
.font(.headline)
|
||||||
.frame(maxWidth: .infinity, alignment: .leading)
|
.frame(maxWidth: .infinity, alignment: .leading)
|
||||||
.padding()
|
|
||||||
}
|
}
|
||||||
} else if !isPresentedAsAlert {
|
} else if !isPresentedAsAlert {
|
||||||
ScrollView {
|
List {
|
||||||
VStack {
|
Section {
|
||||||
VStack {
|
VStack {
|
||||||
Text(Profile.numberOfEdits ?? 0, format: .number)
|
Text(Profile.numberOfEdits ?? 0, format: .number)
|
||||||
.font(.largeTitle)
|
.font(.largeTitle)
|
||||||
.bold()
|
.bold()
|
||||||
.frame(maxWidth: .infinity)
|
.frame(maxWidth: .infinity)
|
||||||
|
|
||||||
Text("osm_profile_verfied_changes")
|
Text("osm_profile_verfied_changes")
|
||||||
}
|
}
|
||||||
.padding()
|
.padding([.top, .bottom])
|
||||||
.frame(maxWidth: .infinity)
|
.frame(maxWidth: .infinity)
|
||||||
.background {
|
} footer: {
|
||||||
RoundedRectangle(cornerRadius: 10)
|
|
||||||
.stroke(Color.secondary.opacity(0.3), lineWidth: 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
if let editHistoryUrl = Profile.editHistoryUrl {
|
if let editHistoryUrl = Profile.editHistoryUrl {
|
||||||
Button {
|
Button {
|
||||||
showEditHistory = true
|
showEditHistory = true
|
||||||
} label: {
|
} label: {
|
||||||
Text("osm_profile_view_edit_history")
|
Text("osm_profile_view_edit_history")
|
||||||
.frame(maxWidth: .infinity)
|
.lineLimit(1)
|
||||||
|
.frame(maxWidth: .infinity)
|
||||||
}
|
}
|
||||||
.buttonStyle(BorderedProminentButtonStyle())
|
.buttonStyle(BorderedProminentButtonStyle())
|
||||||
.controlSize(.large)
|
.controlSize(.large)
|
||||||
@@ -70,25 +69,30 @@ struct ExistingProfileView: View {
|
|||||||
.sheet(isPresented: $showEditHistory) {
|
.sheet(isPresented: $showEditHistory) {
|
||||||
SafariView(url: editHistoryUrl, dismissButton: .close)
|
SafariView(url: editHistoryUrl, dismissButton: .close)
|
||||||
}
|
}
|
||||||
|
.padding([.top, .bottom])
|
||||||
|
.listRowInsets(.init(top: 0, leading: 0, bottom: 0, trailing: 0))
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if let notesUrl = Profile.notesUrl {
|
|
||||||
|
if let notesUrl = Profile.notesUrl {
|
||||||
|
Section {
|
||||||
Button {
|
Button {
|
||||||
showNotes = true
|
showNotes = true
|
||||||
} label: {
|
} label: {
|
||||||
Text("osm_profile_view_notes")
|
Text("osm_profile_view_notes")
|
||||||
.frame(maxWidth: .infinity)
|
.lineLimit(1)
|
||||||
|
.frame(maxWidth: .infinity)
|
||||||
}
|
}
|
||||||
.buttonStyle(BorderedProminentButtonStyle())
|
.buttonStyle(BorderedProminentButtonStyle())
|
||||||
|
.buttonBorderShape(.roundedRectangle(radius: 0))
|
||||||
.controlSize(.large)
|
.controlSize(.large)
|
||||||
.font(.headline)
|
.font(.headline)
|
||||||
.padding(.top)
|
|
||||||
.sheet(isPresented: $showNotes) {
|
.sheet(isPresented: $showNotes) {
|
||||||
SafariView(url: notesUrl, dismissButton: .close)
|
SafariView(url: notesUrl, dismissButton: .close)
|
||||||
}
|
}
|
||||||
|
.listRowInsets(.init(top: 0, leading: 0, bottom: 0, trailing: 0))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.padding()
|
|
||||||
}
|
}
|
||||||
.refreshable {
|
.refreshable {
|
||||||
await Profile.reload()
|
await Profile.reload()
|
||||||
@@ -106,7 +110,8 @@ struct ExistingProfileView: View {
|
|||||||
showLogin = true
|
showLogin = true
|
||||||
} label: {
|
} label: {
|
||||||
Text("osm_profile_reauthorize")
|
Text("osm_profile_reauthorize")
|
||||||
.frame(maxWidth: .infinity)
|
.lineLimit(1)
|
||||||
|
.frame(maxWidth: .infinity)
|
||||||
}
|
}
|
||||||
.buttonStyle(BorderedProminentButtonStyle())
|
.buttonStyle(BorderedProminentButtonStyle())
|
||||||
.controlSize(.large)
|
.controlSize(.large)
|
||||||
@@ -116,7 +121,7 @@ struct ExistingProfileView: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Divider()
|
Divider()
|
||||||
.padding([.top, .bottom])
|
.padding([.top, .bottom])
|
||||||
|
|
||||||
VStack(alignment: .leading) {
|
VStack(alignment: .leading) {
|
||||||
Text("osm_profile_remove_promt")
|
Text("osm_profile_remove_promt")
|
||||||
@@ -126,7 +131,8 @@ struct ExistingProfileView: View {
|
|||||||
lastUpdated = Date.now
|
lastUpdated = Date.now
|
||||||
} label: {
|
} label: {
|
||||||
Text("osm_profile_remove")
|
Text("osm_profile_remove")
|
||||||
.frame(maxWidth: .infinity)
|
.lineLimit(1)
|
||||||
|
.frame(maxWidth: .infinity)
|
||||||
}
|
}
|
||||||
.buttonStyle(BorderedButtonStyle())
|
.buttonStyle(BorderedButtonStyle())
|
||||||
.controlSize(.large)
|
.controlSize(.large)
|
||||||
@@ -139,7 +145,8 @@ struct ExistingProfileView: View {
|
|||||||
}
|
}
|
||||||
} label: {
|
} label: {
|
||||||
Text("osm_more_about")
|
Text("osm_more_about")
|
||||||
.frame(maxWidth: .infinity)
|
.lineLimit(1)
|
||||||
|
.frame(maxWidth: .infinity)
|
||||||
}
|
}
|
||||||
.buttonStyle(BorderedButtonStyle())
|
.buttonStyle(BorderedButtonStyle())
|
||||||
.controlSize(.large)
|
.controlSize(.large)
|
||||||
@@ -147,6 +154,10 @@ struct ExistingProfileView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.padding([.bottom, .leading, .trailing])
|
.padding([.bottom, .leading, .trailing])
|
||||||
|
.background(Color(uiColor: .systemGroupedBackground))
|
||||||
|
}
|
||||||
|
.onReceive(stopShowingLoginPublisher) { _ in
|
||||||
|
showLogin = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
|
|
||||||
/// View for the OpenStreetMapp profile
|
/// View for the OpenStreetMapp profile
|
||||||
struct NoExistingProfileView: View {
|
struct NoExistingProfileView: View {
|
||||||
// MARK: - Properties
|
// MARK: - Properties
|
||||||
@@ -13,25 +12,29 @@ struct NoExistingProfileView: View {
|
|||||||
@State private var showLogin: Bool = false
|
@State private var showLogin: Bool = false
|
||||||
|
|
||||||
|
|
||||||
|
/// The publisher to know when to stop showing the Safari view for the login form
|
||||||
|
private let stopShowingLoginPublisher = NotificationCenter.default.publisher(for: SafariView.dismissNotificationName)
|
||||||
|
|
||||||
|
|
||||||
/// The actual view
|
/// The actual view
|
||||||
var body: some View {
|
var body: some View {
|
||||||
VStack(alignment: .leading) {
|
VStack(alignment: .leading) {
|
||||||
ScrollView {
|
List {
|
||||||
VStack(alignment: .leading) {
|
VStack(alignment: .leading) {
|
||||||
Text("osm_profile_promt")
|
Text("osm_profile_promt")
|
||||||
.font(.headline)
|
.font(.headline)
|
||||||
|
|
||||||
HStack(alignment: .top) {
|
HStack(alignment: .top) {
|
||||||
Image(.osmLogo)
|
Image(.osmLogo)
|
||||||
.resizable()
|
.resizable()
|
||||||
.aspectRatio(1, contentMode: .fit)
|
.aspectRatio(1, contentMode: .fit)
|
||||||
.frame(maxWidth: 50)
|
.frame(maxWidth: 50)
|
||||||
.padding(.top, 6)
|
.padding(.top, 6)
|
||||||
|
|
||||||
Text("osm_profile_explanation")
|
Text("osm_profile_explanation")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.padding()
|
.padding(.bottom)
|
||||||
}
|
}
|
||||||
|
|
||||||
Spacer(minLength: 0)
|
Spacer(minLength: 0)
|
||||||
@@ -42,7 +45,8 @@ struct NoExistingProfileView: View {
|
|||||||
showLogin = true
|
showLogin = true
|
||||||
} label: {
|
} label: {
|
||||||
Text("osm_profile_login")
|
Text("osm_profile_login")
|
||||||
.frame(maxWidth: .infinity)
|
.lineLimit(1)
|
||||||
|
.frame(maxWidth: .infinity)
|
||||||
}
|
}
|
||||||
.buttonStyle(BorderedProminentButtonStyle())
|
.buttonStyle(BorderedProminentButtonStyle())
|
||||||
.controlSize(.large)
|
.controlSize(.large)
|
||||||
@@ -53,7 +57,7 @@ struct NoExistingProfileView: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Divider()
|
Divider()
|
||||||
.padding([.top, .bottom])
|
.padding([.top, .bottom])
|
||||||
|
|
||||||
VStack(alignment: .leading) {
|
VStack(alignment: .leading) {
|
||||||
Text("osm_profile_register_promt")
|
Text("osm_profile_register_promt")
|
||||||
@@ -62,7 +66,8 @@ struct NoExistingProfileView: View {
|
|||||||
openUrl(Profile.registrationUrl)
|
openUrl(Profile.registrationUrl)
|
||||||
} label: {
|
} label: {
|
||||||
Text("osm_profile_register")
|
Text("osm_profile_register")
|
||||||
.frame(maxWidth: .infinity)
|
.lineLimit(1)
|
||||||
|
.frame(maxWidth: .infinity)
|
||||||
}
|
}
|
||||||
.buttonStyle(BorderedButtonStyle())
|
.buttonStyle(BorderedButtonStyle())
|
||||||
.controlSize(.large)
|
.controlSize(.large)
|
||||||
@@ -70,6 +75,10 @@ struct NoExistingProfileView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.padding([.bottom, .leading, .trailing])
|
.padding([.bottom, .leading, .trailing])
|
||||||
|
.background(Color(uiColor: .systemGroupedBackground))
|
||||||
|
}
|
||||||
|
.onReceive(stopShowingLoginPublisher) { _ in
|
||||||
|
showLogin = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
|
|
||||||
/// View for the OpenStreetMap profile
|
/// View for the OpenStreetMap profile
|
||||||
struct ProfileView: View {
|
struct ProfileView: View {
|
||||||
// MARK: - Properties
|
// MARK: - Properties
|
||||||
@@ -21,6 +20,10 @@ struct ProfileView: View {
|
|||||||
var isPresentedAsAlert: Bool = false
|
var isPresentedAsAlert: Bool = false
|
||||||
|
|
||||||
|
|
||||||
|
/// The publisher to know when to stop showing the Safari view for the login form
|
||||||
|
private let stopShowingLoginPublisher = NotificationCenter.default.publisher(for: SafariView.dismissNotificationName)
|
||||||
|
|
||||||
|
|
||||||
/// The actual view
|
/// The actual view
|
||||||
var body: some View {
|
var body: some View {
|
||||||
NavigationView {
|
NavigationView {
|
||||||
@@ -33,7 +36,7 @@ struct ProfileView: View {
|
|||||||
Text("close")
|
Text("close")
|
||||||
} icon: {
|
} icon: {
|
||||||
Image(systemName: "xmark.circle.fill")
|
Image(systemName: "xmark.circle.fill")
|
||||||
.font(.title)
|
.font(.title)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.labelStyle(.iconOnly)
|
.labelStyle(.iconOnly)
|
||||||
@@ -41,6 +44,7 @@ struct ProfileView: View {
|
|||||||
.foregroundStyle(.primary)
|
.foregroundStyle(.primary)
|
||||||
.padding([.top, .leading, .trailing])
|
.padding([.top, .leading, .trailing])
|
||||||
.frame(maxWidth: .infinity, alignment: .trailing)
|
.frame(maxWidth: .infinity, alignment: .trailing)
|
||||||
|
.background(Color(uiColor: .systemGroupedBackground))
|
||||||
}
|
}
|
||||||
|
|
||||||
if Profile.isExisting {
|
if Profile.isExisting {
|
||||||
@@ -50,6 +54,7 @@ struct ProfileView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.accentColor(.accent)
|
||||||
.navigationViewStyle(StackNavigationViewStyle())
|
.navigationViewStyle(StackNavigationViewStyle())
|
||||||
.navigationTitle(Profile.name ?? String(localized: "osm_profile"))
|
.navigationTitle(Profile.name ?? String(localized: "osm_profile"))
|
||||||
.toolbar {
|
.toolbar {
|
||||||
@@ -71,5 +76,10 @@ struct ProfileView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.tag(lastUpdated)
|
.tag(lastUpdated)
|
||||||
|
.onReceive(stopShowingLoginPublisher) { _ in
|
||||||
|
if isPresentedAsAlert {
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
177
iphone/Maps/UI/Settings/SettingsNavigationView.swift
Normal file
177
iphone/Maps/UI/Settings/SettingsNavigationView.swift
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
/// View for thenavigation settings
|
||||||
|
struct SettingsNavigationView: View {
|
||||||
|
// MARK: - Properties
|
||||||
|
|
||||||
|
/// If the perspective view should be used during routing
|
||||||
|
@State var hasPerspectiveViewWhileRouting: Bool = true
|
||||||
|
|
||||||
|
|
||||||
|
/// If auto zoom should be used during routing
|
||||||
|
@State var hasAutoZoomWhileRouting: Bool = true
|
||||||
|
|
||||||
|
|
||||||
|
/// If voice guidance should be provided during routing
|
||||||
|
@State var shouldProvideVoiceRouting: Bool = true
|
||||||
|
|
||||||
|
|
||||||
|
/// The selected language for voice guidance during routing
|
||||||
|
@State var selectedLanguageForVoiceRouting: Settings.VoiceRoutingLanguage.ID? = nil
|
||||||
|
|
||||||
|
|
||||||
|
/// If street names should be announced in the voice guidance during routing
|
||||||
|
@State var shouldAnnounceStreetnamesWhileVoiceRouting: Bool = false
|
||||||
|
|
||||||
|
|
||||||
|
/// The selected announcement of speed traps in the voice guidance during routing
|
||||||
|
@State var selectedAnnouncingSpeedTrapsWhileVoiceRouting: Settings.AnnouncingSpeedTrapsWhileVoiceRouting = .never
|
||||||
|
|
||||||
|
|
||||||
|
/// If toll roads should be avoided during routing
|
||||||
|
@State var shouldAvoidTollRoadsWhileRouting: Bool = false
|
||||||
|
|
||||||
|
|
||||||
|
/// If unpaved roads should be avoided during routing
|
||||||
|
@State var shouldAvoidUnpavedRoadsWhileRouting: Bool = false
|
||||||
|
|
||||||
|
|
||||||
|
/// If ferries should be avoided during routing
|
||||||
|
@State var shouldAvoidFerriesWhileRouting: Bool = false
|
||||||
|
|
||||||
|
|
||||||
|
/// If motorways should be avoided during routing
|
||||||
|
@State var shouldAvoidMotorwaysWhileRouting: Bool = false
|
||||||
|
|
||||||
|
|
||||||
|
/// The actual view
|
||||||
|
var body: some View {
|
||||||
|
NavigationView {
|
||||||
|
List {
|
||||||
|
Section {
|
||||||
|
Toggle("pref_map_3d_title", isOn: $hasPerspectiveViewWhileRouting)
|
||||||
|
.tint(.accent)
|
||||||
|
|
||||||
|
Toggle("pref_map_auto_zoom", isOn: $hasAutoZoomWhileRouting)
|
||||||
|
.tint(.accent)
|
||||||
|
}
|
||||||
|
|
||||||
|
Section {
|
||||||
|
Toggle("pref_tts_enable_title", isOn: $shouldProvideVoiceRouting)
|
||||||
|
.tint(.accent)
|
||||||
|
|
||||||
|
if shouldProvideVoiceRouting {
|
||||||
|
Picker(selection: $selectedLanguageForVoiceRouting) {
|
||||||
|
ForEach(Settings.availableLanguagesForVoiceRouting) { languageForVoiceRouting in
|
||||||
|
Text(languageForVoiceRouting.localizedName)
|
||||||
|
.tag(languageForVoiceRouting.id)
|
||||||
|
}
|
||||||
|
} label: {
|
||||||
|
Text("pref_tts_language_title")
|
||||||
|
}
|
||||||
|
|
||||||
|
Toggle(isOn: $shouldAnnounceStreetnamesWhileVoiceRouting) {
|
||||||
|
VStack(alignment: .leading) {
|
||||||
|
Text("pref_tts_street_names_title")
|
||||||
|
|
||||||
|
Text("pref_tts_street_names_description")
|
||||||
|
.font(.footnote)
|
||||||
|
.foregroundStyle(.secondary)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.tint(.accent)
|
||||||
|
|
||||||
|
Picker(selection: $selectedAnnouncingSpeedTrapsWhileVoiceRouting) {
|
||||||
|
ForEach(Settings.AnnouncingSpeedTrapsWhileVoiceRouting.allCases) { announcingSpeedTrapsWhileVoiceRouting in
|
||||||
|
Text(announcingSpeedTrapsWhileVoiceRouting.description)
|
||||||
|
}
|
||||||
|
} label: {
|
||||||
|
Text("speedcams_alert_title")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} header: {
|
||||||
|
Text("pref_tts_title")
|
||||||
|
} footer: {
|
||||||
|
Button {
|
||||||
|
Settings.playVoiceRoutingTest()
|
||||||
|
} label: {
|
||||||
|
Text("pref_tts_test_voice_title")
|
||||||
|
.bold()
|
||||||
|
.lineLimit(1)
|
||||||
|
.padding(4)
|
||||||
|
.frame(maxWidth: .infinity)
|
||||||
|
}
|
||||||
|
.buttonStyle(BorderedButtonStyle())
|
||||||
|
.padding([.top, .bottom])
|
||||||
|
.listRowInsets(.init(top: 0, leading: 0, bottom: 0, trailing: 0))
|
||||||
|
}
|
||||||
|
|
||||||
|
Section {
|
||||||
|
Toggle("avoid_tolls", isOn: $shouldAvoidTollRoadsWhileRouting)
|
||||||
|
.tint(.accent)
|
||||||
|
|
||||||
|
Toggle("avoid_unpaved", isOn: $shouldAvoidUnpavedRoadsWhileRouting)
|
||||||
|
.tint(.accent)
|
||||||
|
|
||||||
|
Toggle("avoid_ferry", isOn: $shouldAvoidFerriesWhileRouting)
|
||||||
|
.tint(.accent)
|
||||||
|
|
||||||
|
Toggle("avoid_motorways", isOn: $shouldAvoidMotorwaysWhileRouting)
|
||||||
|
.tint(.accent)
|
||||||
|
} header: {
|
||||||
|
Text("driving_options_title")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.accentColor(.accent)
|
||||||
|
.navigationViewStyle(StackNavigationViewStyle())
|
||||||
|
.navigationTitle(String(localized: "prefs_group_route"))
|
||||||
|
.onAppear {
|
||||||
|
hasPerspectiveViewWhileRouting = Settings.hasPerspectiveViewWhileRouting
|
||||||
|
hasAutoZoomWhileRouting = Settings.hasAutoZoomWhileRouting
|
||||||
|
shouldProvideVoiceRouting = Settings.shouldProvideVoiceRouting
|
||||||
|
selectedLanguageForVoiceRouting = Settings.languageForVoiceRouting
|
||||||
|
shouldAnnounceStreetnamesWhileVoiceRouting = Settings.shouldAnnounceStreetnamesWhileVoiceRouting
|
||||||
|
selectedAnnouncingSpeedTrapsWhileVoiceRouting = Settings.announcingSpeedTrapsWhileVoiceRouting
|
||||||
|
shouldAvoidTollRoadsWhileRouting = Settings.shouldAvoidTollRoadsWhileRouting
|
||||||
|
shouldAvoidUnpavedRoadsWhileRouting = Settings.shouldAvoidUnpavedRoadsWhileRouting
|
||||||
|
shouldAvoidFerriesWhileRouting = Settings.shouldAvoidFerriesWhileRouting
|
||||||
|
shouldAvoidMotorwaysWhileRouting = Settings.shouldAvoidMotorwaysWhileRouting
|
||||||
|
}
|
||||||
|
.onChange(of: hasPerspectiveViewWhileRouting) { changedHasPerspectiveViewWhileRouting in
|
||||||
|
Settings.hasPerspectiveViewWhileRouting = changedHasPerspectiveViewWhileRouting
|
||||||
|
}
|
||||||
|
.onChange(of: hasAutoZoomWhileRouting) { changedHasAutoZoomWhileRouting in
|
||||||
|
Settings.hasAutoZoomWhileRouting = changedHasAutoZoomWhileRouting
|
||||||
|
}
|
||||||
|
.onChange(of: shouldProvideVoiceRouting) { changedShouldProvideVoiceRouting in
|
||||||
|
Settings.shouldProvideVoiceRouting = changedShouldProvideVoiceRouting
|
||||||
|
}
|
||||||
|
.onChange(of: selectedLanguageForVoiceRouting) { changedSelectedLanguageForVoiceRouting in
|
||||||
|
if let changedSelectedLanguageForVoiceRouting {
|
||||||
|
Settings.languageForVoiceRouting = changedSelectedLanguageForVoiceRouting
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.onChange(of: shouldAnnounceStreetnamesWhileVoiceRouting) { changedShouldAnnounceStreetnamesWhileVoiceRouting in
|
||||||
|
Settings.shouldAnnounceStreetnamesWhileVoiceRouting = changedShouldAnnounceStreetnamesWhileVoiceRouting
|
||||||
|
}
|
||||||
|
.onChange(of: selectedAnnouncingSpeedTrapsWhileVoiceRouting) { changedSelectedAnnouncingSpeedTrapsWhileVoiceRouting in
|
||||||
|
Settings.announcingSpeedTrapsWhileVoiceRouting = changedSelectedAnnouncingSpeedTrapsWhileVoiceRouting
|
||||||
|
}
|
||||||
|
.onChange(of: shouldAvoidTollRoadsWhileRouting) { changedShouldAvoidTollRoadsWhileRouting in
|
||||||
|
Settings.shouldAvoidTollRoadsWhileRouting = changedShouldAvoidTollRoadsWhileRouting
|
||||||
|
}
|
||||||
|
.onChange(of: shouldAvoidUnpavedRoadsWhileRouting) { changedShouldAvoidUnpavedRoadsWhileRouting in
|
||||||
|
Settings.shouldAvoidUnpavedRoadsWhileRouting = changedShouldAvoidUnpavedRoadsWhileRouting
|
||||||
|
}
|
||||||
|
.onChange(of: shouldAvoidUnpavedRoadsWhileRouting) { changedShouldAvoidUnpavedRoadsWhileRouting in
|
||||||
|
Settings.shouldAvoidUnpavedRoadsWhileRouting = changedShouldAvoidUnpavedRoadsWhileRouting
|
||||||
|
}
|
||||||
|
.onChange(of: shouldAvoidFerriesWhileRouting) { changedShouldAvoidFerriesWhileRouting in
|
||||||
|
Settings.shouldAvoidFerriesWhileRouting = changedShouldAvoidFerriesWhileRouting
|
||||||
|
}
|
||||||
|
.onChange(of: shouldAvoidMotorwaysWhileRouting) { changedShouldAvoidMotorwaysWhileRouting in
|
||||||
|
Settings.shouldAvoidMotorwaysWhileRouting = changedShouldAvoidMotorwaysWhileRouting
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
299
iphone/Maps/UI/Settings/SettingsView.swift
Normal file
299
iphone/Maps/UI/Settings/SettingsView.swift
Normal file
@@ -0,0 +1,299 @@
|
|||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
/// View for the settings
|
||||||
|
struct SettingsView: View {
|
||||||
|
// MARK: - Properties
|
||||||
|
|
||||||
|
/// The dismiss action of the environment
|
||||||
|
@Environment(\.dismiss) private var dismiss
|
||||||
|
|
||||||
|
|
||||||
|
/// The selected distance unit
|
||||||
|
@State private var selectedDistanceUnit: Settings.DistanceUnit = .metric
|
||||||
|
|
||||||
|
|
||||||
|
/// If zoom buttons should be displayed
|
||||||
|
@State private var hasZoomButtons: Bool = true
|
||||||
|
|
||||||
|
|
||||||
|
/// If 3D buildings should be displayed
|
||||||
|
@State private var has3dBuildings: Bool = true
|
||||||
|
|
||||||
|
|
||||||
|
/// If automatic map downloads should be enabled
|
||||||
|
@State private var hasAutomaticDownload: Bool = true
|
||||||
|
|
||||||
|
|
||||||
|
/// If an increased font size should be used for map labels
|
||||||
|
@State private var hasIncreasedFontsize: Bool = false
|
||||||
|
|
||||||
|
|
||||||
|
/// If names should be transliterated to Latin
|
||||||
|
@State private var shouldTransliterateToLatin: Bool = true
|
||||||
|
|
||||||
|
|
||||||
|
/// The selected appearance
|
||||||
|
@State private var selectedAppearance: Settings.Appearance = .auto
|
||||||
|
|
||||||
|
|
||||||
|
/// If the bookmarks should be synced via iCloud
|
||||||
|
@State private var shouldSync: Bool = false
|
||||||
|
|
||||||
|
|
||||||
|
/// If the sync beta alert should be shown
|
||||||
|
@State private var showSyncBetaAlert: Bool = false
|
||||||
|
|
||||||
|
|
||||||
|
/// If the sync is possible
|
||||||
|
@State private var isSyncPossible: Bool = true
|
||||||
|
|
||||||
|
|
||||||
|
/// If the compass should be calibrated
|
||||||
|
@State private var shouldCalibrateCompass: Bool = true
|
||||||
|
|
||||||
|
|
||||||
|
/// The selected power saving mode
|
||||||
|
@State private var selectedPowerSavingMode: Settings.PowerSavingMode = .never
|
||||||
|
|
||||||
|
|
||||||
|
/// The selected mobile data policy
|
||||||
|
@State private var selectedMobileDataPolicy: Settings.MobileDataPolicy = .always
|
||||||
|
|
||||||
|
|
||||||
|
/// If our custom logging is enabled
|
||||||
|
@State private var isLogging: Bool = false
|
||||||
|
|
||||||
|
|
||||||
|
/// The actual view
|
||||||
|
var body: some View {
|
||||||
|
NavigationView {
|
||||||
|
List {
|
||||||
|
Section {
|
||||||
|
NavigationLink {
|
||||||
|
ProfileView()
|
||||||
|
} label: {
|
||||||
|
HStack {
|
||||||
|
Text("osm_profile")
|
||||||
|
.lineLimit(1)
|
||||||
|
.layoutPriority(2)
|
||||||
|
|
||||||
|
Spacer(minLength: 0)
|
||||||
|
.layoutPriority(0)
|
||||||
|
|
||||||
|
Text(Profile.name ?? String())
|
||||||
|
.lineLimit(1)
|
||||||
|
.foregroundStyle(.secondary)
|
||||||
|
.layoutPriority(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Section {
|
||||||
|
Picker(selection: $selectedDistanceUnit) {
|
||||||
|
ForEach(Settings.DistanceUnit.allCases) { distanceUnit in
|
||||||
|
Text(distanceUnit.description)
|
||||||
|
}
|
||||||
|
} label: {
|
||||||
|
Text("measurement_units")
|
||||||
|
}
|
||||||
|
|
||||||
|
Toggle("pref_zoom_title", isOn: $hasZoomButtons)
|
||||||
|
.tint(.accent)
|
||||||
|
|
||||||
|
Toggle(isOn: $has3dBuildings) {
|
||||||
|
VStack(alignment: .leading) {
|
||||||
|
Text("pref_map_3d_buildings_title")
|
||||||
|
|
||||||
|
if selectedPowerSavingMode == .maximum {
|
||||||
|
Text("pref_map_3d_buildings_disabled_summary")
|
||||||
|
.font(.footnote)
|
||||||
|
.foregroundStyle(.secondary)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.tint(.accent)
|
||||||
|
.disabled(selectedPowerSavingMode == .maximum)
|
||||||
|
|
||||||
|
Toggle("autodownload", isOn: $hasAutomaticDownload)
|
||||||
|
.tint(.accent)
|
||||||
|
|
||||||
|
Toggle("big_font", isOn: $hasIncreasedFontsize)
|
||||||
|
.tint(.accent)
|
||||||
|
|
||||||
|
Toggle("transliteration_title", isOn: $shouldTransliterateToLatin)
|
||||||
|
.tint(.accent)
|
||||||
|
|
||||||
|
Picker(selection: $selectedAppearance) {
|
||||||
|
ForEach(Settings.Appearance.allCases) { appearance in
|
||||||
|
Text(appearance.description)
|
||||||
|
}
|
||||||
|
} label: {
|
||||||
|
Text("pref_appearance_title")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
NavigationLink("prefs_group_route") {
|
||||||
|
SettingsNavigationView()
|
||||||
|
}
|
||||||
|
|
||||||
|
Section {
|
||||||
|
Toggle(isOn: $shouldSync) {
|
||||||
|
VStack(alignment: .leading) {
|
||||||
|
Text("icloud_sync")
|
||||||
|
|
||||||
|
if !isSyncPossible {
|
||||||
|
Text("icloud_disabled_message")
|
||||||
|
.font(.footnote)
|
||||||
|
.foregroundStyle(.secondary)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.tint(.accent)
|
||||||
|
.disabled(!isSyncPossible)
|
||||||
|
.alert("enable_icloud_synchronization_title", isPresented: $showSyncBetaAlert) {
|
||||||
|
Button {
|
||||||
|
Settings.hasShownSyncBetaAlert = true
|
||||||
|
Settings.shouldSync = true
|
||||||
|
shouldSync = true
|
||||||
|
} label: {
|
||||||
|
Text("enable")
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
Settings.createBookmarksBackupBecauseOfSyncBeta { hasCreatedBackup in
|
||||||
|
if hasCreatedBackup {
|
||||||
|
Settings.hasShownSyncBetaAlert = true
|
||||||
|
Settings.shouldSync = true
|
||||||
|
shouldSync = true
|
||||||
|
} else {
|
||||||
|
Settings.shouldSync = false
|
||||||
|
shouldSync = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} label: {
|
||||||
|
Text("backup")
|
||||||
|
}
|
||||||
|
|
||||||
|
Button(role: .cancel) {
|
||||||
|
// Do nothing
|
||||||
|
} label: {
|
||||||
|
Text("cancel")
|
||||||
|
}
|
||||||
|
} message: {
|
||||||
|
Text("enable_icloud_synchronization_message")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Section {
|
||||||
|
Toggle("pref_calibration_title", isOn: $shouldCalibrateCompass)
|
||||||
|
.tint(.accent)
|
||||||
|
|
||||||
|
Picker(selection: $selectedPowerSavingMode) {
|
||||||
|
ForEach(Settings.PowerSavingMode.allCases) { powerSavingMode in
|
||||||
|
Text(powerSavingMode.description)
|
||||||
|
}
|
||||||
|
} label: {
|
||||||
|
Text("power_managment_title")
|
||||||
|
}
|
||||||
|
|
||||||
|
Picker(selection: $selectedMobileDataPolicy) {
|
||||||
|
ForEach(Settings.MobileDataPolicy.allCases) { mobileDataPolicy in
|
||||||
|
Text(mobileDataPolicy.description)
|
||||||
|
}
|
||||||
|
} label: {
|
||||||
|
Text("mobile_data")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Section {
|
||||||
|
Toggle(isOn: $isLogging) {
|
||||||
|
VStack(alignment: .leading) {
|
||||||
|
Text("enable_logging")
|
||||||
|
|
||||||
|
if isLogging {
|
||||||
|
Text(Settings.logSize, formatter: Settings.logSizeFormatter)
|
||||||
|
.font(.footnote)
|
||||||
|
.foregroundStyle(.secondary)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.tint(.accent)
|
||||||
|
} footer: {
|
||||||
|
Text("enable_logging_warning_message")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.navigationTitle(String(localized: "settings"))
|
||||||
|
.navigationBarTitleDisplayMode(.inline)
|
||||||
|
.toolbar {
|
||||||
|
ToolbarItem(placement: .confirmationAction) {
|
||||||
|
Button {
|
||||||
|
dismiss()
|
||||||
|
} label: {
|
||||||
|
Text("close")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.navigationViewStyle(StackNavigationViewStyle())
|
||||||
|
.onAppear {
|
||||||
|
selectedDistanceUnit = Settings.distanceUnit
|
||||||
|
hasZoomButtons = Settings.hasZoomButtons
|
||||||
|
has3dBuildings = Settings.has3dBuildings
|
||||||
|
hasAutomaticDownload = Settings.hasAutomaticDownload
|
||||||
|
hasIncreasedFontsize = Settings.hasIncreasedFontsize
|
||||||
|
shouldTransliterateToLatin = Settings.shouldTransliterateToLatin
|
||||||
|
selectedAppearance = Settings.appearance
|
||||||
|
shouldSync = Settings.shouldSync
|
||||||
|
shouldCalibrateCompass = Settings.shouldCalibrateCompass
|
||||||
|
selectedPowerSavingMode = Settings.powerSavingMode
|
||||||
|
selectedMobileDataPolicy = Settings.mobileDataPolicy
|
||||||
|
isLogging = Settings.isLogging
|
||||||
|
}
|
||||||
|
.onChange(of: selectedDistanceUnit) { changedSelectedDistanceUnit in
|
||||||
|
Settings.distanceUnit = changedSelectedDistanceUnit
|
||||||
|
}
|
||||||
|
.onChange(of: hasZoomButtons) { changedHasZoomButtons in
|
||||||
|
Settings.hasZoomButtons = changedHasZoomButtons
|
||||||
|
}
|
||||||
|
.onChange(of: has3dBuildings) { changedHas3dBuildings in
|
||||||
|
Settings.has3dBuildings = changedHas3dBuildings
|
||||||
|
}
|
||||||
|
.onChange(of: hasAutomaticDownload) { changedHasAutomaticDownload in
|
||||||
|
Settings.hasAutomaticDownload = changedHasAutomaticDownload
|
||||||
|
}
|
||||||
|
.onChange(of: hasIncreasedFontsize) { changedHasIncreasedFontsize in
|
||||||
|
Settings.hasIncreasedFontsize = changedHasIncreasedFontsize
|
||||||
|
}
|
||||||
|
.onChange(of: shouldTransliterateToLatin) { changedShouldTransliterateToLatin in
|
||||||
|
Settings.shouldTransliterateToLatin = changedShouldTransliterateToLatin
|
||||||
|
}
|
||||||
|
.onChange(of: selectedAppearance) { changedSelectedAppearance in
|
||||||
|
Settings.appearance = changedSelectedAppearance
|
||||||
|
}
|
||||||
|
.onChange(of: shouldSync) { changedShouldSync in
|
||||||
|
if changedShouldSync, !Settings.hasShownSyncBetaAlert {
|
||||||
|
showSyncBetaAlert = true
|
||||||
|
shouldSync = false
|
||||||
|
} else {
|
||||||
|
Settings.shouldSync = changedShouldSync
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.onChange(of: shouldCalibrateCompass) { changedShouldCalibrateCompass in
|
||||||
|
Settings.shouldCalibrateCompass = changedShouldCalibrateCompass
|
||||||
|
}
|
||||||
|
.onChange(of: selectedPowerSavingMode) { changedSelectedPowerSavingMode in
|
||||||
|
Settings.powerSavingMode = changedSelectedPowerSavingMode
|
||||||
|
}
|
||||||
|
.onChange(of: selectedMobileDataPolicy) { changedSelectedMobileDataPolicy in
|
||||||
|
Settings.mobileDataPolicy = changedSelectedMobileDataPolicy
|
||||||
|
}
|
||||||
|
.onChange(of: isLogging) { changedIsLogging in
|
||||||
|
Settings.isLogging = changedIsLogging
|
||||||
|
}
|
||||||
|
.onReceive(Settings.syncStatePublisher) { syncState in
|
||||||
|
isSyncPossible = syncState.isAvailable
|
||||||
|
}
|
||||||
|
.accentColor(.alternativeAccent)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="Wns-nH-AQU">
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="23727" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="Wns-nH-AQU">
|
||||||
<device id="iPad13_0rounded" orientation="portrait" layout="fullscreen" appearance="light"/>
|
<device id="iPad13_0rounded" orientation="portrait" layout="fullscreen" appearance="light"/>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="iOS"/>
|
<deployment identifier="iOS"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23721"/>
|
||||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
@@ -29,11 +29,11 @@
|
|||||||
<rect key="frame" x="0.0" y="0.0" width="1032" height="1376"/>
|
<rect key="frame" x="0.0" y="0.0" width="1032" height="1376"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="65S-M4-TnM" customClass="NavigationInfoArea" customModule="CoMaps" customModuleProvider="target">
|
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="65S-M4-TnM" customClass="NavigationInfoArea" customModule="CoMaps" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="24" width="1032" height="1332"/>
|
<rect key="frame" x="0.0" y="24" width="1032" height="1307"/>
|
||||||
<color key="backgroundColor" red="0.0" green="0.0" blue="1" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
<color key="backgroundColor" red="0.0" green="0.0" blue="1" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||||
</view>
|
</view>
|
||||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TdT-ia-GP9">
|
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TdT-ia-GP9">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="1032" height="1356"/>
|
<rect key="frame" x="0.0" y="0.0" width="1032" height="1331"/>
|
||||||
<color key="backgroundColor" red="0.0" green="0.0" blue="1" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
<color key="backgroundColor" red="0.0" green="0.0" blue="1" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="350" id="XLL-zv-Bym"/>
|
<constraint firstAttribute="width" constant="350" id="XLL-zv-Bym"/>
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
</variation>
|
</variation>
|
||||||
</view>
|
</view>
|
||||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aVk-ab-LFJ" customClass="TabBarArea" customModule="CoMaps" customModuleProvider="target">
|
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aVk-ab-LFJ" customClass="TabBarArea" customModule="CoMaps" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="1308" width="1032" height="68"/>
|
<rect key="frame" x="0.0" y="1283" width="1032" height="93"/>
|
||||||
<color key="backgroundColor" red="0.0" green="0.0" blue="1" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
<color key="backgroundColor" red="0.0" green="0.0" blue="1" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" priority="100" constant="350" id="aj4-lb-h52"/>
|
<constraint firstAttribute="width" priority="100" constant="350" id="aj4-lb-h52"/>
|
||||||
@@ -67,26 +67,26 @@
|
|||||||
</variation>
|
</variation>
|
||||||
</view>
|
</view>
|
||||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="awj-9E-eBS" customClass="PlacePageArea" customModule="CoMaps" customModuleProvider="target">
|
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="awj-9E-eBS" customClass="PlacePageArea" customModule="CoMaps" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="1032" height="1356"/>
|
<rect key="frame" x="0.0" y="0.0" width="1032" height="1331"/>
|
||||||
<color key="backgroundColor" red="1" green="0.0" blue="0.0" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
<color key="backgroundColor" red="1" green="0.0" blue="0.0" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||||
</view>
|
</view>
|
||||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FFY-Dy-Wou" customClass="VisibleArea" customModule="CoMaps" customModuleProvider="target">
|
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FFY-Dy-Wou" customClass="VisibleArea" customModule="CoMaps" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="1032" height="1356"/>
|
<rect key="frame" x="0.0" y="0.0" width="1032" height="1331"/>
|
||||||
<color key="backgroundColor" red="0.0" green="1" blue="0.0" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
<color key="backgroundColor" red="0.0" green="1" blue="0.0" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||||
</view>
|
</view>
|
||||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NI8-tV-i2B" customClass="WidgetsArea" customModule="CoMaps" customModuleProvider="target">
|
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NI8-tV-i2B" customClass="WidgetsArea" customModule="CoMaps" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="24" width="1032" height="1332"/>
|
<rect key="frame" x="0.0" y="24" width="1032" height="1307"/>
|
||||||
<color key="backgroundColor" red="0.0" green="1" blue="0.0" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
<color key="backgroundColor" red="0.0" green="1" blue="0.0" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||||
</view>
|
</view>
|
||||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xJx-UU-IdV" customClass="SideButtonsArea" customModule="CoMaps" customModuleProvider="target">
|
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xJx-UU-IdV" customClass="SideButtonsArea" customModule="CoMaps" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="24" width="1032" height="1332"/>
|
<rect key="frame" x="0.0" y="24" width="1032" height="1307"/>
|
||||||
<color key="backgroundColor" red="0.0" green="0.0" blue="1" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
<color key="backgroundColor" red="0.0" green="0.0" blue="1" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||||
</view>
|
</view>
|
||||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QKu-4A-UgP" customClass="TrafficButtonArea" customModule="CoMaps" customModuleProvider="target">
|
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QKu-4A-UgP" customClass="TrafficButtonArea" customModule="CoMaps" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="24" width="1032" height="1332"/>
|
<rect key="frame" x="0.0" y="24" width="1032" height="1307"/>
|
||||||
</view>
|
</view>
|
||||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yto-Gu-Ugz" userLabel="Track Recording Button Area" customClass="TrackRecordingButtonArea" customModule="CoMaps" customModuleProvider="target">
|
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yto-Gu-Ugz" userLabel="Track Recording Button Area" customClass="TrackRecordingButtonArea" customModule="CoMaps" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="24" width="1032" height="1332"/>
|
<rect key="frame" x="0.0" y="24" width="1032" height="1307"/>
|
||||||
<color key="backgroundColor" red="0.0" green="1" blue="0.0" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
<color key="backgroundColor" red="0.0" green="1" blue="0.0" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||||
</view>
|
</view>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
</constraints>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="at1-V1-pzl" customClass="TouchTransparentView" customModule="CoMaps" customModuleProvider="target">
|
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="at1-V1-pzl" customClass="TouchTransparentView" customModule="CoMaps" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="722" width="440" height="152"/>
|
<rect key="frame" x="0.0" y="1131" width="1032" height="152"/>
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
<gestureRecognizers/>
|
<gestureRecognizers/>
|
||||||
<constraints>
|
<constraints>
|
||||||
@@ -209,7 +209,7 @@
|
|||||||
<segue destination="h4a-ne-bSJ" kind="custom" identifier="Map2MapDownloaderSegue" customClass="MWMSegue" id="Tkr-Ad-FQL"/>
|
<segue destination="h4a-ne-bSJ" kind="custom" identifier="Map2MapDownloaderSegue" customClass="MWMSegue" id="Tkr-Ad-FQL"/>
|
||||||
<segue destination="lFr-lA-JTW" kind="show" identifier="PP2BookmarkEditing" id="0A8-4b-0A2"/>
|
<segue destination="lFr-lA-JTW" kind="show" identifier="PP2BookmarkEditing" id="0A8-4b-0A2"/>
|
||||||
<segue destination="Psz-BY-Fy4" kind="presentation" identifier="PP2BookmarkEditingIPAD" modalPresentationStyle="formSheet" id="k6v-a7-5DO"/>
|
<segue destination="Psz-BY-Fy4" kind="presentation" identifier="PP2BookmarkEditingIPAD" modalPresentationStyle="formSheet" id="k6v-a7-5DO"/>
|
||||||
<segue destination="DdR-kk-MnB" kind="custom" identifier="Map2Settings" customClass="MWMSegue" id="wtl-on-KxQ"/>
|
<segue destination="zWe-Rs-11p" kind="presentation" identifier="Map2Settings" id="QPJ-CO-oy8"/>
|
||||||
</connections>
|
</connections>
|
||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="cKg-Q7-bFd" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="cKg-Q7-bFd" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
@@ -309,7 +309,7 @@
|
|||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" keyboardDismissMode="interactive" dataMode="prototypes" style="grouped" separatorStyle="none" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="X1H-IB-Nv1">
|
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" keyboardDismissMode="interactive" dataMode="prototypes" style="grouped" separatorStyle="none" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="X1H-IB-Nv1">
|
||||||
<rect key="frame" x="0.0" y="24" width="1032" height="1288"/>
|
<rect key="frame" x="0.0" y="24" width="1032" height="1263"/>
|
||||||
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<userDefinedRuntimeAttributes>
|
<userDefinedRuntimeAttributes>
|
||||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="PressBackground"/>
|
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="PressBackground"/>
|
||||||
@@ -320,7 +320,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</tableView>
|
</tableView>
|
||||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aQv-7U-zAP">
|
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aQv-7U-zAP">
|
||||||
<rect key="frame" x="0.0" y="24" width="1032" height="1288"/>
|
<rect key="frame" x="0.0" y="24" width="1032" height="1263"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="PrH-u2-IEv" userLabel="Editor View" customClass="MWMTextView">
|
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="PrH-u2-IEv" userLabel="Editor View" customClass="MWMTextView">
|
||||||
<rect key="frame" x="0.0" y="36" width="1032" height="88"/>
|
<rect key="frame" x="0.0" y="36" width="1032" height="88"/>
|
||||||
@@ -358,7 +358,7 @@
|
|||||||
</userDefinedRuntimeAttributes>
|
</userDefinedRuntimeAttributes>
|
||||||
</imageView>
|
</imageView>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="separator_image" translatesAutoresizingMaskIntoConstraints="NO" id="5T5-Pp-hb5">
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="separator_image" translatesAutoresizingMaskIntoConstraints="NO" id="5T5-Pp-hb5">
|
||||||
<rect key="frame" x="0.0" y="1243" width="1032" height="1"/>
|
<rect key="frame" x="0.0" y="1218" width="1032" height="1"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="1" id="ZXK-zv-uSz"/>
|
<constraint firstAttribute="height" constant="1" id="ZXK-zv-uSz"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -488,7 +488,7 @@
|
|||||||
</constraints>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SZQ-ra-FC3" userLabel="Mode Switch">
|
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SZQ-ra-FC3" userLabel="Mode Switch">
|
||||||
<rect key="frame" x="0.0" y="1312" width="1032" height="44"/>
|
<rect key="frame" x="0.0" y="1287" width="1032" height="44"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" lineBreakMode="tailTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fB1-w2-lJI">
|
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" lineBreakMode="tailTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fB1-w2-lJI">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="1032" height="44"/>
|
<rect key="frame" x="0.0" y="0.0" width="1032" height="44"/>
|
||||||
@@ -647,7 +647,7 @@
|
|||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" keyboardDismissMode="interactive" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="JbV-y9-HBo">
|
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" keyboardDismissMode="interactive" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="JbV-y9-HBo">
|
||||||
<rect key="frame" x="0.0" y="80" width="1032" height="1276"/>
|
<rect key="frame" x="0.0" y="80" width="1032" height="1251"/>
|
||||||
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<userDefinedRuntimeAttributes>
|
<userDefinedRuntimeAttributes>
|
||||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="TableView:PressBackground"/>
|
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="TableView:PressBackground"/>
|
||||||
@@ -718,7 +718,7 @@
|
|||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" keyboardDismissMode="interactive" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="ina-WD-kps">
|
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" keyboardDismissMode="interactive" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="ina-WD-kps">
|
||||||
<rect key="frame" x="0.0" y="80" width="1032" height="1276"/>
|
<rect key="frame" x="0.0" y="80" width="1032" height="1251"/>
|
||||||
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<userDefinedRuntimeAttributes>
|
<userDefinedRuntimeAttributes>
|
||||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="TableView:PressBackground"/>
|
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="TableView:PressBackground"/>
|
||||||
@@ -806,7 +806,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</containerView>
|
</containerView>
|
||||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CDj-ol-HRP">
|
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CDj-ol-HRP">
|
||||||
<rect key="frame" x="0.0" y="1292" width="1032" height="84"/>
|
<rect key="frame" x="0.0" y="1267" width="1032" height="109"/>
|
||||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
<userDefinedRuntimeAttributes>
|
<userDefinedRuntimeAttributes>
|
||||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="PressBackground"/>
|
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="PressBackground"/>
|
||||||
@@ -849,20 +849,20 @@
|
|||||||
<objects>
|
<objects>
|
||||||
<viewController storyboardIdentifier="MWMNoMapsViewController" id="3el-Zi-2E4" customClass="MWMNoMapsViewController" sceneMemberID="viewController">
|
<viewController storyboardIdentifier="MWMNoMapsViewController" id="3el-Zi-2E4" customClass="MWMNoMapsViewController" sceneMemberID="viewController">
|
||||||
<view key="view" contentMode="scaleToFill" id="4WP-vj-Alg">
|
<view key="view" contentMode="scaleToFill" id="4WP-vj-Alg">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
<rect key="frame" x="0.0" y="0.0" width="1032" height="1376"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Gmw-e3-n53" userLabel="Container" customClass="MWMNoMapsView">
|
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Gmw-e3-n53" userLabel="Container" customClass="MWMNoMapsView">
|
||||||
<rect key="frame" x="13" y="24" width="367" height="804"/>
|
<rect key="frame" x="308.5" y="24" width="415.5" height="1307"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dCZ-PN-2Ob" userLabel="BoundsView">
|
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dCZ-PN-2Ob" userLabel="BoundsView">
|
||||||
<rect key="frame" x="16" y="0.0" width="335" height="804"/>
|
<rect key="frame" x="16" y="0.0" width="383.5" height="1307"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="87G-jh-N8H" userLabel="CenteredView">
|
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="87G-jh-N8H" userLabel="CenteredView">
|
||||||
<rect key="frame" x="0.0" y="347.5" width="335" height="109.5"/>
|
<rect key="frame" x="0.0" y="599" width="383.5" height="109.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="У вас нет загруженных карт" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="abh-G0-Alr" userLabel="Title">
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="У вас нет загруженных карт" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="abh-G0-Alr" userLabel="Title">
|
||||||
<rect key="frame" x="0.0" y="40" width="335" height="24"/>
|
<rect key="frame" x="0.0" y="40" width="383.5" height="24"/>
|
||||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="20"/>
|
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="20"/>
|
||||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
@@ -872,7 +872,7 @@
|
|||||||
</userDefinedRuntimeAttributes>
|
</userDefinedRuntimeAttributes>
|
||||||
</label>
|
</label>
|
||||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Загрузите необходимые карты, чтобы находить места и пользоваться навигацией без интернета." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LaW-Ad-mYI" userLabel="Text">
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Загрузите необходимые карты, чтобы находить места и пользоваться навигацией без интернета." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LaW-Ad-mYI" userLabel="Text">
|
||||||
<rect key="frame" x="0.0" y="76" width="335" height="33.5"/>
|
<rect key="frame" x="0.0" y="76" width="383.5" height="33.5"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
@@ -930,7 +930,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</view>
|
</view>
|
||||||
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Moj-UK-oyl" userLabel="DownloadMaps" customClass="MWMButton">
|
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Moj-UK-oyl" userLabel="DownloadMaps" customClass="MWMButton">
|
||||||
<rect key="frame" x="76.5" y="748" width="240" height="44"/>
|
<rect key="frame" x="396" y="1247" width="240" height="44"/>
|
||||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="240" id="49x-bx-JJj"/>
|
<constraint firstAttribute="width" constant="240" id="49x-bx-JJj"/>
|
||||||
@@ -1030,6 +1030,14 @@
|
|||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="1818" y="-190"/>
|
<point key="canvasLocation" x="1818" y="-190"/>
|
||||||
</scene>
|
</scene>
|
||||||
|
<!--Settings Bridge Controller-->
|
||||||
|
<scene sceneID="rC6-l4-Abg">
|
||||||
|
<objects>
|
||||||
|
<hostingController storyboardIdentifier="SettingsBridgeController" id="zWe-Rs-11p" customClass="SettingsBridgeController" customModule="CoMaps" customModuleProvider="target" sceneMemberID="viewController"/>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="c37-uR-cHF" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
<point key="canvasLocation" x="2098" y="190"/>
|
||||||
|
</scene>
|
||||||
<!--Downloader No Results Embed View Controller-->
|
<!--Downloader No Results Embed View Controller-->
|
||||||
<scene sceneID="Bce-Yn-A6n">
|
<scene sceneID="Bce-Yn-A6n">
|
||||||
<objects>
|
<objects>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user