[ios] Added NodeStatus::Partly status support.

This commit is contained in:
Ilya Grechuhin 2016-03-04 15:44:32 +03:00 committed by Sergey Yershov
parent 028b9d01b2
commit ee3ed9149f
2 changed files with 44 additions and 38 deletions

View file

@ -6,7 +6,7 @@
@interface MWMMapDownloaderTableViewCell () <MWMCircularProgressProtocol>
@property (nonatomic) MWMCircularProgress * progressView;
@property (nonatomic) MWMCircularProgress * progress;
@property (weak, nonatomic) IBOutlet UIView * stateWrapper;
@property (weak, nonatomic) IBOutlet UILabel * title;
@property (weak, nonatomic) IBOutlet UILabel * downloadSize;
@ -50,37 +50,53 @@
- (void)config:(storage::NodeAttrs const &)nodeAttrs
{
[self configProgressView:nodeAttrs];
[self configProgress:nodeAttrs];
self.title.text = @(nodeAttrs.m_nodeLocalName.c_str());
self.downloadSize.text = formattedSize(nodeAttrs.m_mwmSize);
}
- (void)configProgressView:(const storage::NodeAttrs &)nodeAttrs
- (void)configProgress:(const storage::NodeAttrs &)nodeAttrs
{
MWMCircularProgress * progress = self.progress;
switch (nodeAttrs.m_status)
{
case NodeStatus::NotDownloaded:
self.progressView.state = MWMCircularProgressStateNormal;
case NodeStatus::Partly:
{
UIImage * downloadImage = [UIImage imageNamed:@"ic_download"];
[progress setImage:downloadImage forState:MWMCircularProgressStateNormal];
[progress setImage:downloadImage forState:MWMCircularProgressStateSelected];
[progress setColoring:MWMButtonColoringBlack forState:MWMCircularProgressStateNormal];
[progress setColoring:MWMButtonColoringBlack forState:MWMCircularProgressStateSelected];
progress.state = MWMCircularProgressStateNormal;
break;
}
case NodeStatus::Downloading:
{
auto const & progress = nodeAttrs.m_downloadingProgress;
self.progressView.progress = static_cast<CGFloat>(progress.first) / progress.second;
auto const & prg = nodeAttrs.m_downloadingProgress;
progress.progress = static_cast<CGFloat>(prg.first) / prg.second;
break;
}
case NodeStatus::InQueue:
self.progressView.state = MWMCircularProgressStateSpinner;
progress.state = MWMCircularProgressStateSpinner;
break;
case NodeStatus::Undefined:
case NodeStatus::Error:
self.progressView.state = MWMCircularProgressStateFailed;
progress.state = MWMCircularProgressStateFailed;
break;
case NodeStatus::OnDisk:
self.progressView.state = MWMCircularProgressStateCompleted;
progress.state = MWMCircularProgressStateCompleted;
break;
case NodeStatus::OnDiskOutOfDate:
self.progressView.state = MWMCircularProgressStateSelected;
{
UIImage * downloadImage = [UIImage imageNamed:@"ic_update"];
[progress setImage:downloadImage forState:MWMCircularProgressStateNormal];
[progress setImage:downloadImage forState:MWMCircularProgressStateSelected];
[progress setColoring:MWMButtonColoringOther forState:MWMCircularProgressStateNormal];
[progress setColoring:MWMButtonColoringOther forState:MWMCircularProgressStateSelected];
progress.state = MWMCircularProgressStateNormal;
break;
}
}
}
@ -99,7 +115,7 @@
{
if (countryId != m_countryId)
return;
self.progressView.progress = static_cast<CGFloat>(progress.first) / progress.second;
self.progress.progress = static_cast<CGFloat>(progress.first) / progress.second;
}
#pragma mark - MWMCircularProgressProtocol
@ -111,6 +127,7 @@
switch (nodeAttrs.m_status)
{
case NodeStatus::NotDownloaded:
case NodeStatus::Partly:
[self.delegate downloadNode:m_countryId];
break;
case NodeStatus::Undefined:
@ -141,20 +158,14 @@
[self config:nodeAttrs];
}
- (MWMCircularProgress *)progressView
- (MWMCircularProgress *)progress
{
if (!_progressView && !self.isHeightCell)
if (!_progress && !self.isHeightCell)
{
_progressView = [[MWMCircularProgress alloc] initWithParentView:self.stateWrapper];
_progressView.delegate = self;
[_progressView setImage:[UIImage imageNamed:@"ic_download"] forState:MWMCircularProgressStateNormal];
[_progressView setImage:[UIImage imageNamed:@"ic_download"] forState:MWMCircularProgressStateSelected];
[_progressView setImage:[UIImage imageNamed:@"ic_close_spinner"] forState:MWMCircularProgressStateProgress];
[_progressView setImage:[UIImage imageNamed:@"ic_close_spinner"] forState:MWMCircularProgressStateSpinner];
[_progressView setImage:[UIImage imageNamed:@"ic_download_error"] forState:MWMCircularProgressStateFailed];
[_progressView setImage:[UIImage imageNamed:@"ic_check"] forState:MWMCircularProgressStateCompleted];
_progress = [MWMCircularProgress downloaderProgressForParentView:self.stateWrapper];
_progress.delegate = self;
}
return _progressView;
return _progress;
}
@end

View file

@ -32,7 +32,7 @@ using namespace storage;
@property (weak, nonatomic) MWMViewController * controller;
@property (nonatomic) MWMCircularProgress * progressView;
@property (nonatomic) MWMCircularProgress * progress;
@end
@ -81,6 +81,7 @@ using namespace storage;
switch (nodeAttrs.m_status)
{
case NodeStatus::NotDownloaded:
case NodeStatus::Partly:
{
bool autoDownloadEnabled = true;
(void)Settings::Get(kAutoDownloadEnabledKey, autoDownloadEnabled);
@ -140,7 +141,7 @@ using namespace storage;
- (void)removeFromSuperview
{
self.progressView.state = MWMCircularProgressStateNormal;
self.progress.state = MWMCircularProgressStateNormal;
[MWMFrameworkListener removeObserver:self];
[super removeFromSuperview];
}
@ -151,7 +152,7 @@ using namespace storage;
return;
self.nodeSize.textColor = [UIColor red];
self.nodeSize.text = L(@"country_status_download_failed");
self.progressView.state = MWMCircularProgressStateFailed;
self.progress.state = MWMCircularProgressStateFailed;
MWMAlertViewController * avc = self.controller.alertController;
switch (errorCode)
{
@ -191,7 +192,7 @@ using namespace storage;
self.nodeSize.text = [@(static_cast<NSUInteger>(progress * 100)).stringValue stringByAppendingString:@"%"];
self.downloadButton.hidden = YES;
self.progressWrapper.hidden = NO;
self.progressView.progress = progress;
self.progress.progress = progress;
}
- (void)showInQueue
@ -200,7 +201,7 @@ using namespace storage;
self.nodeSize.text = L(@"downloader_queued");
self.downloadButton.hidden = YES;
self.progressWrapper.hidden = NO;
self.progressView.state = MWMCircularProgressStateSpinner;
self.progress.state = MWMCircularProgressStateSpinner;
}
- (void)processViewportCountryEvent:(TCountryId const &)countryId
@ -296,20 +297,14 @@ using namespace storage;
#pragma mark - Properties
- (MWMCircularProgress *)progressView
- (MWMCircularProgress *)progress
{
if (!_progressView)
if (!_progress)
{
_progressView = [[MWMCircularProgress alloc] initWithParentView:self.progressWrapper];
_progressView.delegate = self;
[_progressView setImage:[UIImage imageNamed:@"ic_close_spinner"] forState:MWMCircularProgressStateNormal];
[_progressView setImage:[UIImage imageNamed:@"ic_close_spinner"] forState:MWMCircularProgressStateSelected];
[_progressView setImage:[UIImage imageNamed:@"ic_close_spinner"] forState:MWMCircularProgressStateProgress];
[_progressView setImage:[UIImage imageNamed:@"ic_close_spinner"] forState:MWMCircularProgressStateSpinner];
[_progressView setImage:[UIImage imageNamed:@"ic_download_error"] forState:MWMCircularProgressStateFailed];
[_progressView setImage:[UIImage imageNamed:@"ic_check"] forState:MWMCircularProgressStateCompleted];
_progress = [MWMCircularProgress downloaderProgressForParentView:self.progressWrapper];
_progress.delegate = self;
}
return _progressView;
return _progress;
}
@end