[ios] Replaced bookmarks icons, implemented bookmarks adding/pin remove

This commit is contained in:
Alex Zolotarev 2012-05-10 21:17:22 +03:00 committed by Alex Zolotarev
parent 53a13917f1
commit 686db01a0c
26 changed files with 261 additions and 105 deletions

View file

@ -1,5 +1,13 @@
#import <UIKit/UIKit.h>
@interface AddBookmarkVC : UITableViewController
@class BalloonView;
@interface AddBookmarkVC : UITableViewController <UITextFieldDelegate>
{
// @TODO store as a property to retain reference
BalloonView * m_balloon;
}
- (id) initWithBalloonView:(BalloonView *)view;
@end

View file

@ -1,20 +1,29 @@
#import "AddBookmarkVC.h"
#import "BalloonView.h"
#import "Framework.h"
@implementation AddBookmarkVC
- (id)initWithStyle:(UITableViewStyle)style
- (id) initWithBalloonView:(BalloonView *)view
{
self = [super initWithStyle:style];
self = [super initWithStyle:UITableViewStyleGrouped];
if (self)
{
m_balloon = view;
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(onAddClicked)];
self.title = NSLocalizedString(@"Add Bookmark", @"Add bookmark dialog title");
}
return self;
}
- (void)onAddClicked:(id)sender
- (void)onAddClicked
{
GetFramework().AddBookmark(m2::PointD(m_balloon.globalPosition.x, m_balloon.globalPosition.y), [m_balloon.title UTF8String]);
[m_balloon hide];
// Don't forget to hide navbar
[self.navigationController setNavigationBarHidden:YES animated:YES];
[self.navigationController popToRootViewControllerAnimated:YES];
}
- (void)viewWillAppear:(BOOL)animated
@ -40,15 +49,23 @@
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"AddBMCell"];
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"AddBMCell"] autorelease];
UITableViewCell * cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"AddBMCell"] autorelease];
switch (indexPath.row)
{
case 0:
{
UITextField * f = [[[UITextField alloc] initWithFrame:CGRectMake(0, 0, 200, 21)] autorelease];
f.textAlignment = UITextAlignmentRight;
f.returnKeyType = UIReturnKeyDone;
f.clearButtonMode = UITextFieldViewModeWhileEditing;
f.delegate = self;
f.placeholder = NSLocalizedString(@"Name", @"Add bookmark dialog - bookmark name");
f.text = m_balloon.title;
f.textColor = cell.detailTextLabel.textColor;
cell.accessoryView = f;
cell.textLabel.text = NSLocalizedString(@"Name", @"Add bookmark dialog - bookmark name");
cell.detailTextLabel.text = @"Washington";
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
break;
case 1:
@ -58,7 +75,7 @@
case 2:
cell.textLabel.text = NSLocalizedString(@"Color", @"Add bookmark dialog - bookmark color");
cell.detailTextLabel.text = @"Blue";
cell.accessoryView = [m_balloon pinImage];
break;
}
return cell;
@ -69,4 +86,10 @@
[[tableView cellForRowAtIndexPath:indexPath] setSelected:NO animated:YES];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return NO;
}
@end

View file

@ -1,18 +1,22 @@
#import <UIKit/UIKit.h>
#include "../../geometry/point2d.hpp"
#include "Framework.h"
@interface BalloonView : NSObject
{
UIImageView * m_pinView;
UITableViewCell * m_titleView;
id m_target;
SEL m_selector;
Framework::AddressInfo m_addressInfo;
}
@property(nonatomic, retain) NSString * title;
// Currently contains automatically updated address info
@property(nonatomic, retain) NSString * description;
@property(nonatomic, retain) UIImageView * pinImage;
// Stores displayed bookmark icon name
@property(nonatomic, retain) NSString * color;
@property(nonatomic, assign, readonly) BOOL isDisplayed;
@property(nonatomic, assign) CGPoint globalPosition;

View file

