From 1a8212aeec1539c0784f8b05ab8750e013648fa3 Mon Sep 17 00:00:00 2001 From: Alexey Belousov Date: Tue, 26 Jun 2018 15:04:13 +0300 Subject: [PATCH] [ios] add MegaFon banner to download map dialog --- .../Classes/Widgets/MWMMapDownloadDialog.mm | 43 +++++++ .../Classes/Widgets/MWMMapDownloadDialog.xib | 105 +++++++++++++++--- .../Contents.json | 12 ++ .../ic_brand_megafon_green.pdf | Bin 0 -> 4361 bytes 4 files changed, 144 insertions(+), 16 deletions(-) create mode 100644 iphone/Maps/Images.xcassets/ic_brand_megafon_green.imageset/Contents.json create mode 100644 iphone/Maps/Images.xcassets/ic_brand_megafon_green.imageset/ic_brand_megafon_green.pdf diff --git a/iphone/Maps/Classes/Widgets/MWMMapDownloadDialog.mm b/iphone/Maps/Classes/Widgets/MWMMapDownloadDialog.mm index 2835e98aeb..fca837e012 100644 --- a/iphone/Maps/Classes/Widgets/MWMMapDownloadDialog.mm +++ b/iphone/Maps/Classes/Widgets/MWMMapDownloadDialog.mm @@ -1,3 +1,4 @@ +#import #import "MWMMapDownloadDialog.h" #import "CLLocation+Mercator.h" #import "MWMAlertViewController.h" @@ -19,6 +20,8 @@ #include "platform/local_country_file_utils.hpp" +#include "partners_api/megafon_countries.hpp" + namespace { CGSize constexpr kInitialDialogSize = {200, 200}; @@ -37,6 +40,16 @@ BOOL canAutoDownload(storage::TCountryId const & countryId) return NO; return !platform::migrate::NeedMigrate(); } + +BOOL shouldShowBanner(std::string const & mwmId) +{ + return ads::HasMegafonDownloaderBanner(GetFramework().GetStorage(), mwmId, languages::GetCurrentNorm()); +} + +NSString * getBannerURL() +{ + return @(ads::GetMegafonDownloaderBannerUrl().c_str()); +} } // namespace using namespace storage; @@ -48,6 +61,9 @@ using namespace storage; @property(weak, nonatomic) IBOutlet NSLayoutConstraint * nodeTopOffset; @property(weak, nonatomic) IBOutlet UIButton * downloadButton; @property(weak, nonatomic) IBOutlet UIView * progressWrapper; +@property(weak, nonatomic) IBOutlet UIView * bannerView; +@property(weak, nonatomic) IBOutlet NSLayoutConstraint * bannerHiddenConstraint; +@property(weak, nonatomic) IBOutlet NSLayoutConstraint * bannerVisibleConstraint; @property(weak, nonatomic) MapViewController * controller; @@ -236,6 +252,7 @@ using namespace storage; - (void)showDownloadRequest { + [self hideBanner]; self.downloadButton.hidden = NO; self.progressWrapper.hidden = YES; [self addToSuperview]; @@ -243,6 +260,7 @@ using namespace storage; - (void)showDownloading:(CGFloat)progress { + [self showBannerIfNeeded]; self.nodeSize.textColor = [UIColor blackSecondaryText]; self.nodeSize.text = [NSString stringWithFormat:@"%@ %@%%", L(@"downloader_downloading"), @(static_cast(progress * 100))]; @@ -254,6 +272,7 @@ using namespace storage; - (void)showInQueue { + [self showBannerIfNeeded]; self.nodeSize.textColor = [UIColor blackSecondaryText]; self.nodeSize.text = L(@"downloader_queued"); self.downloadButton.hidden = YES; @@ -271,6 +290,23 @@ using namespace storage; [self configDialog]; } +- (void)showBannerIfNeeded +{ + if (shouldShowBanner(m_countryId)) + { + self.bannerHiddenConstraint.active = NO; + self.bannerVisibleConstraint.active = YES; + self.bannerView.hidden = NO; + } +} + +- (void)hideBanner +{ + self.bannerHiddenConstraint.active = YES; + self.bannerVisibleConstraint.active = NO; + self.bannerView.hidden = YES; +} + #pragma mark - MWMFrameworkStorageObserver - (void)processCountryEvent:(TCountryId const &)countryId @@ -317,6 +353,13 @@ using namespace storage; #pragma mark - Actions +- (IBAction)bannerAction +{ + NSURL * bannerURL = [NSURL URLWithString:getBannerURL()]; + SFSafariViewController * safari = [[SFSafariViewController alloc] initWithURL:bannerURL]; + [self.controller presentViewController:safari animated:YES completion:nil]; +} + - (IBAction)downloadAction { MapViewController * controller = self.controller; diff --git a/iphone/Maps/Classes/Widgets/MWMMapDownloadDialog.xib b/iphone/Maps/Classes/Widgets/MWMMapDownloadDialog.xib index 167e442dd0..e4e1d93b36 100644 --- a/iphone/Maps/Classes/Widgets/MWMMapDownloadDialog.xib +++ b/iphone/Maps/Classes/Widgets/MWMMapDownloadDialog.xib @@ -1,29 +1,23 @@ - + - + - - - HelveticaNeue - HelveticaNeue-Medium - - - + - - + + @@ -98,11 +155,15 @@ + + + + @@ -124,8 +185,17 @@ + + + + + + + + + @@ -133,7 +203,10 @@ - + + + + diff --git a/iphone/Maps/Images.xcassets/ic_brand_megafon_green.imageset/Contents.json b/iphone/Maps/Images.xcassets/ic_brand_megafon_green.imageset/Contents.json new file mode 100644 index 0000000000..ea6c4db3c3 --- /dev/null +++ b/iphone/Maps/Images.xcassets/ic_brand_megafon_green.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ic_brand_megafon_green.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/ic_brand_megafon_green.imageset/ic_brand_megafon_green.pdf b/iphone/Maps/Images.xcassets/ic_brand_megafon_green.imageset/ic_brand_megafon_green.pdf new file mode 100644 index 0000000000000000000000000000000000000000..dfd8ad3173686f7c721f4ed8b5398bc005677ccf GIT binary patch literal 4361 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 literal 0 HcmV?d00001