[MAPSME-6046] [ios] Added viewport observer.

This commit is contained in:
Ilya Grechuhin 2017-12-05 16:54:43 +03:00
parent 59e908c4b2
commit 705da1513e
3 changed files with 32 additions and 13 deletions

View file

@ -151,7 +151,18 @@ void loopWrappers(Observers * observers, TLoopBlock block)
auto & f = GetFramework();
f.SetCurrentCountryChangedListener([observers](TCountryId const & countryId) {
for (TDrapeObserver observer in observers)
[observer processViewportCountryEvent:countryId];
{
if ([observer respondsToSelector:@selector(processViewportCountryEvent:)])
[observer processViewportCountryEvent:countryId];
}
});
f.SetViewportListener([observers](ScreenBase const & screen) {
for (TDrapeObserver observer in observers)
{
if ([observer respondsToSelector:@selector(processViewportChangedEvent)])
[observer processViewportChangedEvent];
}
});
}

View file

@ -35,6 +35,9 @@ using namespace storage;
@protocol MWMFrameworkDrapeObserver<MWMFrameworkObserver>
@optional
- (void)processViewportCountryEvent:(TCountryId const &)countryId;
- (void)processViewportChangedEvent;
@end

View file

@ -1,6 +1,7 @@
#import "MWMSearch.h"
#import <Crashlytics/Crashlytics.h>
#import "MWMBannerHelpers.h"
#import "MWMFrameworkListener.h"
#import "MWMSearchHotelsFilterViewController.h"
#import "SwiftBridge.h"
@ -19,7 +20,7 @@ using Observer = id<MWMSearchObserver>;
using Observers = NSHashTable<Observer>;
} // namespace
@interface MWMSearch ()
@interface MWMSearch ()<MWMFrameworkDrapeObserver>
@property(nonatomic) NSUInteger suggestionsCount;
@property(nonatomic) BOOL searchOnMap;
@ -74,7 +75,10 @@ using Observers = NSHashTable<Observer>;
{
self = [super init];
if (self)
{
_observers = [Observers weakObjectsHashTable];
[MWMFrameworkListener addObserver:self];
}
return self;
}
@ -113,11 +117,7 @@ using Observers = NSHashTable<Observer>;
- (void)searchInViewport
{
m_viewportParams.m_onStarted = [self] {
self.searchCount += 1;
if (IPAD)
[self searchEverywhere];
};
m_viewportParams.m_onStarted = [self] { self.searchCount += 1; };
m_viewportParams.m_onCompleted = [self](search::Results const & results) {
if (!results.IsEndMarker())
return;
@ -147,12 +147,7 @@ using Observers = NSHashTable<Observer>;
return;
[self updateFilters];
if (IPAD)
{
[self searchInViewport];
//[self searchEverywhere]; will be called in m_viewportParams.m_onStarted callback
}
else if ([self isCianSearch])
if (IPAD || [self isCianSearch])
{
[self searchInViewport];
[self searchEverywhere];
@ -390,6 +385,16 @@ using Observers = NSHashTable<Observer>;
}
}
#pragma mark - MWMFrameworkDrapeObserver
- (void)processViewportChangedEvent
{
if (!GetFramework().GetSearchAPI().IsViewportSearchActive())
return;
if (IPAD)
[self searchEverywhere];
}
#pragma mark - Properties
- (void)setSearchCount:(NSInteger)searchCount