[fix] [ios] Added place page data retain.

This commit is contained in:
Ilya Grechuhin 2017-06-29 18:01:39 +03:00 committed by Sergey Yershov
parent 8123902824
commit 8033854b5b
4 changed files with 42 additions and 24 deletions

View file

@ -114,15 +114,16 @@ void logSponsoredEvent(MWMPlacePageData * data, NSString * eventName)
- (void)handleBookmarkDeleting:(NSNotification *)notification
{
NSAssert(self.data && self.layout, @"It must be openned place page!");
if (!self.data.isBookmark)
auto data = self.data;
NSAssert(data && self.layout, @"It must be openned place page!");
if (!data.isBookmark)
return;
auto value = static_cast<NSValue *>(notification.object);
auto deletedBac = BookmarkAndCategory();
[value getValue:&deletedBac];
NSAssert(deletedBac.IsValid(), @"Place page must have valid bookmark and category.");
auto bac = self.data.bac;
auto bac = data.bac;
if (bac.m_bookmarkIndex != deletedBac.m_bookmarkIndex || bac.m_categoryIndex != deletedBac.m_categoryIndex)
return;
@ -131,12 +132,13 @@ void logSponsoredEvent(MWMPlacePageData * data, NSString * eventName)
- (void)handleBookmarkCategoryDeleting:(NSNotification *)notification
{
NSAssert(self.data && self.layout, @"It must be openned place page!");
if (!self.data.isBookmark)
auto data = self.data;
NSAssert(data && self.layout, @"It must be openned place page!");
if (!data.isBookmark)
return;
auto deletedIndex = static_cast<NSNumber *>(notification.object).integerValue;
auto index = self.data.bac.m_categoryIndex;
auto index = data.bac.m_categoryIndex;
if (index != deletedIndex)
return;
@ -283,16 +285,13 @@ void logSponsoredEvent(MWMPlacePageData * data, NSString * eventName)
- (void)removeStop
{
switch (self.data.routeMarkType)
auto data = self.data;
switch (data.routeMarkType)
{
case RouteMarkType::Start:
[MWMRouter removeStartPointAndRebuild:self.data.intermediateIndex];
break;
case RouteMarkType::Finish:
[MWMRouter removeFinishPointAndRebuild:self.data.intermediateIndex];
break;
case RouteMarkType::Start: [MWMRouter removeStartPointAndRebuild:data.intermediateIndex]; break;
case RouteMarkType::Finish: [MWMRouter removeFinishPointAndRebuild:data.intermediateIndex]; break;
case RouteMarkType::Intermediate:
[MWMRouter removeIntermediatePointAndRebuild:self.data.intermediateIndex];
[MWMRouter removeIntermediatePointAndRebuild:data.intermediateIndex];
break;
}
[self shouldClose];
@ -473,7 +472,7 @@ void logSponsoredEvent(MWMPlacePageData * data, NSString * eventName)
if (!data)
return;
logSponsoredEvent(self.data, kStatPlacePageHotelGallery);
auto galleryModel = [[MWMGalleryModel alloc] initWithTitle:self.hotelName items:self.data.photos];
auto galleryModel = [[MWMGalleryModel alloc] initWithTitle:self.hotelName items:data.photos];
auto initialPhoto = galleryModel.items[index];
auto photoVC = [[MWMPhotosViewController alloc] initWithPhotos:galleryModel
initialPhoto:initialPhoto
@ -491,7 +490,7 @@ void logSponsoredEvent(MWMPlacePageData * data, NSString * eventName)
if (!data)
return;
logSponsoredEvent(self.data, kStatPlacePageHotelGallery);
auto galleryModel = [[MWMGalleryModel alloc] initWithTitle:self.hotelName items:self.data.photos];
auto galleryModel = [[MWMGalleryModel alloc] initWithTitle:self.hotelName items:data.photos];
auto galleryVc = [MWMGalleryViewController instanceWithModel:galleryModel];
[[MapViewController controller].navigationController pushViewController:galleryVc animated:YES];
}

View file

@ -145,8 +145,9 @@ NSAttributedString * richStringFromDay(osmoh::Day const & day, BOOL isClosedNow)
{
auto tableView = self.tableView;
auto const & day = m_days[indexPath.row];
auto data = self.data;
if (self.data.metainfoRows[indexPath.row] == place_page::MetainfoRows::OpeningHours)
if (data.metainfoRows[indexPath.row] == place_page::MetainfoRows::OpeningHours)
{
Class cls = [_MWMOHHeaderCell class];
auto cell = static_cast<_MWMOHHeaderCell *>(
@ -222,7 +223,10 @@ NSAttributedString * richStringFromDay(osmoh::Day const & day, BOOL isClosedNow)
- (NSInteger)indexOfMetainfoSection
{
auto & sections = self.data.sections;
auto data = self.data;
if (!data)
return 0;
auto & sections = data.sections;
auto it = find(sections.begin(), sections.end(), place_page::Sections::Metainfo);
if (it == sections.end())
return NSNotFound;
@ -236,8 +240,11 @@ NSAttributedString * richStringFromDay(osmoh::Day const & day, BOOL isClosedNow)
LOG(LWARNING, ("Incorrect number of days!"));
return NO;
}
auto data = self.data;
if (!data)
return NO;
auto & metainfoRows = self.data.mutableMetainfoRows;
auto & metainfoRows = data.mutableMetainfoRows;
using place_page::MetainfoRows;
auto it = find(metainfoRows.begin(), metainfoRows.end(), MetainfoRows::OpeningHours);
@ -253,7 +260,11 @@ NSAttributedString * richStringFromDay(osmoh::Day const & day, BOOL isClosedNow)
- (void)reduceMetainfoRows
{
auto & metainfoRows = self.data.mutableMetainfoRows;
auto data = self.data;
if (!data)
return;
auto & metainfoRows = data.mutableMetainfoRows;
metainfoRows.erase(remove(metainfoRows.begin(), metainfoRows.end(), place_page::MetainfoRows::ExtendedOpeningHours), metainfoRows.end());
}

View file

@ -521,7 +521,8 @@ map<MetainfoRows, Class> const kMetaInfoCells = {
- (void)update
{
if (self.data)
auto data = self.data;
if (data)
[self.placePageView.tableView refresh];
}

View file

@ -308,7 +308,10 @@ array<Class, 8> const kPreviewCells = {{[_MWMPPPTitle class], [_MWMPPPExternalTi
- (void)setSpeedAndAltitude:(NSString *)speedAndAltitude
{
if ([speedAndAltitude isEqualToString:_speedAndAltitude] || !self.data.isMyPosition)
auto data = self.data;
if (!data)
return;
if ([speedAndAltitude isEqualToString:_speedAndAltitude] || !data.isMyPosition)
return;
_speedAndAltitude = speedAndAltitude;
@ -317,7 +320,10 @@ array<Class, 8> const kPreviewCells = {{[_MWMPPPTitle class], [_MWMPPPExternalTi
- (void)insertRowAtTheEnd
{
auto const & previewRows = self.data.previewRows;
auto data = self.data;
if (!data)
return;
auto const & previewRows = data.previewRows;
auto const size = previewRows.size();
self.lastCellIsBanner = previewRows.back() == place_page::PreviewRows::Banner;
self.lastCellIndexPath =
@ -348,7 +354,8 @@ array<Class, 8> const kPreviewCells = {{[_MWMPPPTitle class], [_MWMPPPExternalTi
if (IPAD)
return;
if (!self.data)
auto data = self.data;
if (!data)
return;
[self.tableView update:^{