Welcome to mirror list, hosted at ThFree Co, Russian Federation.

Common.h « Classes « Maps « iphone - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 2d302d478bad8353ab1dcc7d80df17e6ab19f7a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

static NSString * const MAPSWITHME_PREMIUM_LOCAL_URL = @"mapswithmepro://";

static NSString * const BOOKMARK_CATEGORY_DELETED_NOTIFICATION = @"BookmarkCategoryDeletedNotification";

static NSString * const METRICS_CHANGED_NOTIFICATION = @"MetricsChangedNotification";

static NSString * const BOOKMARK_DELETED_NOTIFICATION = @"BookmarkDeletedNotification";

static NSString * const LOCATION_MANAGER_STARTED_NOTIFICATION = @"LocationManagerStartedNotification";

static NSString * const kDownloadingProgressUpdateNotificationId = @"DownloadingProgressUpdateNotificationId";

static NSString * const kHaveAppleWatch = @"HaveAppleWatch";

static CGFloat const kDefaultAnimationDuration = .2;

static inline NSString * const kApplicationGroupIdentifier()
{
  static NSString * const productionGroupIdentifier = @"group.mapsme.watchkit.production";
  static NSString * const developerGroupIdentifier = @"group.mapsme.watchkit";

  static NSString * const productionAppBundleIdentifier = @"com.mapswithme.full";
  static NSString * const productionExtBundleIdentifier = @"com.mapswithme.full.watchkitextension";

  NSString * bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
  if ([bundleIdentifier isEqualToString:productionAppBundleIdentifier] || [bundleIdentifier isEqualToString:productionExtBundleIdentifier])
    return productionGroupIdentifier;
  return developerGroupIdentifier;
}

static inline BOOL firstVersionIsLessThanSecond(NSString * first, NSString * second)
{
  NSArray const * const f = [first componentsSeparatedByString:@"."];
  NSArray const * const s = [second componentsSeparatedByString:@"."];
  NSUInteger iter = 0;
  while (f.count > iter && s.count > iter)
  {
    NSInteger fiv = ((NSString *)f[iter]).integerValue;
    NSInteger siv = ((NSString *)s[iter]).integerValue;

    if (fiv == siv)
      iter++;
    else
      return fiv < siv;
  }
  return f.count < s.count;
}

static inline BOOL isIOSVersionLessThan(NSString * version)
{
  return firstVersionIsLessThanSecond([UIDevice currentDevice].systemVersion, version);
}

static inline BOOL isIOSVersionLessThan(NSUInteger version)
{
  return isIOSVersionLessThan([NSString stringWithFormat:@"%@", @(version)]);
}

static uint64_t const KB = 1024;
static uint64_t const MB = 1024 * 1024;

static inline NSString * formattedSize(uint64_t size)
{
  NSString * sizeString;
  if (size > MB)
    sizeString = [NSString stringWithFormat:@"%llu %@", (size + 512 * KB) / MB, NSLocalizedString(@"mb", nil)];
  else
    sizeString = [NSString stringWithFormat:@"%llu %@", (size + 1023) / KB, NSLocalizedString(@"kb", nil)];
  return [sizeString uppercaseString];
}

static inline NSString * bcp47ToTwineLanguage(NSString const * bcp47LangName)
{
  if (bcp47LangName == nil || [bcp47LangName length] < 2)
    return nil;
  
  if ([bcp47LangName isEqualToString:@"zh-CN"] || [bcp47LangName isEqualToString:@"zh-CHS"]
      || [bcp47LangName isEqualToString:@"zh-SG"])
  {
    return @"zh-Hans"; // Chinese simplified
  }
  
  if ([bcp47LangName hasPrefix:@"zh"])
    return @"zh-Hant"; // Chinese traditional
  
  // Taking two first symbols of a language name. For example ru-RU -> ru
  return [bcp47LangName substringToIndex:2];
}