forked from organicmaps/organicmaps-tmp
[MAPSME-6046] [ios] Added viewport observer.
This commit is contained in:
parent
59e908c4b2
commit
705da1513e
3 changed files with 32 additions and 13 deletions
|
@ -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];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -35,6 +35,9 @@ using namespace storage;
|
|||
|
||||
@protocol MWMFrameworkDrapeObserver<MWMFrameworkObserver>
|
||||
|
||||
@optional
|
||||
|
||||
- (void)processViewportCountryEvent:(TCountryId const &)countryId;
|
||||
- (void)processViewportChangedEvent;
|
||||
|
||||
@end
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue