From 2d7685e56b0039154fcce4ea5bc30405d2348820 Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Wed, 3 Oct 2012 19:22:53 +0300 Subject: [PATCH] [ios] Automatically add bookmark if Place Page dialog was opened --- iphone/Maps/Bookmarks/BalloonView.mm | 24 ++++------ iphone/Maps/Bookmarks/PlacePageVC.h | 1 + iphone/Maps/Bookmarks/PlacePageVC.mm | 69 +++++++++++++++------------- 3 files changed, 47 insertions(+), 47 deletions(-) diff --git a/iphone/Maps/Bookmarks/BalloonView.mm b/iphone/Maps/Bookmarks/BalloonView.mm index 1f1b4e9f82..fe20f7b670 100644 --- a/iphone/Maps/Bookmarks/BalloonView.mm +++ b/iphone/Maps/Bookmarks/BalloonView.mm @@ -217,7 +217,15 @@ [m_titleView sizeToFit]; } -- (void) deleteBMHelper +- (void) addOrEditBookmark +{ + // If coordinates will be the same, bookmark will be automatically replaced + GetFramework().AddBookmark([self.setName UTF8String], + Bookmark(m2::PointD(self.globalPosition.x, self.globalPosition.y), + [self.title UTF8String], [self.color UTF8String])); +} + +- (void) deleteBookmark { if (IsValid(m_editedBookmark)) { @@ -229,18 +237,4 @@ } } -- (void) addOrEditBookmark -{ - // for an "edit" operation, delete old bookmark before adding "edited" one - [self deleteBMHelper]; - GetFramework().AddBookmark([self.setName UTF8String], - Bookmark(m2::PointD(self.globalPosition.x, self.globalPosition.y), - [self.title UTF8String], [self.color UTF8String])); -} - -- (void) deleteBookmark -{ - [self deleteBMHelper]; -} - @end diff --git a/iphone/Maps/Bookmarks/PlacePageVC.h b/iphone/Maps/Bookmarks/PlacePageVC.h index 4c841e693b..94e0240a13 100644 --- a/iphone/Maps/Bookmarks/PlacePageVC.h +++ b/iphone/Maps/Bookmarks/PlacePageVC.h @@ -7,6 +7,7 @@ BOOL m_hideNavBar; // @TODO store as a property to retain reference BalloonView * m_balloon; + UITextField * m_textField; } - (id) initWithBalloonView:(BalloonView *)view; diff --git a/iphone/Maps/Bookmarks/PlacePageVC.mm b/iphone/Maps/Bookmarks/PlacePageVC.mm index 37148f0faf..b2cdf6fe8b 100644 --- a/iphone/Maps/Bookmarks/PlacePageVC.mm +++ b/iphone/Maps/Bookmarks/PlacePageVC.mm @@ -11,12 +11,17 @@ if (self) { m_balloon = view; - self.title = m_balloon.title; } return self; } +- (void) dealloc +{ + [m_textField release]; + [super dealloc]; +} + - (void)viewWillAppear:(BOOL)animated { m_hideNavBar = YES; @@ -30,6 +35,19 @@ { if (m_hideNavBar) [self.navigationController setNavigationBarHidden:YES animated:YES]; + // Check that bookmark should be added/edited and we're going back to the Map + if (m_textField && [self.navigationController.viewControllers indexOfObject:self] == NSNotFound) + { + if (![m_textField.text isEqualToString:m_balloon.title]) + { + // Update edited bookmark name + if (m_textField.text.length == 0) + m_balloon.title = NSLocalizedString(@"dropped_pin", @"Unknown Dropped Pin title, when name can't be determined"); + else + m_balloon.title = m_textField.text; + } + [m_balloon addOrEditBookmark]; + } [super viewWillDisappear:animated]; } @@ -48,7 +66,7 @@ switch (section) { case 0: return 3; - case 1: return 2; + case 1: return 1; default: return 0; } } @@ -97,15 +115,16 @@ { case 0: { - UITextField * f = [[[UITextField alloc] initWithFrame:CGRectMake(0, 0, 200, 21)] autorelease]; - f.textAlignment = UITextAlignmentRight; - f.returnKeyType = UIReturnKeyDone; - f.clearButtonMode = UITextFieldViewModeWhileEditing; - f.autocorrectionType = UITextAutocorrectionTypeNo; - f.delegate = self; - f.placeholder = NSLocalizedString(@"name", @"Add bookmark dialog - bookmark name"); - f.textColor = cell.detailTextLabel.textColor; - cell.accessoryView = f; + [m_textField release]; + m_textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 200, 21)]; + m_textField.textAlignment = UITextAlignmentRight; + m_textField.returnKeyType = UIReturnKeyDone; + m_textField.clearButtonMode = UITextFieldViewModeWhileEditing; + m_textField.autocorrectionType = UITextAutocorrectionTypeNo; + m_textField.delegate = self; + m_textField.placeholder = NSLocalizedString(@"name", @"Add bookmark dialog - bookmark name"); + m_textField.textColor = cell.detailTextLabel.textColor; + cell.accessoryView = m_textField; cell.textLabel.text = NSLocalizedString(@"name", @"Add bookmark dialog - bookmark name"); cell.selectionStyle = UITableViewCellSelectionStyleNone; } @@ -124,7 +143,7 @@ switch (indexPath.row) { case 0: - ((UITextField *)(cell.accessoryView)).text = m_balloon.title; + m_textField.text = m_balloon.title; break; case 1: @@ -142,20 +161,11 @@ // 2nd section with add/remove pin buttons cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"] autorelease]; cell.textLabel.textAlignment = UITextAlignmentCenter; - if (indexPath.row == 0) - cell.textLabel.text = NSLocalizedString(@"add_to_bookmarks", @"Place Page - Add To Bookmarks button"); - else - cell.textLabel.text = NSLocalizedString(@"remove_pin", @"Place Page - Remove Pin button"); + cell.textLabel.text = NSLocalizedString(@"remove_pin", @"Place Page - Remove Pin button"); } return cell; } -- (void)onAddClicked -{ - [m_balloon addOrEditBookmark]; - [m_balloon hide]; -} - - (void)onRemoveClicked { [m_balloon deleteBookmark]; @@ -191,16 +201,11 @@ } else { - if (indexPath.row == 0) - { - // Add to bookmarks - [self onAddClicked]; - } - else - { - // Remove pin - [self onRemoveClicked]; - } + // Remove pin + [self onRemoveClicked]; + // Reset text field to indicate that bookmark should not be added on view close + [m_textField release]; + m_textField = nil; // Close place page [self.navigationController popViewControllerAnimated:YES]; }