@ -1,17 +1,49 @@
#import "BalloonView.h"
#import <QuartzCore/CALayer.h>
static string formatAddress(string const & house, string const & street,
string const & city, string const & country)
{
string result = house;
if (!street.empty())
{
if (!result.empty())
result += ' ';
result += street;
}
if (!city.empty())
{
if (!result.empty())
result += ", ";
result += city;
}
if (!country.empty())
{
if (!result.empty())
result += ", ";
result += country;
}
return result;
}
@implementation BalloonView
@synthesize globalPosition;
@synthesize title;
@synthesize description;
@synthesize pinImage;
@synthesize color;
@synthesize isDisplayed;
- (id) initWithTarget:(id)target andSelector:(SEL)selector;
{
if ((self = [super init]))
{
// Default bookmark pin color
color = [[NSString alloc] initWithString:@"purple"];
pinImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:self.color]];
m_titleView = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"BookmarkTitle"];
isDisplayed = NO;
m_target = target;
m_selector = selector;
@ -22,20 +54,22 @@
- (void) dealloc
{
[m_titleView release];
[m_pinView release];
self.pinImage = nil;
self.color = nil;
self.title = nil;
self.description = nil;
[super dealloc];
}
- (void) showButtonsInView:(UIView *)view atPoint:(CGPoint)pt
{
m_titleView = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"BookmarkTitle"];
m_titleView.textLabel.text = title;
m_titleView.textLabel.text = self.title;
m_titleView.textLabel.textColor = [UIColor whiteColor];
m_titleView.detailTextLabel.text = description;
m_titleView.detailTextLabel.text = self.description;
m_titleView.detailTextLabel.textColor = [UIColor whiteColor];
m_titleView.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
m_titleView.backgroundColor = [UIColor blackColor];
m_titleView.layer.cornerRadius = 5;
m_titleView.layer.cornerRadius = 10;
// m_titleView.alpha = 0.8;
// m_titleView.textLabel.backgroundColor = [UIColor clearColor];
// m_titleView.detailTextLabel.backgroundColor = [UIColor clearColor];
@ -66,16 +100,15 @@
}
isDisplayed = YES;
m_pinView = [[UIImageView alloc ]initWithImage:[UIImage imageNamed:@"marker"]];
CGFloat const w = m_pinView.bounds.size.width;
CGFloat const h = m_pinView.bounds.size.height;
m_pinView.frame = CGRectMake(pt.x - w/2, 0 - h, w, h);
CGFloat const w = self.pinImage.bounds.size.width;
CGFloat const h = self.pinImage.bounds.size.height;
self.pinImage.frame = CGRectMake(pt.x - w/2, 0 - h, w, h);
[view addSubview:m_pinView];
[view addSubview:self.pinImage];
// Animate pin to the touched point
[UIView transitionWithView:m_pinView duration:0.1 options:UIViewAnimationOptionCurveEaseIn
animations:^{ m_pinView.frame = CGRectMake(pt.x - w/2, pt.y - h, w, h); }
[UIView transitionWithView:self.pinImage duration:0.1 options:UIViewAnimationOptionCurveEaseIn
animations:^{ self.pinImage.frame = CGRectMake(pt.x - w/2, pt.y - h, w, h); }
completion:^(BOOL){
[self showButtonsInView:view atPoint:CGPointMake(pt.x, pt.y - h)];
}];
@ -85,9 +118,9 @@
{
if (isDisplayed)
{
CGFloat const w1 = m_pinView.bounds.size.width;
CGFloat const h1 = m_pinView.bounds.size.height;
m_pinView.frame = CGRectMake(pt.x - w1/2, pt.y - h1, w1, h1);
CGFloat const w1 = self.pinImage.bounds.size.width;
CGFloat const h1 = self.pinImage.bounds.size.height;
self.pinImage.frame = CGRectMake(pt.x - w1/2, pt.y - h1, w1, h1);
CGFloat const w2 = m_titleView.bounds.size.width;
CGFloat const h2 = m_titleView.bounds.size.height;
@ -98,14 +131,29 @@
- (void) hide
{
[m_titleView removeFromSuperview];
[m_titleView release];
m_titleView = nil;
[m_pinView removeFromSuperview];
[m_pinView release];
m_pinView = nil;
[self.pinImage removeFromSuperview];
isDisplayed = NO;
}
// Overrided property setter to update address and displayed information
- (void) setGlobalPosition:(CGPoint)pos
{
globalPosition = pos;
GetFramework().GetAddressInfo(m2::PointD(pos.x, pos.y), m_addressInfo);
if (m_addressInfo.m_name.empty())
self.title = NSLocalizedString(@"Dropped Pin", @"Unknown Dropped Pin title, when name can't be determined");
else
self.title = [NSString stringWithUTF8String:m_addressInfo.m_name.c_str()];
self.description = [NSString stringWithUTF8String:formatAddress(m_addressInfo.m_house,
m_addressInfo.m_street,
m_addressInfo.m_city,
m_addressInfo.m_country).c_str()];
}
// Overrided property setter to reload another pin image
- (void) setColor:(NSString *)newColor
{
color = newColor;
self.pinImage.image = [UIImage imageNamed:newColor];
}
@end

View file

@ -1,7 +1,14 @@
#import <UIKit/UIKit.h>
@class BalloonView;
@interface PlacePageVC : UITableViewController
{
BOOL m_hideNavBar;
// @TODO store as a property to retain reference
BalloonView * m_balloon;
}
- (id) initWithBalloonView:(BalloonView *)view;
@end

View file

@ -1,14 +1,17 @@
#import "PlacePageVC.h"
#import "AddBookmarkVC.h"
#import "BalloonView.h"
@implementation PlacePageVC
- (id)initWithStyle:(UITableViewStyle)style
- (id) initWithBalloonView:(BalloonView *)view
{
self = [super initWithStyle:style];
self = [super initWithStyle:UITableViewStyleGrouped];
if (self)
{
self.title = NSLocalizedString(@"Place Page", @"Add bookmark dialog title");
m_balloon = view;
self.title = m_balloon.title;
}
return self;
}
@ -34,7 +37,7 @@
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 2;
return 3;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
@ -44,12 +47,24 @@
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell * cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"] autorelease];
cell.textLabel.textAlignment = UITextAlignmentCenter;
UITableViewCell * cell;
if (indexPath.section == 0)
cell.textLabel.text = NSLocalizedString(@"Add To Bookmarks", @"Place Page - Add To Bookmarks button");
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"AddressCell"] autorelease];
cell.textLabel.text = NSLocalizedString(@"Address", @"Place Page - Address cell");
cell.detailTextLabel.numberOfLines = 0;
cell.detailTextLabel.textAlignment = UITextAlignmentLeft;
cell.detailTextLabel.text = m_balloon.description;
}
else
cell.textLabel.text = NSLocalizedString(@"Remove Pin", @"Place Page - Remove Pin button");
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"] autorelease];
cell.textLabel.textAlignment = UITextAlignmentCenter;
if (indexPath.section == 1)
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");
}
return cell;
}
@ -57,16 +72,23 @@
{
[[tableView cellForRowAtIndexPath:indexPath] setSelected:NO animated:YES];
if (indexPath.section == 0)
switch (indexPath.section)
{
AddBookmarkVC * addVC = [[AddBookmarkVC alloc] initWithStyle:UITableViewStyleGrouped];
m_hideNavBar = NO;
[self.navigationController pushViewController:addVC animated:YES];
[addVC release];
}
else
{
[self.navigationController popViewControllerAnimated:YES];
case 1:
{
AddBookmarkVC * addVC = [[AddBookmarkVC alloc] initWithBalloonView:m_balloon];
m_hideNavBar = NO;
[self.navigationController pushViewController:addVC animated:YES];
[addVC release];
}
break;
case 2:
{
[m_balloon hide];
[self.navigationController popViewControllerAnimated:YES];
}
break;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View file

@ -11,31 +11,6 @@
#include "Framework.h"
#include "RenderContext.hpp"
static string formatAddress(string const & house, string const & street,
string const & city, string const & country)
{
string result = house;
if (!street.empty())
{
if (!result.empty())
result += ' ';
result += street;
}
if (!city.empty())
{
if (!result.empty())
result += ' ';
result += city;
}
if (!country.empty())
{
if (!result.empty())
result += ' ';
result += country;
}
return result;
}
@implementation MapViewController
@synthesize m_myPositionButton;
@ -135,22 +110,11 @@ static string formatAddress(string const & house, string const & street,
[bVC release];
}
- (void)onBookmarkClicked
{
PlacePageVC * placePageVC = [[PlacePageVC alloc] initWithStyle:UITableViewStyleGrouped];
PlacePageVC * placePageVC = [[PlacePageVC alloc] initWithBalloonView:m_bookmark];
[self.navigationController pushViewController:placePageVC animated:YES];
[placePageVC release];
// m2::PointD const ptG = m2::PointD(m_bookmark.globalPosition.x, m_bookmark.globalPosition.y);
//
// Framework::AddressInfo info;
// m_framework->GetAddressInfo(ptG, info);
// m_framework->AddBookmark(ptG, info.m_name);
//
// [m_bookmark hide];
//
// m_framework->Invalidate();
}
- (CGPoint) viewPoint2GlobalPoint:(CGPoint)pt
@ -174,10 +138,6 @@ static string formatAddress(string const & house, string const & street,
CGPoint const pixelPos = [point CGPointValue];
CGPoint const globalPos = [self viewPoint2GlobalPoint:pixelPos];
Framework::AddressInfo addr;
GetFramework().GetAddressInfo(m2::PointD(globalPos.x, globalPos.y), addr);
m_bookmark.title = [NSString stringWithUTF8String:addr.m_name.c_str()];
m_bookmark.description = [NSString stringWithUTF8String:formatAddress(addr.m_house, addr.m_street, addr.m_city, addr.m_country).c_str()];
m_bookmark.globalPosition = globalPos;
[m_bookmark showInView:self.view atPoint:pixelPos];
}

View file

@ -54,6 +54,38 @@
F7B90CD41521E6D200C054EE /* CustomNavigationView.mm in Sources */ = {isa = PBXBuildFile; fileRef = F7B90CD21521E6D100C054EE /* CustomNavigationView.mm */; };
F7FDD823147F30CC005900FA /* drules_proto.bin in Resources */ = {isa = PBXBuildFile; fileRef = F7FDD822147F30CC005900FA /* drules_proto.bin */; };
FA04373212CAB83F00017494 /* libstorage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FA04373112CAB83F00017494 /* libstorage.a */; };
FA0545F0155C22D4001F4E37 /* blue.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E0155C22D4001F4E37 /* blue.png */; };
FA0545F1155C22D4001F4E37 /* blue.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E0155C22D4001F4E37 /* blue.png */; };
FA0545F2155C22D4001F4E37 /* blue@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E1155C22D4001F4E37 /* blue@2x.png */; };
FA0545F3155C22D4001F4E37 /* blue@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E1155C22D4001F4E37 /* blue@2x.png */; };
FA0545F4155C22D4001F4E37 /* brown.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E2155C22D4001F4E37 /* brown.png */; };
FA0545F5155C22D4001F4E37 /* brown.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E2155C22D4001F4E37 /* brown.png */; };
FA0545F6155C22D4001F4E37 /* brown@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E3155C22D4001F4E37 /* brown@2x.png */; };
FA0545F7155C22D4001F4E37 /* brown@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E3155C22D4001F4E37 /* brown@2x.png */; };
FA0545F8155C22D4001F4E37 /* green.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E4155C22D4001F4E37 /* green.png */; };
FA0545F9155C22D4001F4E37 /* green.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E4155C22D4001F4E37 /* green.png */; };
FA0545FA155C22D4001F4E37 /* green@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E5155C22D4001F4E37 /* green@2x.png */; };
FA0545FB155C22D4001F4E37 /* green@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E5155C22D4001F4E37 /* green@2x.png */; };
FA0545FC155C22D4001F4E37 /* orange.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E6155C22D4001F4E37 /* orange.png */; };
FA0545FD155C22D4001F4E37 /* orange.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E6155C22D4001F4E37 /* orange.png */; };
FA0545FE155C22D4001F4E37 /* orange@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E7155C22D4001F4E37 /* orange@2x.png */; };
FA0545FF155C22D4001F4E37 /* orange@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E7155C22D4001F4E37 /* orange@2x.png */; };
FA054600155C22D4001F4E37 /* pink.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E8155C22D4001F4E37 /* pink.png */; };
FA054601155C22D4001F4E37 /* pink.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E8155C22D4001F4E37 /* pink.png */; };
FA054602155C22D4001F4E37 /* pink@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E9155C22D4001F4E37 /* pink@2x.png */; };
FA054603155C22D4001F4E37 /* pink@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545E9155C22D4001F4E37 /* pink@2x.png */; };
FA054604155C22D4001F4E37 /* purple.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545EA155C22D4001F4E37 /* purple.png */; };
FA054605155C22D4001F4E37 /* purple.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545EA155C22D4001F4E37 /* purple.png */; };
FA054606155C22D4001F4E37 /* purple@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545EB155C22D4001F4E37 /* purple@2x.png */; };
FA054607155C22D4001F4E37 /* purple@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545EB155C22D4001F4E37 /* purple@2x.png */; };
FA054608155C22D4001F4E37 /* red.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545EC155C22D4001F4E37 /* red.png */; };
FA054609155C22D4001F4E37 /* red.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545EC155C22D4001F4E37 /* red.png */; };
FA05460A155C22D4001F4E37 /* red@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545ED155C22D4001F4E37 /* red@2x.png */; };
FA05460B155C22D4001F4E37 /* red@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545ED155C22D4001F4E37 /* red@2x.png */; };
FA05460C155C22D4001F4E37 /* yellow.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545EE155C22D4001F4E37 /* yellow.png */; };
FA05460D155C22D4001F4E37 /* yellow.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545EE155C22D4001F4E37 /* yellow.png */; };
FA05460E155C22D4001F4E37 /* yellow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545EF155C22D4001F4E37 /* yellow@2x.png */; };
FA05460F155C22D4001F4E37 /* yellow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0545EF155C22D4001F4E37 /* yellow@2x.png */; };
FA065FED128614C400FEA989 /* MainWindow-iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = FA065FEC128614C400FEA989 /* MainWindow-iPad.xib */; };
FA065FFF1286167A00FEA989 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA065FFD1286167A00FEA989 /* Default@2x.png */; };
FA0660001286167A00FEA989 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = FA065FFE1286167A00FEA989 /* Default.png */; };
@ -75,10 +107,6 @@
FA36B80C15403A4F004560CC /* BalloonView.mm in Sources */ = {isa = PBXBuildFile; fileRef = FA36B80415403A4F004560CC /* BalloonView.mm */; };
FA36B80D15403A4F004560CC /* BookmarksVC.mm in Sources */ = {isa = PBXBuildFile; fileRef = FA36B80615403A4F004560CC /* BookmarksVC.mm */; };
FA36B80E15403A4F004560CC /* BookmarksVC.mm in Sources */ = {isa = PBXBuildFile; fileRef = FA36B80615403A4F004560CC /* BookmarksVC.mm */; };
FA36B80F15403A4F004560CC /* marker.png in Resources */ = {isa = PBXBuildFile; fileRef = FA36B80715403A4F004560CC /* marker.png */; };
FA36B81015403A4F004560CC /* marker.png in Resources */ = {isa = PBXBuildFile; fileRef = FA36B80715403A4F004560CC /* marker.png */; };
FA36B81115403A4F004560CC /* marker@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA36B80815403A4F004560CC /* marker@2x.png */; };
FA36B81215403A4F004560CC /* marker@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA36B80815403A4F004560CC /* marker@2x.png */; };
FA4135EA120A263C0062D5B4 /* CountriesViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = FA4135E2120A263C0062D5B4 /* CountriesViewController.mm */; };
FA4135ED120A263C0062D5B4 /* SettingsManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = FA4135E7120A263C0062D5B4 /* SettingsManager.mm */; };
FA459EB414327AF700B5BB3C /* WorldCoasts.mwm in Resources */ = {isa = PBXBuildFile; fileRef = FA459EB314327AF700B5BB3C /* WorldCoasts.mwm */; };
@ -1326,6 +1354,22 @@
F7DD848614FE7FE0005695E1 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; };
F7FDD822147F30CC005900FA /* drules_proto.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; name = drules_proto.bin; path = ../../data/drules_proto.bin; sourceTree = "<group>"; };
FA04373112CAB83F00017494 /* libstorage.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libstorage.a; sourceTree = SOURCE_ROOT; };
FA0545E0155C22D4001F4E37 /* blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = blue.png; path = Bookmarks/blue.png; sourceTree = SOURCE_ROOT; };
FA0545E1155C22D4001F4E37 /* blue@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "blue@2x.png"; path = "Bookmarks/blue@2x.png"; sourceTree = SOURCE_ROOT; };
FA0545E2155C22D4001F4E37 /* brown.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = brown.png; path = Bookmarks/brown.png; sourceTree = SOURCE_ROOT; };
FA0545E3155C22D4001F4E37 /* brown@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "brown@2x.png"; path = "Bookmarks/brown@2x.png"; sourceTree = SOURCE_ROOT; };
FA0545E4155C22D4001F4E37 /* green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = green.png; path = Bookmarks/green.png; sourceTree = SOURCE_ROOT; };
FA0545E5155C22D4001F4E37 /* green@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "green@2x.png"; path = "Bookmarks/green@2x.png"; sourceTree = SOURCE_ROOT; };
FA0545E6155C22D4001F4E37 /* orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = orange.png; path = Bookmarks/orange.png; sourceTree = SOURCE_ROOT; };
FA0545E7155C22D4001F4E37 /* orange@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "orange@2x.png"; path = "Bookmarks/orange@2x.png"; sourceTree = SOURCE_ROOT; };
FA0545E8155C22D4001F4E37 /* pink.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pink.png; path = Bookmarks/pink.png; sourceTree = SOURCE_ROOT; };
FA0545E9155C22D4001F4E37 /* pink@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pink@2x.png"; path = "Bookmarks/pink@2x.png"; sourceTree = SOURCE_ROOT; };
FA0545EA155C22D4001F4E37 /* purple.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = purple.png; path = Bookmarks/purple.png; sourceTree = SOURCE_ROOT; };
FA0545EB155C22D4001F4E37 /* purple@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "purple@2x.png"; path = "Bookmarks/purple@2x.png"; sourceTree = SOURCE_ROOT; };
FA0545EC155C22D4001F4E37 /* red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = red.png; path = Bookmarks/red.png; sourceTree = SOURCE_ROOT; };
FA0545ED155C22D4001F4E37 /* red@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "red@2x.png"; path = "Bookmarks/red@2x.png"; sourceTree = SOURCE_ROOT; };
FA0545EE155C22D4001F4E37 /* yellow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = yellow.png; path = Bookmarks/yellow.png; sourceTree = SOURCE_ROOT; };
FA0545EF155C22D4001F4E37 /* yellow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "yellow@2x.png"; path = "Bookmarks/yellow@2x.png"; sourceTree = SOURCE_ROOT; };
FA065FEC128614C400FEA989 /* MainWindow-iPad.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "MainWindow-iPad.xib"; path = "Resources-iPad/MainWindow-iPad.xib"; sourceTree = SOURCE_ROOT; };
FA065FFD1286167A00FEA989 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = SOURCE_ROOT; };
FA065FFE1286167A00FEA989 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = SOURCE_ROOT; };
@ -1350,8 +1394,6 @@
FA36B80415403A4F004560CC /* BalloonView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = BalloonView.mm; path = Bookmarks/BalloonView.mm; sourceTree = SOURCE_ROOT; };
FA36B80515403A4F004560CC /* BookmarksVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BookmarksVC.h; path = Bookmarks/BookmarksVC.h; sourceTree = SOURCE_ROOT; };
FA36B80615403A4F004560CC /* BookmarksVC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = BookmarksVC.mm; path = Bookmarks/BookmarksVC.mm; sourceTree = SOURCE_ROOT; };
FA36B80715403A4F004560CC /* marker.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = marker.png; path = Bookmarks/marker.png; sourceTree = SOURCE_ROOT; };
FA36B80815403A4F004560CC /* marker@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "marker@2x.png"; path = "Bookmarks/marker@2x.png"; sourceTree = SOURCE_ROOT; };
FA4135E1120A263C0062D5B4 /* CountriesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = CountriesViewController.h; path = Settings/CountriesViewController.h; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
FA4135E2120A263C0062D5B4 /* CountriesViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; name = CountriesViewController.mm; path = Settings/CountriesViewController.mm; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
FA4135E6120A263C0062D5B4 /* SettingsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SettingsManager.h; path = Settings/SettingsManager.h; sourceTree = SOURCE_ROOT; };
@ -2240,8 +2282,22 @@
FA36B8171540466A004560CC /* Images */ = {
isa = PBXGroup;
children = (
FA36B80715403A4F004560CC /* marker.png */,
FA36B80815403A4F004560CC /* marker@2x.png */,
FA0545E0155C22D4001F4E37 /* blue.png */,
FA0545E1155C22D4001F4E37 /* blue@2x.png */,
FA0545E2155C22D4001F4E37 /* brown.png */,
FA0545E3155C22D4001F4E37 /* brown@2x.png */,
FA0545E4155C22D4001F4E37 /* green.png */,
FA0545E5155C22D4001F4E37 /* green@2x.png */,
FA0545E6155C22D4001F4E37 /* orange.png */,
FA0545E7155C22D4001F4E37 /* orange@2x.png */,
FA0545E8155C22D4001F4E37 /* pink.png */,
FA0545E9155C22D4001F4E37 /* pink@2x.png */,
FA0545EA155C22D4001F4E37 /* purple.png */,
FA0545EB155C22D4001F4E37 /* purple@2x.png */,
FA0545EC155C22D4001F4E37 /* red.png */,
FA0545ED155C22D4001F4E37 /* red@2x.png */,
FA0545EE155C22D4001F4E37 /* yellow.png */,
FA0545EF155C22D4001F4E37 /* yellow@2x.png */,
);
name = Images;
sourceTree = "<group>";
@ -3463,8 +3519,22 @@
FA8A71D6153D83C8005D9795 /* bookmarks-highlighted@2x.png in Resources */,
FA8A71D8153D83C8005D9795 /* bookmarks.png in Resources */,
FA8A71DA153D83C8005D9795 /* bookmarks@2x.png in Resources */,
FA36B80F15403A4F004560CC /* marker.png in Resources */,
FA36B81115403A4F004560CC /* marker@2x.png in Resources */,
FA0545F0155C22D4001F4E37 /* blue.png in Resources */,
FA0545F2155C22D4001F4E37 /* blue@2x.png in Resources */,
FA0545F4155C22D4001F4E37 /* brown.png in Resources */,
FA0545F6155C22D4001F4E37 /* brown@2x.png in Resources */,
FA0545F8155C22D4001F4E37 /* green.png in Resources */,
FA0545FA155C22D4001F4E37 /* green@2x.png in Resources */,
FA0545FC155C22D4001F4E37 /* orange.png in Resources */,
FA0545FE155C22D4001F4E37 /* orange@2x.png in Resources */,
FA054600155C22D4001F4E37 /* pink.png in Resources */,
FA054602155C22D4001F4E37 /* pink@2x.png in Resources */,
FA054604155C22D4001F4E37 /* purple.png in Resources */,
FA054606155C22D4001F4E37 /* purple@2x.png in Resources */,
FA054608155C22D4001F4E37 /* red.png in Resources */,
FA05460A155C22D4001F4E37 /* red@2x.png in Resources */,
FA05460C155C22D4001F4E37 /* yellow.png in Resources */,
FA05460E155C22D4001F4E37 /* yellow@2x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -4053,8 +4123,22 @@
FA8A71D7153D83C8005D9795 /* bookmarks-highlighted@2x.png in Resources */,
FA8A71D9153D83C8005D9795 /* bookmarks.png in Resources */,
FA8A71DB153D83C8005D9795 /* bookmarks@2x.png in Resources */,
FA36B81015403A4F004560CC /* marker.png in Resources */,
FA36B81215403A4F004560CC /* marker@2x.png in Resources */,
FA0545F1155C22D4001F4E37 /* blue.png in Resources */,
FA0545F3155C22D4001F4E37 /* blue@2x.png in Resources */,
FA0545F5155C22D4001F4E37 /* brown.png in Resources */,
FA0545F7155C22D4001F4E37 /* brown@2x.png in Resources */,
FA0545F9155C22D4001F4E37 /* green.png in Resources */,
FA0545FB155C22D4001F4E37 /* green@2x.png in Resources */,
FA0545FD155C22D4001F4E37 /* orange.png in Resources */,
FA0545FF155C22D4001F4E37 /* orange@2x.png in Resources */,
FA054601155C22D4001F4E37 /* pink.png in Resources */,
FA054603155C22D4001F4E37 /* pink@2x.png in Resources */,
FA054605155C22D4001F4E37 /* purple.png in Resources */,
FA054607155C22D4001F4E37 /* purple@2x.png in Resources */,
FA054609155C22D4001F4E37 /* red.png in Resources */,
FA05460B155C22D4001F4E37 /* red@2x.png in Resources */,
FA05460D155C22D4001F4E37 /* yellow.png in Resources */,
FA05460F155C22D4001F4E37 /* yellow@2x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};