├── .gitignore ├── GoogleMaps.framework ├── GoogleMaps ├── Headers ├── Resources └── Versions │ ├── A │ ├── GoogleMaps │ ├── Headers │ │ ├── GMSAddress.h │ │ ├── GMSCALayer.h │ │ ├── GMSCameraPosition.h │ │ ├── GMSCameraUpdate.h │ │ ├── GMSCircle.h │ │ ├── GMSCoordinateBounds.h │ │ ├── GMSGeocoder.h │ │ ├── GMSGeometryUtils.h │ │ ├── GMSGroundOverlay.h │ │ ├── GMSIndoorBuilding.h │ │ ├── GMSIndoorDisplay.h │ │ ├── GMSIndoorLevel.h │ │ ├── GMSMapLayer.h │ │ ├── GMSMapView+Animation.h │ │ ├── GMSMapView.h │ │ ├── GMSMarker.h │ │ ├── GMSMarkerLayer.h │ │ ├── GMSMutablePath.h │ │ ├── GMSOrientation.h │ │ ├── GMSOverlay.h │ │ ├── GMSPanorama.h │ │ ├── GMSPanoramaCamera.h │ │ ├── GMSPanoramaCameraUpdate.h │ │ ├── GMSPanoramaLayer.h │ │ ├── GMSPanoramaLink.h │ │ ├── GMSPanoramaService.h │ │ ├── GMSPanoramaView.h │ │ ├── GMSPath.h │ │ ├── GMSPolygon.h │ │ ├── GMSPolyline.h │ │ ├── GMSProjection.h │ │ ├── GMSServices.h │ │ ├── GMSSyncTileLayer.h │ │ ├── GMSTileLayer.h │ │ ├── GMSUISettings.h │ │ ├── GMSURLTileLayer.h │ │ └── GoogleMaps.h │ └── Resources │ │ └── GoogleMaps.bundle │ │ ├── GMSCacheStorage.momd │ │ ├── Storage.mom │ │ ├── Storage.omo │ │ └── VersionInfo.plist │ │ ├── GMSCoreResources.bundle │ │ ├── DroidSansMerged-Regular.ttf │ │ ├── GMSSprites-0.png │ │ ├── GMSSprites-0_retina.png │ │ ├── Info.plist │ │ ├── Tharlon-Regular.ttf │ │ ├── ar.lproj │ │ │ └── GMSCore.strings │ │ ├── button_background.png │ │ ├── button_background@2x.png │ │ ├── button_compass.png │ │ ├── button_compass@2x.png │ │ ├── button_my_location.png │ │ ├── button_my_location@2x.png │ │ ├── ca.lproj │ │ │ └── GMSCore.strings │ │ ├── compass_pin.png │ │ ├── compass_pin@2x.png │ │ ├── cs.lproj │ │ │ └── GMSCore.strings │ │ ├── da.lproj │ │ │ └── GMSCore.strings │ │ ├── dav_one_way_16_256.png │ │ ├── de.lproj │ │ │ └── GMSCore.strings │ │ ├── el.lproj │ │ │ └── GMSCore.strings │ │ ├── en.lproj │ │ │ └── GMSCore.strings │ │ ├── en_GB.lproj │ │ │ └── GMSCore.strings │ │ ├── es.lproj │ │ │ └── GMSCore.strings │ │ ├── fi.lproj │ │ │ └── GMSCore.strings │ │ ├── fr.lproj │ │ │ └── GMSCore.strings │ │ ├── he.lproj │ │ │ └── GMSCore.strings │ │ ├── hr.lproj │ │ │ └── GMSCore.strings │ │ ├── hu.lproj │ │ │ └── GMSCore.strings │ │ ├── id.lproj │ │ │ └── GMSCore.strings │ │ ├── it.lproj │ │ │ └── GMSCore.strings │ │ ├── ja.lproj │ │ │ └── GMSCore.strings │ │ ├── ko.lproj │ │ │ └── GMSCore.strings │ │ ├── ms.lproj │ │ │ └── GMSCore.strings │ │ ├── nl.lproj │ │ │ └── GMSCore.strings │ │ ├── no.lproj │ │ │ └── GMSCore.strings │ │ ├── pl.lproj │ │ │ └── GMSCore.strings │ │ ├── polyline_colors_flat_texture.png │ │ ├── polyline_colors_texture.png │ │ ├── pt.lproj │ │ │ └── GMSCore.strings │ │ ├── pt_PT.lproj │ │ │ └── GMSCore.strings │ │ ├── ro.lproj │ │ │ └── GMSCore.strings │ │ ├── road_1-1.png │ │ ├── road_128-32.png │ │ ├── road_16-4.png │ │ ├── road_2-1.png │ │ ├── road_256-64.png │ │ ├── road_32-8.png │ │ ├── road_4-1.png │ │ ├── road_64-16.png │ │ ├── road_8-2.png │ │ ├── ru.lproj │ │ │ └── GMSCore.strings │ │ ├── sk.lproj │ │ │ └── GMSCore.strings │ │ ├── sv.lproj │ │ │ └── GMSCore.strings │ │ ├── th.lproj │ │ │ └── GMSCore.strings │ │ ├── tr.lproj │ │ │ └── GMSCore.strings │ │ ├── uk.lproj │ │ │ └── GMSCore.strings │ │ ├── vi.lproj │ │ │ └── GMSCore.strings │ │ ├── watermark_dark.png │ │ ├── watermark_dark@2x.png │ │ ├── watermark_light.png │ │ ├── watermark_light@2x.png │ │ ├── zh_CN.lproj │ │ │ └── GMSCore.strings │ │ └── zh_TW.lproj │ │ │ └── GMSCore.strings │ │ ├── Info.plist │ │ ├── active.png │ │ ├── active@2x.png │ │ ├── active_grouped.png │ │ ├── active_grouped@2x.png │ │ ├── back.png │ │ ├── back@2x.png │ │ ├── bubble_left.png │ │ ├── bubble_left@2x.png │ │ ├── bubble_right.png │ │ ├── bubble_right@2x.png │ │ ├── card_bg.png │ │ ├── card_bg@2x.png │ │ ├── close.png │ │ ├── close@2x.png │ │ ├── default_marker.png │ │ ├── default_marker@2x.png │ │ └── en.lproj │ │ └── InfoPlist.strings │ └── Current ├── InstaCab.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ └── contents.xcworkspacedata └── xcuserdata │ └── tisunov.xcuserdatad │ └── xcschemes │ ├── Instacab.xcscheme │ └── xcschememanagement.plist ├── Instacab.xcworkspace ├── contents.xcworkspacedata └── xcuserdata │ └── tisunov.xcuserdatad │ ├── WorkspaceSettings.xcsettings │ └── xcdebugger │ └── Breakpoints_v2.xcbkptlist ├── Instacab ├── AKTransliteration │ ├── AKTransliteration.h │ ├── AKTransliteration.m │ ├── EnRuRules.plist │ └── RuEnRules.plist ├── Account │ ├── CreditCardViewController.h │ └── CreditCardViewController.m ├── Analytics │ ├── AnalyticsManager.h │ └── AnalyticsManager.m ├── AppDelegate.h ├── AppDelegate.m ├── BaseService.h ├── BaseService.m ├── CGRectUtils.c ├── CGRectUtils.h ├── CardIO │ ├── CardIO.h │ ├── CardIOCreditCardInfo.h │ ├── CardIOPaymentViewController.h │ ├── CardIOPaymentViewControllerDelegate.h │ ├── CardIOView.h │ ├── CardIOViewDelegate.h │ └── libCardIO.a ├── Constants.h ├── Constants.m ├── ICAccountViewController.h ├── ICAccountViewController.m ├── ICAccountViewController.xib ├── ICApiResponse.h ├── ICApiResponse.m ├── ICCity.h ├── ICCity.m ├── ICClient.h ├── ICClient.m ├── ICClientService.h ├── ICClientService.m ├── ICCreateAccountDialog.h ├── ICCreateAccountDialog.m ├── ICCreateProfileDialog.h ├── ICCreateProfileDialog.m ├── ICDispatchServer.h ├── ICDispatchServer.m ├── ICDriver.h ├── ICDriver.m ├── ICFareEstimateViewController.h ├── ICFareEstimateViewController.m ├── ICFareEstimateViewController.xib ├── ICFeedbackViewController.h ├── ICFeedbackViewController.m ├── ICFeedbackViewController.xib ├── ICGoogleService.h ├── ICGoogleService.m ├── ICHighlightButton.h ├── ICHighlightButton.m ├── ICImage.h ├── ICImage.m ├── ICImageDownloader.h ├── ICImageDownloader.m ├── ICLaunchViewController.h ├── ICLaunchViewController.m ├── ICLaunchViewController.xib ├── ICLinkCardController.h ├── ICLinkCardController.m ├── ICLinkCardController.xib ├── ICLocation.h ├── ICLocation.m ├── ICLocationService.h ├── ICLocationService.m ├── ICLoginViewController.h ├── ICLoginViewController.m ├── ICNearbyVehicle.h ├── ICNearbyVehicle.m ├── ICNearbyVehicles.h ├── ICNearbyVehicles.m ├── ICPaymentProfile.h ├── ICPaymentProfile.m ├── ICPaymentViewController.h ├── ICPaymentViewController.m ├── ICPerson.h ├── ICPerson.m ├── ICPickupCalloutView.h ├── ICPickupCalloutView.m ├── ICPing.h ├── ICPing.m ├── ICPromoViewController.h ├── ICPromoViewController.m ├── ICPromoViewController.xib ├── ICReceiptViewController.h ├── ICReceiptViewController.m ├── ICReceiptViewController.xib ├── ICRequestViewController.h ├── ICRequestViewController.m ├── ICRequestViewController.xib ├── ICSearchViewController.h ├── ICSearchViewController.m ├── ICSignUpFlowDelegate.h ├── ICSignUpInfo.h ├── ICSignUpInfo.m ├── ICSingleton.h ├── ICSingleton.m ├── ICTrip.h ├── ICTrip.m ├── ICUpdateMobileViewController.h ├── ICUpdateMobileViewController.m ├── ICUpdateMobileViewController.xib ├── ICVehicle.h ├── ICVehicle.m ├── ICVehiclePathPoint.h ├── ICVehiclePathPoint.m ├── ICVehicleSelectionSliderButton.h ├── ICVehicleSelectionSliderButton.m ├── ICVehicleView.h ├── ICVehicleView.m ├── ICVerifyMobileViewController.h ├── ICVerifyMobileViewController.m ├── ICVerifyMobileViewController.xib ├── Images.xcassets │ ├── AppIcon.appiconset │ │ ├── AppIcon29x29.png │ │ ├── AppIcon29x29@2x.png │ │ ├── AppIcon40x40@2x.png │ │ ├── AppIcon60x60@2x.png │ │ └── Contents.json │ ├── LaunchImage.launchimage │ │ ├── Contents.json │ │ ├── LaunchImage@2x.png │ │ └── LaunchImage@R4.png │ ├── account_profile_icon.imageset │ │ ├── Contents.json │ │ ├── account_profile_icon.png │ │ └── account_profile_icon@2x.png │ ├── call_driver2.imageset │ │ ├── Contents.json │ │ ├── phone-1.png │ │ └── phone.png │ ├── card_plus.imageset │ │ ├── Contents.json │ │ ├── card_plus.png │ │ └── card_plus@2x.png │ ├── cardio.imageset │ │ ├── Contents.json │ │ ├── cardio.png │ │ └── cardio@2x.png │ ├── center_icon_up.imageset │ │ ├── Contents.json │ │ ├── center_icon_up.png │ │ └── center_icon_up@2x.png │ ├── circle_clock_normal.imageset │ │ ├── Contents.json │ │ ├── circle_clock_normal.png │ │ └── circle_clock_normal@2x.png │ ├── close_black.imageset │ │ ├── Contents.json │ │ ├── close_black.png │ │ └── close_black@2x.png │ ├── cloth_pattern.imageset │ │ ├── Contents.json │ │ ├── cloth_pattern.png │ │ └── cloth_pattern@2x.png │ ├── confirmation_mask.imageset │ │ ├── Contents.json │ │ ├── confirmation_mask.png │ │ └── confirmation_mask@2x.png │ ├── driver_placeholder.imageset │ │ ├── Contents.json │ │ ├── driver_placeholder.png │ │ └── driver_placeholder@2x.png │ ├── fail_icon.imageset │ │ ├── Contents.json │ │ ├── fail_icon.png │ │ └── fail_icon@2x.png │ ├── fare_estimate_dropoff_icon.imageset │ │ ├── Contents.json │ │ ├── fare_estimate_dropoff_icon.png │ │ └── fare_estimate_dropoff_icon@2x.png │ ├── fare_estimate_pickup_icon.imageset │ │ ├── Contents.json │ │ ├── fare_estimate_pickup_icon.png │ │ └── fare_estimate_pickup_icon@2x.png │ ├── farequote_icon.imageset │ │ ├── Contents.json │ │ ├── icon_farequote.png │ │ └── icon_farequote@2x.png │ ├── farequote_icon_white.imageset │ │ ├── Contents.json │ │ ├── icon_farequote_white.png │ │ └── icon_farequote_white@2x.png │ ├── home_icon_white.imageset │ │ ├── Contents.json │ │ ├── home_icon_white.png │ │ └── home_icon_white@2x.png │ ├── magic_square_grid.imageset │ │ ├── Contents.json │ │ ├── magic_square_grid.png │ │ └── magic_square_grid@2x.png │ ├── map_bubble_pin.imageset │ │ ├── Contents.json │ │ ├── map_bubble_pin.png │ │ └── map_bubble_pin@2x.png │ ├── network-alert.imageset │ │ ├── Contents.json │ │ ├── alert.png │ │ └── alert@2x.png │ ├── pin_green.imageset │ │ ├── Contents.json │ │ ├── pin_green.png │ │ └── pin_green@2x.png │ ├── pin_red.imageset │ │ ├── Contents.json │ │ ├── pin_red.png │ │ └── pin_red@2x.png │ ├── powered_by_4sq.imageset │ │ ├── Contents.json │ │ ├── powered_by_4sq.png │ │ └── powered_by_4sq@2x.png │ ├── promo_icon.imageset │ │ ├── Contents.json │ │ ├── icon_promo.png │ │ └── icon_promo@2x.png │ ├── promo_icon_white.imageset │ │ ├── Contents.json │ │ ├── icon_promo_white.png │ │ └── icon_promo_white@2x.png │ ├── rating_star_empty.imageset │ │ ├── Contents.json │ │ ├── rating_star_empty.png │ │ └── rating_star_empty@2x.png │ ├── rating_star_full.imageset │ │ ├── Contents.json │ │ ├── rating_star_full.png │ │ └── rating_star_full@2x.png │ ├── request_mask.imageset │ │ ├── Contents.json │ │ ├── request_mask.png │ │ └── request_mask@2x.png │ ├── search_icon_up.imageset │ │ ├── Contents.json │ │ ├── search_icon_up.png │ │ └── search_icon_up@2x.png │ ├── search_no_results_icon.imageset │ │ ├── Contents.json │ │ ├── search_no_results_icon.png │ │ └── search_no_results_icon@2x.png │ ├── set_pickup_location_arrow.imageset │ │ ├── Contents.json │ │ ├── set_pickup_location_arrow.png │ │ └── set_pickup_location_arrow@2x.png │ ├── set_pickup_location_bubble_left.imageset │ │ ├── Contents.json │ │ ├── set_pickup_location_bubble_left.png │ │ └── set_pickup_location_bubble_left@2x.png │ ├── set_pickup_location_bubble_right.imageset │ │ ├── Contents.json │ │ ├── set_pickup_location_bubble_right.png │ │ └── set_pickup_location_bubble_right@2x.png │ ├── share_icon_white.imageset │ │ ├── Contents.json │ │ ├── share_icon_white.png │ │ └── share_icon_white@2x.png │ ├── sidebar_icon.imageset │ │ ├── Contents.json │ │ └── sidebar_icon@2x.png │ ├── star.imageset │ │ ├── 28-star.png │ │ ├── 28-star@2x.png │ │ └── Contents.json │ ├── success_icon.imageset │ │ ├── Contents.json │ │ ├── success_icon.png │ │ └── success_icon@2x.png │ ├── vehicle_picker_slider_background.imageset │ │ ├── Contents.json │ │ ├── vehicle_picker_slider_background.png │ │ └── vehicle_picker_slider_background@2x.png │ ├── vehicle_picker_slider_down.imageset │ │ ├── Contents.json │ │ ├── vehicle_picker_slider_down.png │ │ └── vehicle_picker_slider_down@2x.png │ ├── vehicle_picker_slider_point.imageset │ │ ├── Contents.json │ │ ├── vehicle_picker_slider_point.png │ │ └── vehicle_picker_slider_point@2x.png │ └── vehicle_picker_slider_up.imageset │ │ ├── Contents.json │ │ ├── vehicle_picker_slider_white_schema_up.png │ │ └── vehicle_picker_slider_white_schema_up@2x.png ├── InstaCab-Info.plist ├── InstaCab-Prefix.pch ├── MBProgressHud+Global.h ├── MBProgressHud+Global.m ├── MBProgressHud+UIViewController.h ├── MBProgressHud+UIViewController.m ├── Models │ ├── ICSession.h │ └── ICSession.m ├── OpenInChromeController.h ├── OpenInChromeController.m ├── Payture │ ├── Payture.h │ └── Payture.m ├── QCustomAppearance.h ├── QCustomAppearance.m ├── QuickDialogController+Additions.h ├── QuickDialogController+Additions.m ├── Request │ ├── ICVehicleSelectionSliderLabel.h │ ├── ICVehicleSelectionSliderLabel.m │ ├── ICVehicleSelectionSliderView.h │ ├── ICVehicleSelectionSliderView.m │ ├── ICVehicleSelectionView.h │ └── ICVehicleSelectionView.m ├── Sidebar │ ├── ICSidebarController.h │ └── ICSidebarController.m ├── UIActionSheet+Blocks.h ├── UIActionSheet+Blocks.m ├── UIAlertView+Additions.h ├── UIAlertView+Additions.m ├── UIApplication+Alerts.h ├── UIApplication+Alerts.m ├── UIApplication+Progress.h ├── UIApplication+Progress.m ├── UINavigationController+Animation.h ├── UINavigationController+Animation.m ├── UINavigationController+Reachability.h ├── UINavigationController+Reachability.m ├── UIView+Positioning.h ├── UIView+Positioning.m ├── UIViewController+Location.h ├── UIViewController+Location.m ├── UIViewController+TitleLabel.h ├── UIViewController+TitleLabel.m ├── Views │ ├── ICLocationLabelView.h │ ├── ICLocationLabelView.m │ ├── ICLocationSingleLabel.h │ └── ICLocationSingleLabel.m ├── en.lproj │ ├── InfoPlist.strings │ └── Localizable.strings └── main.m ├── InstacabTests ├── InstacabTests-Info.plist ├── InstacabTests.m └── en.lproj │ └── InfoPlist.strings ├── LICENSE ├── Podfile ├── Podfile.lock ├── README.md ├── Skver.gpx └── readme ├── confirmation.png ├── fare_quote.png ├── feedback.png ├── pickup_location.png ├── progress.png ├── receipt.png └── request.png /.gitignore: -------------------------------------------------------------------------------- 1 | MiscImages/ 2 | UberImages/ 3 | font-awesome-to-png.py 4 | Reachability/ 5 | glypishpro.rar 6 | Uber* 7 | Pods/* 8 | Screen* 9 | .idea 10 | iOS-Custom* 11 | MRProgress* 12 | NSObject+Blocks 13 | /Images* 14 | Introduction* 15 | 9Yanvarya* 16 | Instacab.xcworkspace/xcuserdata/* 17 | RuTaxi -------------------------------------------------------------------------------- /GoogleMaps.framework/GoogleMaps: -------------------------------------------------------------------------------- 1 | Versions/Current/GoogleMaps -------------------------------------------------------------------------------- /GoogleMaps.framework/Headers: -------------------------------------------------------------------------------- 1 | Versions/Current/Headers -------------------------------------------------------------------------------- /GoogleMaps.framework/Resources: -------------------------------------------------------------------------------- 1 | Versions/Current/Resources -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/GoogleMaps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/GoogleMaps -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Headers/GMSCALayer.h: -------------------------------------------------------------------------------- 1 | // 2 | // GMSCALayer.h 3 | // Google Maps SDK for iOS 4 | // 5 | // Copyright 2013 Google Inc. 6 | // 7 | // Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of 8 | // Service: https://developers.google.com/maps/terms 9 | // 10 | 11 | #import 12 | 13 | /** 14 | * GMSCALayer is a superclass used by layers in the Google Maps SDK for iOS, 15 | * such as GMSMapLayer and GMSPanoramaLayer. 16 | * 17 | * This is an implementation detail and it should not be instantiated directly. 18 | */ 19 | @interface GMSCALayer : CALayer 20 | @end 21 | -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Headers/GMSCircle.h: -------------------------------------------------------------------------------- 1 | // 2 | // GMSCircle.h 3 | // Google Maps SDK for iOS 4 | // 5 | // Copyright 2013 Google Inc. 6 | // 7 | // Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of 8 | // Service: https://developers.google.com/maps/terms 9 | // 10 | 11 | #import 12 | 13 | #import 14 | 15 | /** 16 | * A circle on the Earth's surface (spherical cap). 17 | */ 18 | @interface GMSCircle : GMSOverlay 19 | 20 | /** Position on Earth of circle center. */ 21 | @property(nonatomic, assign) CLLocationCoordinate2D position; 22 | 23 | /** Radius of the circle in meters; must be positive. */ 24 | @property(nonatomic, assign) CLLocationDistance radius; 25 | 26 | /** 27 | * The width of the circle's outline in screen points. Defaults to 1. As per 28 | * GMSPolygon, the width does not scale when the map is zoomed. 29 | * Setting strokeWidth to 0 results in no stroke. 30 | */ 31 | @property(nonatomic, assign) CGFloat strokeWidth; 32 | 33 | /** The color of this circle's outline. The default value is black. */ 34 | @property(nonatomic, strong) UIColor *strokeColor; 35 | 36 | /** 37 | * The interior of the circle is painted with fillColor. 38 | * The default value is nil, resulting in no fill. 39 | */ 40 | @property(nonatomic, strong) UIColor *fillColor; 41 | 42 | /** 43 | * Convenience constructor for GMSCircle for a particular position and radius. 44 | * Other properties will have default values. 45 | */ 46 | + (instancetype)circleWithPosition:(CLLocationCoordinate2D)position 47 | radius:(CLLocationDistance)radius; 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Headers/GMSGeocoder.h: -------------------------------------------------------------------------------- 1 | // 2 | // GMSGeocoder.h 3 | // Google Maps SDK for iOS 4 | // 5 | // Copyright 2012 Google Inc. 6 | // 7 | // Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of 8 | // Service: https://developers.google.com/maps/terms 9 | // 10 | 11 | #import 12 | 13 | #import 14 | 15 | @class GMSReverseGeocodeResponse; 16 | 17 | /** GMSGeocoder error codes, embedded in NSError. */ 18 | typedef NS_ENUM(NSInteger, GMSGeocoderErrorCode) { 19 | kGMSGeocoderErrorInvalidCoordinate = 1, 20 | kGMSGeocoderErrorInternal, 21 | }; 22 | 23 | /** Handler that reports a reverse geocoding response, or error. */ 24 | typedef void (^GMSReverseGeocodeCallback)(GMSReverseGeocodeResponse *, NSError *); 25 | 26 | /** 27 | * Exposes a service for reverse geocoding. This maps Earth coordinates (latitude and longitude) to 28 | * a collection of addresses near that coordinate. 29 | */ 30 | @interface GMSGeocoder : NSObject 31 | 32 | /* Convenience constructor for GMSGeocoder. */ 33 | + (GMSGeocoder *)geocoder; 34 | 35 | /** 36 | * Reverse geocodes a coordinate on the Earth's surface. 37 | * 38 | * @param coordinate The coordinate to reverse geocode. 39 | * @param handler The callback to invoke with the reverse geocode results. 40 | * The callback will be invoked asynchronously from the main thread. 41 | */ 42 | - (void)reverseGeocodeCoordinate:(CLLocationCoordinate2D)coordinate 43 | completionHandler:(GMSReverseGeocodeCallback)handler; 44 | 45 | @end 46 | 47 | /** A collection of results from a reverse geocode request. */ 48 | @interface GMSReverseGeocodeResponse : NSObject 49 | 50 | /** Returns the first result, or nil if no results were available. */ 51 | - (GMSAddress *)firstResult; 52 | 53 | /** Returns an array of all the results (contains GMSAddress), including the first result. */ 54 | - (NSArray *)results; 55 | 56 | @end 57 | -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Headers/GMSIndoorBuilding.h: -------------------------------------------------------------------------------- 1 | // 2 | // GMSIndoorBuilding.h 3 | // Google Maps SDK for iOS 4 | // 5 | // Copyright 2013 Google Inc. 6 | // 7 | // Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of 8 | // Service: https://developers.google.com/maps/terms 9 | // 10 | 11 | 12 | /** 13 | * Describes a building which contains levels. 14 | */ 15 | @interface GMSIndoorBuilding : NSObject 16 | 17 | /** 18 | * Array of GMSIndoorLevel describing the levels which make up the building. 19 | * The levels are in 'display order' from top to bottom. 20 | */ 21 | @property(nonatomic, strong, readonly) NSArray *levels; 22 | 23 | /** 24 | * Index in the levels array of the default level. 25 | */ 26 | @property(nonatomic, assign, readonly) NSUInteger defaultLevelIndex; 27 | 28 | /** 29 | * If YES, the building is entirely underground and supports being hidden. 30 | */ 31 | @property(nonatomic, assign, readonly, getter=isUnderground) BOOL underground; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Headers/GMSIndoorLevel.h: -------------------------------------------------------------------------------- 1 | // 2 | // GMSIndoorLevel.h 3 | // Google Maps SDK for iOS 4 | // 5 | // Copyright 2013 Google Inc. 6 | // 7 | // Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of 8 | // Service: https://developers.google.com/maps/terms 9 | // 10 | 11 | 12 | /** 13 | * Describes a single level in a building. 14 | * Multiple buildings can share a level - in this case the level instances will 15 | * compare as equal, even though the level numbers/names may be different. 16 | */ 17 | @interface GMSIndoorLevel : NSObject 18 | 19 | /** Localized display name for the level, e.g. "Ground floor". */ 20 | @property(nonatomic, copy, readonly) NSString *name; 21 | 22 | /** Localized short display name for the level, e.g. "1". */ 23 | @property(nonatomic, copy, readonly) NSString *shortName; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Headers/GMSMarkerLayer.h: -------------------------------------------------------------------------------- 1 | // 2 | // GMSMarkerLayer.h 3 | // Google Maps SDK for iOS 4 | // 5 | // Copyright 2013 Google Inc. 6 | // 7 | // Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of 8 | // Service: https://developers.google.com/maps/terms 9 | // 10 | 11 | #import 12 | #import 13 | 14 | /** 15 | * GMSMarkerLayer is a custom subclass of CALayer, available on a per-marker 16 | * basis, that allows animation of several properties of its associated 17 | * GMSMarker. 18 | * 19 | * Note that this CALayer is never actually rendered directly, as GMSMapView is 20 | * provided entirely via an OpenGL layer. As such, adjustments or animations to 21 | * 'default' properties of CALayer will not have any effect. 22 | */ 23 | @interface GMSMarkerLayer : CALayer 24 | 25 | /** Latitude, part of |position| on GMSMarker. */ 26 | @property(nonatomic, assign) CLLocationDegrees latitude; 27 | 28 | /** Longitude, part of |position| on GMSMarker. */ 29 | @property(nonatomic, assign) CLLocationDegrees longitude; 30 | 31 | /** Rotation, as per GMSMarker. */ 32 | @property(nonatomic, assign) CLLocationDegrees rotation; 33 | 34 | /** Opacity, as per GMSMarker. */ 35 | @property float opacity; 36 | 37 | @end 38 | 39 | extern NSString *const kGMSMarkerLayerLatitude; 40 | extern NSString *const kGMSMarkerLayerLongitude; 41 | extern NSString *const kGMSMarkerLayerRotation; 42 | extern NSString *const kGMSMarkerLayerOpacity; 43 | -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Headers/GMSOrientation.h: -------------------------------------------------------------------------------- 1 | // 2 | // GMSOrientation.h 3 | // Google Maps SDK for iOS 4 | // 5 | // Copyright 2013 Google Inc. 6 | // 7 | // Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of 8 | // Service: https://developers.google.com/maps/terms 9 | // 10 | 11 | #import 12 | 13 | /** 14 | * GMSOrientation is a tuple of heading and pitch used to control the viewing direction of a 15 | * GMSPanoramaCamera. 16 | */ 17 | typedef struct { 18 | /** The camera heading (horizontal angle) in degrees. */ 19 | const CLLocationDirection heading; 20 | 21 | /** 22 | * The camera pitch (vertical angle), in degrees from the horizon. The |pitch| range is [-90,90], 23 | * although it is possible that not the full range is supported. 24 | */ 25 | const double pitch; 26 | } GMSOrientation; 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | /** Returns a GMSOrientation with the given |heading| and |pitch|. */ 33 | inline GMSOrientation GMSOrientationMake(CLLocationDirection heading, double pitch) { 34 | GMSOrientation orientation = {heading, pitch}; 35 | return orientation; 36 | } 37 | 38 | #ifdef __cplusplus 39 | } 40 | #endif 41 | -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Headers/GMSPanorama.h: -------------------------------------------------------------------------------- 1 | // 2 | // GMSPanorama.h 3 | // Google Maps SDK for iOS 4 | // 5 | // Copyright 2013 Google Inc. 6 | // 7 | // Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of 8 | // Service: https://developers.google.com/maps/terms 9 | // 10 | 11 | #import 12 | 13 | /** 14 | * GMSPanorama represents metadata for a specific panorama on the Earth. This class is not 15 | * instantiable directly and is obtained via GMSPanoramaService or GMSPanoramaView. 16 | */ 17 | @interface GMSPanorama : NSObject 18 | 19 | /** The precise location of this panorama. */ 20 | @property(nonatomic, readonly) CLLocationCoordinate2D coordinate; 21 | 22 | /** The ID of this panorama. Panoramas may change ID over time, so this should not be persisted */ 23 | @property(nonatomic, copy, readonly) NSString *panoramaID; 24 | 25 | /** An array of GMSPanoramaLink describing the neighboring panoramas. */ 26 | @property(nonatomic, copy, readonly) NSArray *links; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Headers/GMSPanoramaCameraUpdate.h: -------------------------------------------------------------------------------- 1 | // 2 | // GMSPanoramaCameraUpdate.h 3 | // Google Maps SDK for iOS 4 | // 5 | // Copyright 2013 Google Inc. 6 | // 7 | // Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of 8 | // Service: https://developers.google.com/maps/terms 9 | // 10 | 11 | @interface GMSPanoramaCameraUpdate : NSObject 12 | 13 | /** Returns an update that increments the camera heading with |deltaHeading|. */ 14 | + (GMSPanoramaCameraUpdate *)rotateBy:(CGFloat)deltaHeading; 15 | 16 | /** Returns an update that sets the camera heading to the given value. */ 17 | + (GMSPanoramaCameraUpdate *)setHeading:(CGFloat)heading; 18 | 19 | /** Returns an update that sets the camera pitch to the given value. */ 20 | + (GMSPanoramaCameraUpdate *)setPitch:(CGFloat)pitch; 21 | 22 | /** Returns an update that sets the camera zoom to the given value. */ 23 | + (GMSPanoramaCameraUpdate *)setZoom:(CGFloat)zoom; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Headers/GMSPanoramaLayer.h: -------------------------------------------------------------------------------- 1 | // 2 | // GMSPanoramaLayer.h 3 | // Google Maps SDK for iOS 4 | // 5 | // Copyright 2013 Google Inc. 6 | // 7 | // Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of 8 | // Service: https://developers.google.com/maps/terms 9 | // 10 | 11 | #import 12 | #import 13 | 14 | #import 15 | 16 | /** kGMSLayerPanoramaHeadingKey ranges from [0, 360). */ 17 | extern NSString *const kGMSLayerPanoramaHeadingKey; 18 | 19 | /** kGMSLayerPanoramaPitchKey ranges from [-90, 90]. */ 20 | extern NSString *const kGMSLayerPanoramaPitchKey; 21 | 22 | /** kGMSLayerCameraZoomLevelKey ranges from [1, 5], default 1. */ 23 | extern NSString *const kGMSLayerPanoramaZoomKey; 24 | 25 | /** kGMSLayerPanoramaFOVKey ranges from [1, 160] (in degrees), default 90. */ 26 | extern NSString *const kGMSLayerPanoramaFOVKey; 27 | 28 | /** 29 | * GMSPanoramaLayer is a custom subclass of CALayer, provided as the layer 30 | * class on GMSPanoramaView. This layer should not be instantiated directly. 31 | */ 32 | @interface GMSPanoramaLayer : GMSCALayer 33 | @property(nonatomic, assign) CLLocationDirection cameraHeading; 34 | @property(nonatomic, assign) double cameraPitch; 35 | @property(nonatomic, assign) float cameraZoom; 36 | @property(nonatomic, assign) double cameraFOV; 37 | @end 38 | -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Headers/GMSPanoramaLink.h: -------------------------------------------------------------------------------- 1 | // 2 | // GMSPanoramaLink.h 3 | // Google Maps SDK for iOS 4 | // 5 | // Copyright 2013 Google Inc. 6 | // 7 | // Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of 8 | // Service: https://developers.google.com/maps/terms 9 | // 10 | 11 | /** Links from a GMSPanorama to neighboring panoramas. */ 12 | @interface GMSPanoramaLink : NSObject 13 | 14 | /** Angle of the neighboring panorama, clockwise from north in degrees. */ 15 | @property(nonatomic, assign) CGFloat heading; 16 | 17 | /** 18 | * Panorama ID for the neighboring panorama. 19 | * Do not store this persistenly, it changes in time. 20 | */ 21 | @property(nonatomic, copy) NSString *panoramaID; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Headers/GMSPolygon.h: -------------------------------------------------------------------------------- 1 | // 2 | // GMSPolygon.h 3 | // Google Maps SDK for iOS 4 | // 5 | // Copyright 2013 Google Inc. 6 | // 7 | // Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of 8 | // Service: https://developers.google.com/maps/terms 9 | // 10 | 11 | #import 12 | 13 | @class GMSPath; 14 | 15 | /** 16 | * GMSPolygon defines a polygon that appears on the map. A polygon (like a polyline) defines a 17 | * series of connected coordinates in an ordered sequence; additionally, polygons form a closed loop 18 | * and define a filled region. 19 | */ 20 | @interface GMSPolygon : GMSOverlay 21 | 22 | /** The path that describes this polygon. The coordinates composing the path must be valid. */ 23 | @property(nonatomic, copy) GMSPath *path; 24 | 25 | /** The width of the polygon outline in screen points. Defaults to 1. */ 26 | @property(nonatomic, assign) CGFloat strokeWidth; 27 | 28 | /** The color of the polygon outline. Defaults to nil. */ 29 | @property(nonatomic, strong) UIColor *strokeColor; 30 | 31 | /** The fill color. Defaults to blueColor. */ 32 | @property(nonatomic, strong) UIColor *fillColor; 33 | 34 | /** Whether this polygon should be rendered with geodesic correction. */ 35 | @property(nonatomic, assign) BOOL geodesic; 36 | 37 | /** 38 | * Convenience constructor for GMSPolygon for a particular path. Other properties will have default 39 | * values. 40 | */ 41 | + (instancetype)polygonWithPath:(GMSPath *)path; 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Headers/GMSSyncTileLayer.h: -------------------------------------------------------------------------------- 1 | // 2 | // GMSSyncTileLayer.h 3 | // Google Maps SDK for iOS 4 | // 5 | // Copyright 2013 Google Inc. 6 | // 7 | // Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of 8 | // Service: https://developers.google.com/maps/terms 9 | // 10 | 11 | #import 12 | 13 | /** 14 | * GMSSyncTileLayer is an abstract subclass of GMSTileLayer that provides a sync 15 | * interface to generate image tile data. 16 | */ 17 | @interface GMSSyncTileLayer : GMSTileLayer 18 | 19 | /** 20 | * As per requestTileForX:y:zoom:receiver: on GMSTileLayer, but provides a 21 | * synchronous interface to return tiles. This method may block or otherwise 22 | * perform work, and is not called on the main thread. 23 | * 24 | * Calls to this method may also be made from multiple threads so 25 | * implementations must be threadsafe. 26 | */ 27 | - (UIImage *)tileForX:(NSUInteger)x y:(NSUInteger)y zoom:(NSUInteger)zoom; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Headers/GMSURLTileLayer.h: -------------------------------------------------------------------------------- 1 | // 2 | // GMSURLTileLayer.h 3 | // Google Maps SDK for iOS 4 | // 5 | // Copyright 2013 Google Inc. 6 | // 7 | // Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of 8 | // Service: https://developers.google.com/maps/terms 9 | // 10 | 11 | #import 12 | 13 | @class NSURL; 14 | 15 | /** 16 | * |GMSTileURLConstructor| is a block taking |x|, |y| and |zoom| 17 | * and returning an NSURL, or nil to indicate no tile for that location. 18 | */ 19 | typedef NSURL *(^GMSTileURLConstructor)(NSUInteger x, NSUInteger y, NSUInteger zoom); 20 | 21 | /** 22 | * GMSURLTileProvider fetches tiles based on the URLs returned from a 23 | * GMSTileURLConstructor. For example: 24 | *
25 |  *   GMSTileURLConstructor constructor = ^(NSUInteger x, NSUInteger y, NSUInteger zoom) {
26 |  *     NSString *URLStr = [NSString stringWithFormat:@"http://example.com/%d/%d/%d.png", x, y, zoom];
27 |  *     return [NSURL URLWithString:URLStr];
28 |  *   };
29 |  *   GMSTileLayer *layer =
30 |  *       [GMSURLTileLayer tileLayerWithURLConstructor:constructor];
31 |  *   layer.userAgent = @"SDK user agent";
32 |  *   layer.map = map;
33 |  * 
34 | * 35 | * GMSURLTileProvider may not be subclassed and should only be created via its 36 | * convenience constructor. 37 | */ 38 | @interface GMSURLTileLayer : GMSTileLayer 39 | 40 | /** Convenience constructor. |constructor| must be non-nil. */ 41 | + (instancetype)tileLayerWithURLConstructor:(GMSTileURLConstructor)constructor; 42 | 43 | /** 44 | * Specify the user agent to describe your application. If this is nil (the 45 | * default), the default iOS user agent is used for HTTP requests. 46 | */ 47 | @property(nonatomic, copy) NSString *userAgent; 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Headers/GoogleMaps.h: -------------------------------------------------------------------------------- 1 | // 2 | // GoogleMaps.h 3 | // Google Maps SDK for iOS 4 | // 5 | // Copyright 2012 Google Inc. 6 | // 7 | // Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of 8 | // Service: https://developers.google.com/maps/terms 9 | // 10 | 11 | #import 12 | #import 13 | #import 14 | #import 15 | #import 16 | #import 17 | #import 18 | #import 19 | #import 20 | #import 21 | #import 22 | #import 23 | #import 24 | #import 25 | #import 26 | #import 27 | #import 28 | #import 29 | #import 30 | #import 31 | #import 32 | #import 33 | #import 34 | #import 35 | #import 36 | #import 37 | #import 38 | #import 39 | #import 40 | #import 41 | #import 42 | #import 43 | #import 44 | #import 45 | #import 46 | #import 47 | #import 48 | #import 49 | #import 50 | -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCacheStorage.momd/Storage.mom: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCacheStorage.momd/Storage.mom -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCacheStorage.momd/Storage.omo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCacheStorage.momd/Storage.omo -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCacheStorage.momd/VersionInfo.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCacheStorage.momd/VersionInfo.plist -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/DroidSansMerged-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/DroidSansMerged-Regular.ttf -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/GMSSprites-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/GMSSprites-0.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/GMSSprites-0_retina.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/GMSSprites-0_retina.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/Info.plist -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/Tharlon-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/Tharlon-Regular.ttf -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/ar.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/ar.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/button_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/button_background.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/button_background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/button_background@2x.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/button_compass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/button_compass.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/button_compass@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/button_compass@2x.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/button_my_location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/button_my_location.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/button_my_location@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/button_my_location@2x.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/ca.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/ca.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/compass_pin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/compass_pin.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/compass_pin@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/compass_pin@2x.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/cs.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/cs.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/da.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/da.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/dav_one_way_16_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/dav_one_way_16_256.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/de.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/de.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/el.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/el.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/en.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/en.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/en_GB.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/en_GB.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/es.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/es.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/fi.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/fi.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/fr.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/fr.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/he.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/he.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/hr.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/hr.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/hu.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/hu.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/id.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/id.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/it.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/it.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/ja.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/ja.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/ko.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/ko.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/ms.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/ms.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/nl.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/nl.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/no.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/no.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/pl.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/pl.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/polyline_colors_flat_texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/polyline_colors_flat_texture.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/polyline_colors_texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/polyline_colors_texture.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/pt.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/pt.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/pt_PT.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/pt_PT.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/ro.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/ro.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_1-1.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_128-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_128-32.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_16-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_16-4.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_2-1.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_256-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_256-64.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_32-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_32-8.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_4-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_4-1.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_64-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_64-16.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_8-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/road_8-2.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/ru.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/ru.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/sk.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/sk.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/sv.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/sv.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/th.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/th.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/tr.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/tr.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/uk.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/uk.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/vi.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/vi.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/watermark_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/watermark_dark.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/watermark_dark@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/watermark_dark@2x.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/watermark_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/watermark_light.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/watermark_light@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/watermark_light@2x.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/zh_CN.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/zh_CN.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/zh_TW.lproj/GMSCore.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/GMSCoreResources.bundle/zh_TW.lproj/GMSCore.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/Info.plist -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/active.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/active@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/active@2x.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/active_grouped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/active_grouped.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/active_grouped@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/active_grouped@2x.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/back.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/back@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/back@2x.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/bubble_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/bubble_left.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/bubble_left@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/bubble_left@2x.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/bubble_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/bubble_right.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/bubble_right@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/bubble_right@2x.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/card_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/card_bg.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/card_bg@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/card_bg@2x.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/close.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/close@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/close@2x.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/default_marker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/default_marker.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/default_marker@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/default_marker@2x.png -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle/en.lproj/InfoPlist.strings -------------------------------------------------------------------------------- /GoogleMaps.framework/Versions/Current: -------------------------------------------------------------------------------- 1 | A -------------------------------------------------------------------------------- /InstaCab.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /InstaCab.xcodeproj/xcuserdata/tisunov.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Instacab.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | D9B03234180572B400F7AF69 16 | 17 | primary 18 | 19 | 20 | D9B03258180572B400F7AF69 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Instacab.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Instacab.xcworkspace/xcuserdata/tisunov.xcuserdatad/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges 6 | 7 | SnapshotAutomaticallyBeforeSignificantChanges 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Instacab.xcworkspace/xcuserdata/tisunov.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /Instacab/AKTransliteration/AKTransliteration.h: -------------------------------------------------------------------------------- 1 | // 2 | // AKTransliteration.h 3 | // 4 | // Copyright (c) 2012 Aleksey Kozhevnikov 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | typedef enum { 25 | TD_RuEn, 26 | TD_EnRu, 27 | 28 | TD_Count 29 | } e_TransliterateDirection; 30 | 31 | @interface AKTransliteration : NSObject 32 | 33 | -(id)initForDirection:(e_TransliterateDirection)direction; 34 | 35 | -(NSString*)transliterate:(NSString*)string; 36 | -(BOOL)transliterate:(NSString*)string into:(NSString**)result; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Instacab/Account/CreditCardViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CreditCardViewController.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 17/06/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "QuickDialog.h" 11 | 12 | @interface CreditCardViewController : QuickDialogController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Instacab/Account/CreditCardViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // CreditCardViewController.m 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 17/06/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "CreditCardViewController.h" 10 | 11 | @implementation CreditCardViewController 12 | 13 | - (id)init 14 | { 15 | self = [super init]; 16 | if (self) { 17 | self.root = [[QRootElement alloc] init]; 18 | self.root.grouped = YES; 19 | 20 | 21 | // [self.root addSection:section]; 22 | } 23 | return self; 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Instacab/Analytics/AnalyticsManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // AnalyticsManager.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 15/06/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICSingleton.h" 10 | #import "ICSignUpInfo.h" 11 | #import "ICLocation.h" 12 | 13 | // Track only events and actions 14 | // Events - something that happens: MapPageView 15 | // Actions - something that user does: Sign In 16 | @interface AnalyticsManager : ICSingleton 17 | + (void)identify; 18 | + (void)linkPreSignupEventsWithClientId:(NSNumber *)clientId; 19 | + (void)track:(NSString *)event withProperties:(NSDictionary *)properties; 20 | 21 | + (void)trackSignUpCancel:(ICSignUpInfo *)info; 22 | + (void)trackRequestVehicle:(NSNumber *)vehicleViewId pickupLocation:(ICLocation *)location; 23 | + (void)trackContactDriver:(NSNumber *)vehicleViewId; 24 | 25 | + (void)trackNearestCab:(NSNumber *)vehicleViewId 26 | reason:(NSString *)reason 27 | availableVehicles:(NSNumber *)availableVehicles 28 | eta:(NSNumber *)eta; 29 | 30 | + (void)trackChangeVehicleView:(NSNumber *)vehicleViewId 31 | availableVehicles:(NSNumber *)availableVehicles 32 | eta:(NSNumber *)eta; 33 | 34 | + (NSString *)trackFareEstimate:(NSNumber *)vehicleViewId 35 | pickupLocation:(ICLocation *)pickupLocation 36 | destinationLocation:(ICLocation *)destinationLocation; 37 | 38 | + (void)registerConfirmMobileProperty; 39 | + (void)registerPaymentTypeCardProperty; 40 | 41 | + (void)increment:(NSString *)property; 42 | @end 43 | -------------------------------------------------------------------------------- /Instacab/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 10/9/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "RESideMenu.h" 11 | 12 | @interface AppDelegate : UIResponder 13 | 14 | @property (strong, nonatomic) UIWindow *window; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Instacab/BaseService.h: -------------------------------------------------------------------------------- 1 | // 2 | // BaseService.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 07/03/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICDispatchServer.h" 10 | #import "ICSingleton.h" 11 | 12 | @protocol BaseServiceDelegate 13 | - (void)requestDidTimeout; 14 | @end 15 | 16 | extern NSString * const kFieldMessageType; 17 | extern NSString * const kFieldEmail; 18 | extern NSString * const kFieldPassword; 19 | 20 | @interface BaseService : ICSingleton 21 | -(id)initWithAppType:(NSString *)appType keepConnection:(BOOL)keep infiniteResend:(BOOL)infiniteResend; 22 | -(void)sendMessage:(NSDictionary *)message; 23 | -(void)sendMessage:(NSDictionary *)message coordinates:(CLLocationCoordinate2D)coordinates; 24 | 25 | -(void)cancelRequestTimeout; 26 | 27 | @property (nonatomic, readonly, strong) ICDispatchServer *dispatchServer; 28 | @property (nonatomic, weak) id delegate; 29 | @end 30 | -------------------------------------------------------------------------------- /Instacab/CGRectUtils.c: -------------------------------------------------------------------------------- 1 | // 2 | // CGRectUtils.c 3 | // InstacabDriver 4 | // 5 | // Created by Pavel Tisunov on 24/11/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #include "CGRectUtils.h" 10 | 11 | CGRect CGRectSetWidth(CGRect rect, CGFloat width) { 12 | return CGRectMake(rect.origin.x, rect.origin.y, width, rect.size.height); 13 | } 14 | 15 | CGRect CGRectSetHeight(CGRect rect, CGFloat height) { 16 | return CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, height); 17 | } 18 | 19 | CGRect CGRectSetSize(CGRect rect, CGSize size) { 20 | return CGRectMake(rect.origin.x, rect.origin.y, size.width, size.height); 21 | } 22 | 23 | CGRect CGRectSetX(CGRect rect, CGFloat x) { 24 | return CGRectMake(x, rect.origin.y, rect.size.width, rect.size.height); 25 | } 26 | 27 | CGRect CGRectSetY(CGRect rect, CGFloat y) { 28 | return CGRectMake(rect.origin.x, y, rect.size.width, rect.size.height); 29 | } 30 | 31 | CGRect CGRectSetOrigin(CGRect rect, CGPoint origin) { 32 | return CGRectMake(origin.x, origin.y, rect.size.width, rect.size.height); 33 | } 34 | -------------------------------------------------------------------------------- /Instacab/CGRectUtils.h: -------------------------------------------------------------------------------- 1 | // 2 | // CGRectUtils.h 3 | // InstacabDriver 4 | // 5 | // Created by Pavel Tisunov on 24/11/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #ifndef InstacabDriver_CGRectUtils_h 10 | #define InstacabDriver_CGRectUtils_h 11 | 12 | #include 13 | 14 | CGRect CGRectSetWidth(CGRect rect, CGFloat width); 15 | CGRect CGRectSetHeight(CGRect rect, CGFloat height); 16 | CGRect CGRectSetSize(CGRect rect, CGSize size); 17 | CGRect CGRectSetX(CGRect rect, CGFloat x); 18 | CGRect CGRectSetY(CGRect rect, CGFloat y); 19 | CGRect CGRectSetOrigin(CGRect rect, CGPoint origin); 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /Instacab/CardIO/CardIO.h: -------------------------------------------------------------------------------- 1 | // 2 | // CardIO.h 3 | // Version 3.4.4 4 | // 5 | // Copyright (c) 2011-2013 PayPal. All rights reserved. 6 | // 7 | 8 | // All-in-one header file for card.io sdk. 9 | 10 | #import "CardIOPaymentViewController.h" 11 | #import "CardIOPaymentViewControllerDelegate.h" 12 | #import "CardIOView.h" 13 | #import "CardIOViewDelegate.h" 14 | #import "CardIOCreditCardInfo.h" 15 | -------------------------------------------------------------------------------- /Instacab/CardIO/CardIOPaymentViewControllerDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // CardIOPaymentViewControllerDelegate.h 3 | // Version 3.4.4 4 | // 5 | // Copyright (c) 2011-2013 PayPal. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @class CardIOPaymentViewController; 11 | @class CardIOCreditCardInfo; 12 | 13 | /// The receiver will be notified when the CardIOPaymentViewController flow completes, due to either success or user-cancellation. 14 | /// 15 | /// Exactly one of these delegate methods will be called. 16 | /// 17 | /// Each of them MUST dismiss the CardIOPaymentViewController. 18 | @protocol CardIOPaymentViewControllerDelegate 19 | 20 | @required 21 | 22 | /// This method will be called if the user cancels the scan. You MUST dismiss paymentViewController. 23 | /// @param paymentViewController The active CardIOPaymentViewController. 24 | - (void)userDidCancelPaymentViewController:(CardIOPaymentViewController *)paymentViewController; 25 | 26 | /// This method will be called when there is a successful scan (or manual entry). You MUST dismiss paymentViewController. 27 | /// @param cardInfo The results of the scan. 28 | /// @param paymentViewController The active CardIOPaymentViewController. 29 | - (void)userDidProvideCreditCardInfo:(CardIOCreditCardInfo *)cardInfo inPaymentViewController:(CardIOPaymentViewController *)paymentViewController; 30 | 31 | @end -------------------------------------------------------------------------------- /Instacab/CardIO/CardIOViewDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // CardIOViewDelegate.h 3 | // Version 3.4.4 4 | // 5 | // Copyright (c) 2011-2013 PayPal. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @class CardIOCreditCardInfo; 11 | @class CardIOView; 12 | 13 | /// The receiver will be notified when the CardIOView completes it work. 14 | @protocol CardIOViewDelegate 15 | 16 | @required 17 | 18 | /// This method will be called when the CardIOView completes its work. 19 | /// It is up to you to hide or remove the CardIOView. 20 | /// At a minimum, you should give the user an opportunity to confirm that the card information was captured correctly. 21 | /// @param cardIOView The active CardIOView. 22 | /// @param cardInfo The results of the scan. 23 | /// @note cardInfo will be nil if exiting due to a problem (e.g., no available camera, or an invalid appToken). 24 | - (void)cardIOView:(CardIOView *)cardIOView didScanCard:(CardIOCreditCardInfo *)cardInfo; 25 | 26 | @end -------------------------------------------------------------------------------- /Instacab/CardIO/libCardIO.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/CardIO/libCardIO.a -------------------------------------------------------------------------------- /Instacab/Constants.h: -------------------------------------------------------------------------------- 1 | // 2 | // Constants.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 13/06/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | extern NSString *const kLogoutNotification; 12 | -------------------------------------------------------------------------------- /Instacab/Constants.m: -------------------------------------------------------------------------------- 1 | // 2 | // Constants.c 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 13/06/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | NSString *const kLogoutNotification = @"kLogoutNotification"; -------------------------------------------------------------------------------- /Instacab/ICAccountViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICAccountViewController.h 3 | // Instacab 4 | // 5 | // Created by Pavel Tisunov on 17/01/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "QuickDialog.h" 11 | 12 | @interface ICAccountViewController : QuickDialogController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Instacab/ICAccountViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Instacab/ICApiResponse.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICApiResponse.h 3 | // Instacab 4 | // 5 | // Created by Pavel Tisunov on 16/01/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "Mantle.h" 10 | #import "ICClient.h" 11 | 12 | @interface ICError : MTLModel 13 | @property (nonatomic, copy, readonly) NSString *message; 14 | @property (nonatomic, copy, readonly) NSNumber *statusCode; 15 | @end 16 | 17 | @interface ICApiResponse : MTLModel 18 | @property (nonatomic, copy, readonly) ICError *error; 19 | @property (nonatomic, strong, readonly) ICClient *client; 20 | @property (nonatomic, copy, readonly) NSDictionary *data; 21 | @end 22 | -------------------------------------------------------------------------------- /Instacab/ICApiResponse.m: -------------------------------------------------------------------------------- 1 | // 2 | // ICApiResponse.m 3 | // Instacab 4 | // 5 | // Created by Pavel Tisunov on 16/01/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICApiResponse.h" 10 | 11 | @implementation ICError 12 | 13 | + (NSDictionary *)JSONKeyPathsByPropertyKey { 14 | return @{ 15 | @"message": @"message", 16 | @"statusCode": @"statusCode", 17 | }; 18 | } 19 | 20 | @end 21 | 22 | 23 | @implementation ICApiResponse 24 | 25 | + (NSDictionary *)JSONKeyPathsByPropertyKey { 26 | return @{ 27 | @"error": @"error", 28 | @"client": @"data.client", 29 | @"data": @"data" 30 | }; 31 | } 32 | 33 | + (NSValueTransformer *)errorJSONTransformer { 34 | return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:ICError.class]; 35 | } 36 | 37 | + (NSValueTransformer *)clientJSONTransformer { 38 | return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:ICClient.class]; 39 | } 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /Instacab/ICCity.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICCity.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 19/05/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "Mantle.h" 10 | #import "ICVehicleView.h" 11 | #import "ICNearbyVehicles.h" 12 | #import "ICNearbyVehicle.h" 13 | 14 | extern NSString * const kCityChangedNotification; 15 | 16 | @interface ICCity : MTLModel 17 | @property (nonatomic, copy, readonly) NSString *cityName; 18 | @property (nonatomic, copy, readonly) NSNumber *defaultVehicleViewId; 19 | @property (nonatomic, copy, readonly) NSDictionary *vehicleViews; 20 | @property (nonatomic, copy, readonly) NSArray *vehicleViewsOrder; 21 | @property (nonatomic, copy, readonly) NSArray *orderedVehicleViews; 22 | 23 | -(void)update:(ICCity *)city; 24 | -(ICVehicleView *)vehicleViewById:(NSNumber *)vehicleViewId; 25 | -(NSNumber *)vehicleCountByViewId:(NSNumber *)vehicleViewId; 26 | -(NSNumber *)minEtaByViewId:(NSNumber *)vehicleViewId; 27 | 28 | +(instancetype)shared; 29 | @end 30 | -------------------------------------------------------------------------------- /Instacab/ICClient.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVClient.h 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 10/22/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "ICPerson.h" 11 | #import "ICTrip.h" 12 | #import "ICPaymentProfile.h" 13 | 14 | typedef enum : NSUInteger { 15 | ICClientStatusLooking = 1, 16 | ICClientStatusDispatching, 17 | ICClientStatusWaitingForPickup, 18 | ICClientStatusOnTrip, 19 | ICClientStatusPendingRating 20 | } ICClientStatus; 21 | 22 | @interface ICClient : ICPerson 23 | @property (nonatomic, copy) NSString *email; 24 | @property (nonatomic, copy) NSString *password; 25 | @property (nonatomic, copy) NSString *token; 26 | @property (nonatomic, copy) NSNumber *hasConfirmedMobile; 27 | @property (nonatomic, copy) NSString *referralCode; 28 | @property (nonatomic, assign) BOOL isAdmin; 29 | @property (nonatomic, strong, readonly) ICPaymentProfile *paymentProfile; 30 | @property (nonatomic, assign) ICClientStatus state; 31 | @property (nonatomic, strong, readonly) ICTrip *tripPendingRating; 32 | @property (nonatomic, copy, readonly) NSDictionary *lastEstimatedTrip; 33 | 34 | // Computed properties 35 | @property (readonly) BOOL hasCardOnFile; 36 | @property (nonatomic, readonly) NSString *cardHolder; 37 | @property (readonly) BOOL mobileConfirmed; 38 | 39 | -(void)logout; 40 | -(BOOL)isSignedIn; 41 | -(void)update: (ICClient *)client; 42 | -(void)save; 43 | -(void)confirmMobile; 44 | +(instancetype)sharedInstance; 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Instacab/ICCreateAccountDialog.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICRegistrationViewController.h 3 | // Instacab 4 | // 5 | // Created by Pavel Tisunov on 13/01/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "QuickDialog.h" 11 | #import "ICSignUpFlowDelegate.h" 12 | #import "UIViewController+TitleLabel.h" 13 | 14 | @interface ICCreateAccountDialog : QuickDialogController 15 | 16 | @property (nonatomic, weak) id delegate; 17 | @end 18 | -------------------------------------------------------------------------------- /Instacab/ICCreateProfileDialog.h: -------------------------------------------------------------------------------- 1 | // 2 | // PersonNameViewController.h 3 | // Instacab 4 | // 5 | // Created by Pavel Tisunov on 14/01/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "QuickDialog.h" 10 | #import "ICSignUpInfo.h" 11 | #import "ICSignUpFlowDelegate.h" 12 | #import "UIViewController+TitleLabel.h" 13 | 14 | @interface ICCreateProfileDialog : QuickDialogController 15 | @property (strong, nonatomic) ICSignUpInfo *signupInfo; 16 | @property (nonatomic, weak) id delegate; 17 | @end 18 | -------------------------------------------------------------------------------- /Instacab/ICDispatchServer.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVDispatchServer.h 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 10/22/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "SRWebSocket.h" 12 | 13 | extern NSString *const kDispatchServerConnectionChangeNotification; 14 | extern NSTimeInterval const kConnectTimeoutSecs; 15 | 16 | @protocol ICDispatchServerDelegate 17 | - (void)didReceiveMessage:(NSDictionary *)jsonDictionary; 18 | - (void)didConnect; 19 | - (void)didDisconnect; 20 | @end 21 | 22 | @interface ICDispatchServer : NSObject 23 | -(id)initWithAppType:(NSString *)appType keepConnection:(BOOL)keep; 24 | 25 | - (void)sendMessage:(NSDictionary *)message coordinates:(CLLocationCoordinate2D)coordinates; 26 | - (void)connect; 27 | - (void)disconnect; 28 | 29 | @property (nonatomic, readonly) BOOL connected; 30 | @property (nonatomic) BOOL maintainConnection; 31 | @property (nonatomic) BOOL enablePingPong; 32 | @property (nonatomic, copy) NSString *appType; 33 | @property (nonatomic, weak) id delegate; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Instacab/ICDriver.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVDriver.h 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 25/10/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICPerson.h" 10 | #import "ICLocation.h" 11 | 12 | typedef enum : NSUInteger { 13 | SVDriverStateOffDuty, 14 | SVDriverStateAvailable, 15 | SVDriverStateReserved, 16 | SVDriverStateDispatching, 17 | SVDriverStateAccepted, 18 | SVDriverStateArrived, 19 | SVDriverStateDrivingClient, 20 | SVDriverStatePendingRating 21 | } SVDriverState; 22 | 23 | @interface ICDriver : ICPerson 24 | @property (nonatomic, strong, readonly) ICLocation *location; 25 | @property (nonatomic, assign, readonly) SVDriverState state; 26 | @property (nonatomic, copy, readonly) NSString *photoUrl; 27 | 28 | @property (nonatomic, readonly) CLLocationCoordinate2D coordinate; 29 | @property (nonatomic, readonly) int course; 30 | 31 | -(void)call; 32 | @end 33 | -------------------------------------------------------------------------------- /Instacab/ICFareEstimateViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICFareEstimateViewController.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 26/04/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICSearchViewController.h" 10 | 11 | @interface ICFareEstimateViewController : ICSearchViewController 12 | -(id)initWithPickupLocation:(ICLocation *)pickupLocation; 13 | @end 14 | -------------------------------------------------------------------------------- /Instacab/ICFareEstimateViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /Instacab/ICFeedbackViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICFeedbackViewController.h 3 | // Instacab 4 | // 5 | // Created by Pavel Tisunov on 13/01/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "ICHighlightButton.h" 11 | #import "EDStarRating.h" 12 | 13 | @interface ICFeedbackViewController : UIViewController 14 | @property (strong, nonatomic) IBOutlet ICHighlightButton *submitButton; 15 | - (IBAction)submitPressed:(id)sender; 16 | @property (strong, nonatomic) IBOutlet UITextView *feedbackTextView; 17 | @property (strong, nonatomic) IBOutlet EDStarRating *starRating; 18 | @property (nonatomic, assign) float driverRating; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Instacab/ICGoogleService.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVGoogleService.h 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 23/10/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "ICLocation.h" 12 | #import "ICSingleton.h" 13 | 14 | @protocol ICGoogleServiceDelegate 15 | - (void)didGeocodeLocation:(ICLocation*)location; 16 | - (void)didFailToGeocodeWithError:(NSError*)error; 17 | @end 18 | 19 | typedef void (^ICGoogleServiceSuccessBlock)(NSArray *locations); 20 | typedef void (^ICGoogleServiceFailureBlock)(NSError *error); 21 | 22 | @interface ICGoogleService : ICSingleton 23 | - (void)reverseGeocodeLocation:(CLLocationCoordinate2D)location; 24 | - (void)geocodeAddress:(NSString *)address success:(ICGoogleServiceSuccessBlock)success failure:(ICGoogleServiceFailureBlock)failure; 25 | @property (nonatomic,weak) id delegate; 26 | 27 | @end -------------------------------------------------------------------------------- /Instacab/ICHighlightButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // HRHighlightButton.h 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 10/12/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ICHighlightButton : UIButton 12 | @property (nonatomic, strong, readonly) UIColor *normalColor; 13 | @property (nonatomic, strong, readonly) UIColor *highlightedColor; 14 | @property (nonatomic, strong, readonly) UIColor *disabledColor; 15 | 16 | - (void)setNormalColor:(UIColor *)normalColor; 17 | - (void)setDisabledColor:(UIColor *)disabledColor; 18 | - (void)setHighlightedColor:(UIColor *)highlightedColor; 19 | 20 | @end -------------------------------------------------------------------------------- /Instacab/ICImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICImage.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 19/05/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "Mantle.h" 10 | 11 | @interface ICImage : MTLModel 12 | @property (nonatomic, assign, readonly) long height; 13 | @property (nonatomic, assign, readonly) long width; 14 | @property (nonatomic, copy, readonly) NSString *url; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Instacab/ICImage.m: -------------------------------------------------------------------------------- 1 | // 2 | // ICImage.m 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 19/05/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICImage.h" 10 | 11 | @implementation ICImage 12 | 13 | + (NSDictionary *)JSONKeyPathsByPropertyKey { 14 | return @{ 15 | @"height": @"height", 16 | @"width": @"width", 17 | @"url": @"url" 18 | }; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Instacab/ICImageDownloader.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICImageDownloader.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 26/05/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PromiseKit.h" 11 | 12 | @interface ICImageDownloader : NSObject 13 | + (instancetype)shared; 14 | -(Promise *)downloadImageUrl:(NSString *)url; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Instacab/ICImageDownloader.m: -------------------------------------------------------------------------------- 1 | // 2 | // ICImageDownloader.m 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 26/05/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICImageDownloader.h" 10 | #import "AFHTTPRequestOperation.h" 11 | 12 | @implementation ICImageDownloader { 13 | NSMutableDictionary *_promises; 14 | } 15 | 16 | + (instancetype)shared { 17 | static ICImageDownloader *sharedDownloader = nil; 18 | static dispatch_once_t onceToken; 19 | dispatch_once(&onceToken, ^{ 20 | sharedDownloader = [[self alloc] init]; 21 | }); 22 | return sharedDownloader; 23 | } 24 | 25 | - (instancetype)init 26 | { 27 | self = [super init]; 28 | if (self) { 29 | _promises = [NSMutableDictionary dictionary]; 30 | } 31 | return self; 32 | } 33 | 34 | -(Promise *)downloadImageUrl:(NSString *)url { 35 | Promise *promise = _promises[url]; 36 | if (promise) return promise; 37 | 38 | promise = dispatch_promise(^{ 39 | return [NSURLConnection GET:url]; 40 | }); 41 | 42 | _promises[url] = promise; 43 | return promise; 44 | } 45 | 46 | 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Instacab/ICLaunchViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICLaunchViewController.h 3 | // Instacab 4 | // 5 | // Created by Pavel Tisunov on 13/01/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "BaseService.h" 11 | #import "ICHighlightButton.h" 12 | #import "ICLocationService.h" 13 | #import "ICSignUpFlowDelegate.h" 14 | #import "ICLoginViewController.h" 15 | 16 | @interface ICLaunchViewController : UIViewController 17 | @property (strong, nonatomic) IBOutlet ICHighlightButton *signinButton; 18 | @property (strong, nonatomic) IBOutlet ICHighlightButton *signupButton; 19 | @property (strong, nonatomic) IBOutlet UILabel *loadingLabel; 20 | @property (strong, nonatomic) IBOutlet UIActivityIndicatorView *loadingIndicator; 21 | - (IBAction)loginAction:(id)sender; 22 | - (IBAction)signup:(id)sender; 23 | @property (strong, nonatomic) IBOutlet UIImageView *backgroundImageView; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Instacab/ICLinkCardController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICBankCardViewController.h 3 | // Instacab 4 | // 5 | // Created by Pavel Tisunov on 13/01/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PKView.h" 11 | #import "CardIO.h" 12 | #import "ICSignUpInfo.h" 13 | #import "ICSignUpFlowDelegate.h" 14 | #import "UIViewController+TitleLabel.h" 15 | 16 | @interface PKViewEx : PKView 17 | -(void)updateWithCardIO:(CardIOCreditCardInfo *)info; 18 | @end 19 | 20 | @protocol LinkCardControllerDelegate 21 | -(void)didRegisterPaymentCard; 22 | @end 23 | 24 | @interface ICLinkCardController : UIViewController 25 | @property (strong, nonatomic) IBOutlet PKViewEx *paymentView; 26 | @property (strong, nonatomic) ICSignUpInfo *signupInfo; 27 | @property (strong, nonatomic) IBOutlet UIButton *cardioButton; 28 | @property (nonatomic, weak) id delegate; 29 | 30 | - (IBAction)displayTerms:(id)sender; 31 | - (IBAction)scanCardPressed:(id)sender; 32 | @end 33 | -------------------------------------------------------------------------------- /Instacab/ICLocation.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVLocation.h 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 23/10/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "Mantle.h" 10 | #import "CoreLocation/CLLocation.h" 11 | 12 | @interface ICLocation : MTLModel 13 | -(id)initWithGoogleAddress:(NSDictionary *)address; 14 | -(id)initWithReverseGeocoderResults:(NSArray *)results latitude:(double)latitude longitude:(double)longitude; 15 | -(id)initWithCoordinate:(CLLocationCoordinate2D)coordinate; 16 | -(id)initWithFoursquareVenue:(NSDictionary *)venue; 17 | 18 | -(NSString *)formattedAddressWithCity:(BOOL)includeCity country:(BOOL)includeCountry; 19 | 20 | @property (nonatomic, copy, readonly) NSString *name; 21 | @property (nonatomic, copy, readonly) NSString *type; 22 | @property (nonatomic, copy, readonly) NSString *streetAddress; 23 | @property (nonatomic, copy, readonly) NSString *region; 24 | @property (nonatomic, copy, readonly) NSString *city; 25 | @property (nonatomic, copy) NSNumber *latitude; 26 | @property (nonatomic, copy) NSNumber *longitude; 27 | @property (nonatomic, assign, readonly) int course; 28 | 29 | -(CLLocationCoordinate2D)coordinate; 30 | @end 31 | -------------------------------------------------------------------------------- /Instacab/ICLocationService.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVUserLocation.h 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 23/10/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "ICSingleton.h" 12 | 13 | @protocol ICLocationServiceDelegate 14 | - (void)locationWasUpdated:(CLLocationCoordinate2D)location; 15 | - (void)locationWasFixed:(CLLocationCoordinate2D)location; 16 | - (void)didFailToAcquireLocationWithErrorMsg:(NSString *)errorMsg; 17 | @end 18 | 19 | // TODO: Inherit from CLLocationManager 20 | @interface ICLocationService : ICSingleton 21 | @property (nonatomic, readonly) CLLocationCoordinate2D coordinates; 22 | @property (nonatomic, readonly) CLLocation* location; 23 | @property (nonatomic, assign) CLActivityType activityType; 24 | @property (nonatomic, assign) CLLocationAccuracy desiredAccuracy; 25 | @property (nonatomic, weak) id delegate; 26 | @property (nonatomic, readonly) BOOL locationFixed; 27 | @property (nonatomic, readonly) BOOL isEnabled; 28 | @property (nonatomic, readonly) BOOL isAvailable; 29 | @property (nonatomic, readonly) BOOL isRestricted; 30 | 31 | -(void)startUpdatingLocation; 32 | -(void)startUpdatingHeading; 33 | @end 34 | -------------------------------------------------------------------------------- /Instacab/ICLoginViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // IDLoginViewController.h 3 | // InstacabDriver 4 | // 5 | // Created by Pavel Tisunov on 12/11/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "ICClientService.h" 11 | #import "ICLocationService.h" 12 | #import "QuickDialog.h" 13 | #import "UIViewController+TitleLabel.h" 14 | #import "UIViewController+Location.h" 15 | 16 | @class ICLoginViewController; 17 | 18 | @protocol ICLoginViewControllerDelegate 19 | - (void)closeLoginViewController:(ICLoginViewController *)vc signIn:(BOOL)signIn client:(ICClient *)client; 20 | @end 21 | 22 | @interface ICLoginViewController : QuickDialogController 23 | @property (nonatomic, weak) id delegate; 24 | @end 25 | -------------------------------------------------------------------------------- /Instacab/ICNearbyVehicle.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVNearbyVehicles.h 3 | // Instacab 4 | // 5 | // Created by Pavel Tisunov on 27/10/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "Mantle.h" 10 | #import "CoreLocation/CLLocation.h" 11 | 12 | @interface ICNearbyVehicle : MTLModel 13 | @property (nonatomic, assign, readonly) long minEta; 14 | @property (nonatomic, copy, readonly) NSString *etaString; 15 | @property (nonatomic, copy, readonly) NSString *sorryMsg; 16 | @property (nonatomic, copy, readonly) NSDictionary *vehiclePaths; 17 | @property (nonatomic, readonly) BOOL available; 18 | @property (readonly) CLLocationCoordinate2D anyCoordinate; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Instacab/ICNearbyVehicles.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICNearbyVehicles.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 20/05/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICNearbyVehicle.h" 10 | 11 | extern NSString *const kNearbyVehiclesChangedNotification; 12 | 13 | @interface ICNearbyVehicles : NSObject 14 | +(instancetype)shared; 15 | 16 | -(void)update:(NSDictionary *)nearbyVehicles; 17 | -(ICNearbyVehicle *)vehicleByViewId:(NSNumber *)vehicleViewId; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Instacab/ICNearbyVehicles.m: -------------------------------------------------------------------------------- 1 | // 2 | // ICNearbyVehicles.m 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 20/05/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICNearbyVehicles.h" 10 | 11 | NSString * const kNearbyVehiclesChangedNotification = @"nearbyVehiclesChanged"; 12 | 13 | @implementation ICNearbyVehicles { 14 | NSDictionary *_vehicleViews; 15 | } 16 | 17 | + (instancetype)shared { 18 | static ICNearbyVehicles *sharedInstance = nil; 19 | static dispatch_once_t onceToken; 20 | dispatch_once(&onceToken, ^{ 21 | sharedInstance = [[self alloc] init]; 22 | }); 23 | return sharedInstance; 24 | } 25 | 26 | -(void)update:(NSDictionary *)nearbyVehicles { 27 | BOOL haveEqualNearbyVehicles = [self isEqual:nearbyVehicles]; 28 | 29 | _vehicleViews = nearbyVehicles; 30 | 31 | if (!haveEqualNearbyVehicles) { 32 | NSLog(@"Nearby vehicles changed"); 33 | [[NSNotificationCenter defaultCenter] postNotificationName:kNearbyVehiclesChangedNotification object:self]; 34 | } 35 | } 36 | 37 | -(ICNearbyVehicle *)vehicleByViewId:(NSNumber *)vehicleViewId { 38 | return _vehicleViews[[vehicleViewId stringValue]]; 39 | } 40 | 41 | #pragma mark - NSObject 42 | 43 | // TODO: Неправильно, надо сравнить еще и value каждого key 44 | -(BOOL)isEqual:(NSDictionary *)object { 45 | BOOL haveEqualNearbyVehicles = (!_vehicleViews && !object) || [_vehicleViews isEqualToDictionary:object]; 46 | return haveEqualNearbyVehicles; 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /Instacab/ICPaymentProfile.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICPaymentProfile.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 25/02/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "Mantle.h" 10 | 11 | @interface ICPaymentProfile : MTLModel 12 | @property (nonatomic, copy, readonly) NSNumber *ID; 13 | @property (nonatomic, copy, readonly) NSString *cardType; 14 | @property (nonatomic, copy, readonly) NSString *cardNumber; 15 | @property (nonatomic, copy, readonly) NSString *useCase; 16 | @property (readonly) BOOL canCharge; 17 | 18 | @property (readonly) BOOL isPersonal; 19 | @end 20 | -------------------------------------------------------------------------------- /Instacab/ICPaymentProfile.m: -------------------------------------------------------------------------------- 1 | // 2 | // ICPaymentProfile.m 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 25/02/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICPaymentProfile.h" 10 | 11 | @implementation ICPaymentProfile 12 | 13 | + (NSDictionary *)JSONKeyPathsByPropertyKey { 14 | return @{ 15 | @"ID": @"id", 16 | @"cardType": @"cardType", 17 | @"cardNumber": @"cardNumber", 18 | @"canCharge": @"canCharge", 19 | @"useCase": @"useCase" 20 | }; 21 | } 22 | 23 | + (NSValueTransformer *)cardActiveJSONTransformer { 24 | return [NSValueTransformer valueTransformerForName:MTLBooleanValueTransformerName]; 25 | } 26 | 27 | - (BOOL)isPersonal { 28 | return !self.useCase || [self.useCase isEqualToString:@"personal"]; 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Instacab/ICPaymentViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICPaymentViewController.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 13/06/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "QuickDialog.h" 11 | #import "ICLinkCardController.h" 12 | 13 | @interface ICPaymentViewController : QuickDialogController 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Instacab/ICPerson.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVPerson.h 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 25/10/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "Mantle.h" 10 | 11 | @interface ICPerson : MTLModel 12 | @property (nonatomic, copy, readonly) NSNumber *uID; 13 | @property (nonatomic, copy, readonly) NSString *firstName; 14 | @property (nonatomic, copy, readonly) NSString *lastName; 15 | @property (nonatomic, copy, readonly) NSString *mobile; 16 | @property (nonatomic, copy, readonly) NSString *rating; 17 | @property (nonatomic, readonly) NSString *fullName; 18 | 19 | -(void)clear; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Instacab/ICPerson.m: -------------------------------------------------------------------------------- 1 | // 2 | // SVPerson.m 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 25/10/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICPerson.h" 10 | 11 | @interface ICPerson() 12 | @property (nonatomic, copy) NSNumber *uID; 13 | @property (nonatomic, copy) NSString *firstName; 14 | @property (nonatomic, copy) NSString *lastName; 15 | @property (nonatomic, copy) NSString *mobile; 16 | @property (nonatomic, copy) NSString *rating; 17 | @end 18 | 19 | @implementation ICPerson 20 | 21 | + (NSDictionary *)JSONKeyPathsByPropertyKey { 22 | return @{ 23 | @"uID": @"id", 24 | @"firstName": @"firstName", 25 | @"lastName": @"lastName", 26 | @"mobile": @"mobile", 27 | @"rating": @"rating" 28 | }; 29 | } 30 | 31 | + (NSValueTransformer *)ratingJSONTransformer { 32 | return [MTLValueTransformer transformerWithBlock:^(id rating){ 33 | NSString *val = (NSString *)rating; 34 | if ([rating isKindOfClass:[NSNumber class]]) { 35 | val = [rating stringValue]; 36 | } 37 | return val; 38 | }]; 39 | } 40 | 41 | -(void)clear { 42 | self.uID = nil; 43 | self.mobile = nil; 44 | self.firstName = nil; 45 | self.lastName = nil; 46 | self.rating = nil; 47 | } 48 | 49 | -(NSString *)fullName { 50 | return [NSString stringWithFormat:@"%@ %@", self.firstName, self.lastName]; 51 | } 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /Instacab/ICPickupCalloutView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICPickupCalloutView.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 18/06/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol ICPickupCalloutViewDelegate 12 | -(void)didSetPickupLocation; 13 | @end 14 | 15 | @interface ICPickupCalloutView : UIView 16 | @property (nonatomic, assign) long eta; 17 | @property (nonatomic, copy) NSString *title; 18 | -(void)hide; 19 | -(void)show; 20 | -(void)clearEta; 21 | 22 | @property (nonatomic, weak) id delegate; 23 | @end 24 | -------------------------------------------------------------------------------- /Instacab/ICPing.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVResponseMessage.h 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 25/10/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "Mantle.h" 10 | #import "ICClient.h" 11 | #import "ICTrip.h" 12 | #import "ICNearbyVehicle.h" 13 | #import "ICApiResponse.h" 14 | #import "ICCity.h" 15 | 16 | typedef enum : NSUInteger { 17 | SVMessageTypeOK, 18 | SVMessageTypeError, 19 | SVMessageTypePickupCanceled, 20 | SVMessageTypeTripCanceled, 21 | } ICMessageType; 22 | 23 | @interface ICPing : MTLModel 24 | @property (nonatomic, assign, readonly) ICMessageType messageType; 25 | @property (nonatomic, copy, readonly) NSString *description; 26 | @property (nonatomic, copy, readonly) NSString *reason; 27 | @property (nonatomic, strong, readonly) ICCity *city; 28 | @property (nonatomic, strong, readonly) ICClient *client; 29 | @property (nonatomic, strong, readonly) ICTrip *trip; 30 | @property (nonatomic, copy, readonly) NSDictionary *nearbyVehicles; 31 | @property (nonatomic, strong, readonly) ICApiResponse *apiResponse; 32 | @property (nonatomic, readonly) BOOL isOK; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Instacab/ICPromoViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICPromoViewController.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 22/04/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "UIViewController+TitleLabel.h" 11 | 12 | @interface ICTextField : UITextField 13 | 14 | @end 15 | 16 | @interface ICPromoViewController : UIViewController 17 | @property (strong, nonatomic) IBOutlet ICTextField *promoCodeTextField; 18 | @property (strong, nonatomic) IBOutlet UIView *borderView; 19 | @property (strong, nonatomic) IBOutlet UILabel *messageLabel; 20 | - (IBAction)promoChanged:(id)sender; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Instacab/ICReceiptViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TripEndViewController.h 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 05/11/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "EDStarRating.h" 11 | #import "UIViewController+TitleLabel.h" 12 | 13 | @interface ICReceiptViewController : UIViewController 14 | @property (strong, nonatomic) IBOutlet UILabel *timestampLabel; 15 | @property (strong, nonatomic) IBOutlet UILabel *fareLabel; 16 | @property (strong, nonatomic) IBOutlet EDStarRating *starRating; 17 | @property (strong, nonatomic) IBOutlet UIView *ratingSection; 18 | @property (strong, nonatomic) IBOutlet UIView *fareSection; 19 | @property (strong, nonatomic) IBOutlet UIActivityIndicatorView *billingActivityView; 20 | @property (strong, nonatomic) IBOutlet UILabel *billingStatusLabel; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Instacab/ICSearchViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICSearchViewController.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 20/04/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "UIViewController+TitleLabel.h" 10 | #import "ICLocation.h" 11 | 12 | @protocol ICSearchViewDelegate 13 | -(void)didSelectManualLocation:(ICLocation *)location; 14 | @end 15 | 16 | @interface ICSearchViewController : UIViewController { 17 | UITableView *searchTableView; 18 | UISearchBar *searchBar; 19 | UISearchDisplayController *searchDisplayController; 20 | 21 | NSArray *foursquareVenues; 22 | NSArray *googleAddresses; 23 | } 24 | 25 | -(id)initWithLocation:(CLLocationCoordinate2D)coordinates; 26 | -(ICLocation *)locationAtIndexPath:(NSIndexPath *)indexPath; 27 | - (void)dismissSearchBar; 28 | 29 | @property (nonatomic, assign) BOOL includeNearbyResults; 30 | @property (nonatomic, weak) id delegate; 31 | @end 32 | -------------------------------------------------------------------------------- /Instacab/ICSignUpFlowDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICCancelDialogDelegate.h 3 | // Instacab 4 | // 5 | // Created by Pavel Tisunov on 16/01/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "ICSignUpInfo.h" 11 | 12 | @protocol ICSignUpFlowDelegate 13 | -(void)cancelSignUp: (UIViewController *)controller signUpInfo:(ICSignUpInfo *)info; 14 | -(void)signUpCompleted; 15 | @end 16 | -------------------------------------------------------------------------------- /Instacab/ICSignUpInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICSignUpInfo.h 3 | // Instacab 4 | // 5 | // Created by Pavel Tisunov on 15/01/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "Mantle.h" 10 | 11 | @interface NSString (Helper) 12 | - (int)presentAsInt; 13 | @end 14 | 15 | @interface ICSignUpInfo : MTLModel 16 | // Account & Profile data 17 | @property (nonatomic, copy) NSString *firstName; 18 | @property (nonatomic, copy) NSString *lastName; 19 | @property (nonatomic, copy) NSString *email; 20 | @property (nonatomic, copy) NSString *password; 21 | @property (nonatomic, copy) NSString *mobile; 22 | 23 | // Card data 24 | @property (nonatomic, copy) NSString *cardNumber; 25 | @property (nonatomic, copy) NSString *cardExpirationMonth; 26 | @property (nonatomic, copy) NSString *cardExpirationYear; 27 | @property (nonatomic, copy) NSString *cardCode; 28 | 29 | @property (nonatomic, copy) NSString *promoCode; 30 | 31 | @property (nonatomic, readonly) BOOL accountDataPresent; 32 | @end -------------------------------------------------------------------------------- /Instacab/ICSignUpInfo.m: -------------------------------------------------------------------------------- 1 | // 2 | // ICSignUpInfo.m 3 | // Instacab 4 | // 5 | // Created by Pavel Tisunov on 15/01/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICSignUpInfo.h" 10 | 11 | @implementation NSString (Helper) 12 | 13 | - (int)presentAsInt { 14 | return self && self.length; 15 | } 16 | 17 | @end 18 | 19 | @implementation ICSignUpInfo 20 | 21 | + (instancetype)sharedInfo { 22 | static ICSignUpInfo *instance = nil; 23 | static dispatch_once_t onceToken; 24 | dispatch_once(&onceToken, ^{ 25 | instance = [[self alloc] init]; 26 | }); 27 | return instance; 28 | } 29 | 30 | + (NSDictionary *)JSONKeyPathsByPropertyKey { 31 | return @{ 32 | @"firstName": @"first_name", 33 | @"lastName": @"last_name", 34 | @"email": @"email", 35 | @"mobile": @"mobile", 36 | @"password": @"password", 37 | @"promoCode": @"promo_code", 38 | @"cardNumber": [NSNull null], 39 | @"cardExpirationMonth": [NSNull null], 40 | @"cardExpirationYear": [NSNull null], 41 | @"cardCode": [NSNull null], 42 | }; 43 | } 44 | 45 | -(BOOL)accountDataPresent { 46 | return [_password presentAsInt] || [_email presentAsInt] || [_mobile presentAsInt]; 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /Instacab/ICSingleton.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVSingleton.h 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 25/10/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ICSingleton : NSObject 12 | 13 | + (instancetype)sharedInstance; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Instacab/ICSingleton.m: -------------------------------------------------------------------------------- 1 | // 2 | // SVSingleton.m 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 25/10/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICSingleton.h" 10 | 11 | @implementation ICSingleton 12 | 13 | static NSMutableDictionary* instances; 14 | 15 | + (instancetype)sharedInstance { 16 | static dispatch_once_t onceToken; 17 | dispatch_once(&onceToken, ^{ 18 | instances = [[NSMutableDictionary alloc] init]; 19 | }); 20 | 21 | id defaultInstance = [instances objectForKey: NSStringFromClass([self class])]; 22 | if (!defaultInstance) { 23 | defaultInstance = [[[self class] alloc] init]; 24 | [instances setObject:defaultInstance forKey: NSStringFromClass([self class])]; 25 | } 26 | 27 | return defaultInstance; 28 | } 29 | 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Instacab/ICTrip.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVTrip.h 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 25/10/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "Mantle.h" 10 | #import "ICDriver.h" 11 | #import "ICVehicle.h" 12 | #import "ICLocation.h" 13 | 14 | extern NSString *const kTripChangedNotification; 15 | 16 | @interface ICTrip : MTLModel 17 | @property (nonatomic, copy, readonly) NSNumber *tripId; 18 | @property (nonatomic, strong, readonly) ICDriver *driver; 19 | @property (nonatomic, strong, readonly) ICVehicle *vehicle; 20 | @property (nonatomic, copy, readonly) NSString *fareBilledToCard; 21 | @property (nonatomic, copy, readonly) NSString *fare; 22 | @property (nonatomic, copy, readonly) NSNumber *paidByCard; 23 | @property (nonatomic, strong) ICLocation *pickupLocation; 24 | @property (nonatomic, strong, readonly) ICLocation *dropoffLocation; 25 | @property (nonatomic, copy, readonly) NSNumber *dropoffAt; 26 | @property (nonatomic, copy, readonly) NSNumber *eta; 27 | @property (nonatomic, copy, readonly) NSNumber *vehicleViewId; 28 | 29 | @property (nonatomic, readonly) BOOL billingComplete; 30 | 31 | -(void)update: (ICTrip *)trip; 32 | -(void)clear; 33 | + (instancetype)sharedInstance; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Instacab/ICUpdateMobileViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICUpdateMobileViewController.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 11/04/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ICUpdateMobileViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Instacab/ICUpdateMobileViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ICUpdateMobileViewController.m 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 11/04/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICUpdateMobileViewController.h" 10 | 11 | @interface ICUpdateMobileViewController () 12 | 13 | @end 14 | 15 | @implementation ICUpdateMobileViewController 16 | 17 | - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 18 | { 19 | self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 20 | if (self) { 21 | // Custom initialization 22 | } 23 | return self; 24 | } 25 | 26 | - (void)viewDidLoad 27 | { 28 | [super viewDidLoad]; 29 | // Do any additional setup after loading the view from its nib. 30 | } 31 | 32 | - (void)didReceiveMemoryWarning 33 | { 34 | [super didReceiveMemoryWarning]; 35 | // Dispose of any resources that can be recreated. 36 | } 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Instacab/ICUpdateMobileViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Instacab/ICVehicle.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVVehicle.h 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 30/10/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "Mantle.h" 10 | #import "ICVehiclePathPoint.h" 11 | 12 | @interface ICVehicle : MTLModel 13 | @property (nonatomic, copy, readonly) NSNumber *uniqueId; 14 | @property (nonatomic, copy, readonly) NSString *exteriorColor; 15 | @property (nonatomic, copy, readonly) NSString *interiorColor; 16 | @property (nonatomic, copy, readonly) NSString *licensePlate; 17 | @property (nonatomic, copy, readonly) NSString *make; 18 | @property (nonatomic, copy, readonly) NSString *model; 19 | @property (nonatomic, copy, readonly) NSNumber *capacity; 20 | @property (nonatomic, copy, readonly) NSNumber *year; 21 | @property (nonatomic, copy, readonly) NSArray *vehiclePath; 22 | @property (nonatomic, assign, readonly) long vehicleViewId; 23 | 24 | -(NSString *)makeAndModel; 25 | @end 26 | -------------------------------------------------------------------------------- /Instacab/ICVehicle.m: -------------------------------------------------------------------------------- 1 | // 2 | // SVVehicle.m 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 30/10/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICVehicle.h" 10 | 11 | @implementation ICVehicle 12 | 13 | + (NSDictionary *)JSONKeyPathsByPropertyKey { 14 | return @{ 15 | @"uniqueId": @"id", 16 | @"exteriorColor": @"exteriorColor", 17 | @"interiorColor": @"interiorColor", 18 | @"licensePlate": @"licensePlate", 19 | @"make": @"make", 20 | @"model": @"model", 21 | @"capacity": @"capacity", 22 | @"year": @"year", 23 | @"vehiclePath": @"vehiclePath", 24 | @"vehicleViewId": @"vehicleViewId", 25 | }; 26 | } 27 | 28 | + (NSValueTransformer *)vehiclePathJSONTransformer { 29 | return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:ICVehiclePathPoint.class]; 30 | } 31 | 32 | -(NSString *)makeAndModel { 33 | return [NSString stringWithFormat:@"%@ %@", self.make, self.model]; 34 | } 35 | 36 | -(BOOL)isEqual:(ICVehicle *)vehicle { 37 | if (self == vehicle) { 38 | return YES; 39 | } 40 | 41 | if (![vehicle isKindOfClass:[ICVehicle class]]) { 42 | return NO; 43 | } 44 | 45 | return [vehicle.uniqueId isEqualToNumber:self.uniqueId]; 46 | } 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Instacab/ICVehiclePathPoint.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVVehiclePoint.h 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 27/10/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "Mantle.h" 10 | #import "CoreLocation/CLLocation.h" 11 | 12 | @interface ICVehiclePathPoint : MTLModel 13 | @property (nonatomic, assign, readonly) long epoch; 14 | @property (nonatomic, assign, readonly) double latitude; 15 | @property (nonatomic, assign, readonly) double longitude; 16 | @property (nonatomic, assign, readonly) int course; 17 | 18 | -(CLLocationCoordinate2D)coordinate; 19 | @end 20 | -------------------------------------------------------------------------------- /Instacab/ICVehiclePathPoint.m: -------------------------------------------------------------------------------- 1 | // 2 | // SVVehiclePoint.m 3 | // Hopper 4 | // 5 | // Created by Pavel Tisunov on 27/10/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICVehiclePathPoint.h" 10 | 11 | 12 | @implementation ICVehiclePathPoint 13 | 14 | + (NSDictionary *)JSONKeyPathsByPropertyKey { 15 | return @{ 16 | @"epoch": @"epoch", 17 | @"latitude": @"latitude", 18 | @"longitude": @"longitude", 19 | @"course": @"course" 20 | }; 21 | } 22 | 23 | -(CLLocationCoordinate2D)coordinate { 24 | return CLLocationCoordinate2DMake(self.latitude, self.longitude); 25 | } 26 | 27 | #pragma mark - NSObject 28 | 29 | - (BOOL)isEqual:(id)object { 30 | if (self == object) { 31 | return YES; 32 | } 33 | 34 | if (![object isKindOfClass:[ICVehiclePathPoint class]]) { 35 | return NO; 36 | } 37 | 38 | ICVehiclePathPoint *other = (ICVehiclePathPoint *)object; 39 | 40 | return self.epoch == other.epoch && self.latitude == other.latitude && 41 | self.longitude == other.longitude && self.course == other.course; 42 | } 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /Instacab/ICVehicleSelectionSliderButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICVehicleSelectionSliderButton.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 24/05/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ICVehicleSelectionSliderButton : UIButton 12 | -(void)updateIcon:(UIImage *)image available:(BOOL)available; 13 | @end 14 | -------------------------------------------------------------------------------- /Instacab/ICVehicleView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICVehicleView.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 19/05/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "Mantle.h" 10 | #import "UIKit/UIKit.h" 11 | #import "ICImage.h" 12 | 13 | @interface ICVehicleView : MTLModel 14 | @property (nonatomic, copy, readonly) NSNumber *uniqueId; 15 | @property (nonatomic, copy, readonly) NSString *name; 16 | @property (nonatomic, copy, readonly) NSString *requestPickupButtonString; 17 | @property (nonatomic, copy, readonly) NSString *setPickupLocationString; 18 | @property (nonatomic, copy, readonly) NSString *pickupEtaString; 19 | @property (nonatomic, copy, readonly) NSString *noneAvailableString; 20 | @property (nonatomic, copy, readonly) NSArray *mapImages; 21 | @property (nonatomic, copy, readonly) NSArray *monoImages; 22 | @property (nonatomic, assign, readonly) BOOL requestAfterMobileConfirm; 23 | @property (nonatomic, assign, readonly) BOOL allowCashPayment; 24 | @property (nonatomic, assign, readonly) BOOL allowFareEstimate; 25 | @property (nonatomic, copy, readonly) NSString *allowCashError; 26 | @property (nonatomic, copy, readonly) NSString *addCreditCardButtonTitle; 27 | 28 | @property (nonatomic, readonly) NSString *marketingRequestPickupButtonString; 29 | @property (nonatomic, readonly) BOOL available; 30 | 31 | - (void)loadMonoImage:(void (^)(UIImage *image))successBlock; 32 | - (void)loadMapImage:(void (^)(UIImage *image))successBlock; 33 | @end 34 | -------------------------------------------------------------------------------- /Instacab/ICVerifyMobileViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICVerifyMobileViewController.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 05/04/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | @protocol ICVerifyMobileDelegate 10 | -(void)didConfirmMobile; 11 | @end 12 | 13 | @interface ICVerifyMobileViewController : UIViewController 14 | @property (strong, nonatomic) IBOutlet UILabel *mobileNumberLabel; 15 | @property (strong, nonatomic) IBOutlet UITextField *tokenTextField; 16 | @property (strong, nonatomic) IBOutlet UIButton *requestConfirmationButton; 17 | - (IBAction)resendConfirmation:(id)sender; 18 | 19 | @property (nonatomic, weak) id delegate; 20 | @end 21 | -------------------------------------------------------------------------------- /Instacab/Images.xcassets/AppIcon.appiconset/AppIcon29x29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/AppIcon.appiconset/AppIcon29x29.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "29x29", 5 | "idiom" : "iphone", 6 | "filename" : "AppIcon29x29.png", 7 | "scale" : "1x" 8 | }, 9 | { 10 | "size" : "29x29", 11 | "idiom" : "iphone", 12 | "filename" : "AppIcon29x29@2x.png", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "size" : "40x40", 17 | "idiom" : "iphone", 18 | "filename" : "AppIcon40x40@2x.png", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "size" : "60x60", 23 | "idiom" : "iphone", 24 | "filename" : "AppIcon60x60@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "idiom" : "ipad", 29 | "size" : "29x29", 30 | "scale" : "1x" 31 | }, 32 | { 33 | "idiom" : "ipad", 34 | "size" : "29x29", 35 | "scale" : "2x" 36 | }, 37 | { 38 | "idiom" : "ipad", 39 | "size" : "40x40", 40 | "scale" : "1x" 41 | }, 42 | { 43 | "idiom" : "ipad", 44 | "size" : "40x40", 45 | "scale" : "2x" 46 | } 47 | ], 48 | "info" : { 49 | "version" : 1, 50 | "author" : "xcode" 51 | } 52 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "filename" : "LaunchImage@2x.png", 9 | "scale" : "2x" 10 | }, 11 | { 12 | "extent" : "full-screen", 13 | "idiom" : "iphone", 14 | "subtype" : "retina4", 15 | "filename" : "LaunchImage@R4.png", 16 | "minimum-system-version" : "7.0", 17 | "orientation" : "portrait", 18 | "scale" : "2x" 19 | } 20 | ], 21 | "info" : { 22 | "version" : 1, 23 | "author" : "xcode" 24 | } 25 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/LaunchImage.launchimage/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/LaunchImage.launchimage/LaunchImage@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/LaunchImage.launchimage/LaunchImage@R4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/LaunchImage.launchimage/LaunchImage@R4.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/account_profile_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "account_profile_icon.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "account_profile_icon@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/account_profile_icon.imageset/account_profile_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/account_profile_icon.imageset/account_profile_icon.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/account_profile_icon.imageset/account_profile_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/account_profile_icon.imageset/account_profile_icon@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/call_driver2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "phone.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "phone-1.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/call_driver2.imageset/phone-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/call_driver2.imageset/phone-1.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/call_driver2.imageset/phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/call_driver2.imageset/phone.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/card_plus.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "card_plus.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "card_plus@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/card_plus.imageset/card_plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/card_plus.imageset/card_plus.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/card_plus.imageset/card_plus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/card_plus.imageset/card_plus@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/cardio.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "cardio.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "cardio@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/cardio.imageset/cardio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/cardio.imageset/cardio.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/cardio.imageset/cardio@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/cardio.imageset/cardio@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/center_icon_up.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "center_icon_up.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "center_icon_up@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/center_icon_up.imageset/center_icon_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/center_icon_up.imageset/center_icon_up.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/center_icon_up.imageset/center_icon_up@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/center_icon_up.imageset/center_icon_up@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/circle_clock_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "circle_clock_normal.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "circle_clock_normal@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/circle_clock_normal.imageset/circle_clock_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/circle_clock_normal.imageset/circle_clock_normal.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/circle_clock_normal.imageset/circle_clock_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/circle_clock_normal.imageset/circle_clock_normal@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/close_black.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "close_black.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "close_black@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/close_black.imageset/close_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/close_black.imageset/close_black.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/close_black.imageset/close_black@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/close_black.imageset/close_black@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/cloth_pattern.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "cloth_pattern.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "cloth_pattern@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/cloth_pattern.imageset/cloth_pattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/cloth_pattern.imageset/cloth_pattern.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/cloth_pattern.imageset/cloth_pattern@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/cloth_pattern.imageset/cloth_pattern@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/confirmation_mask.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "confirmation_mask.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "confirmation_mask@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/confirmation_mask.imageset/confirmation_mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/confirmation_mask.imageset/confirmation_mask.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/confirmation_mask.imageset/confirmation_mask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/confirmation_mask.imageset/confirmation_mask@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/driver_placeholder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "driver_placeholder.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "driver_placeholder@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/driver_placeholder.imageset/driver_placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/driver_placeholder.imageset/driver_placeholder.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/driver_placeholder.imageset/driver_placeholder@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/driver_placeholder.imageset/driver_placeholder@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/fail_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "fail_icon.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "fail_icon@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/fail_icon.imageset/fail_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/fail_icon.imageset/fail_icon.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/fail_icon.imageset/fail_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/fail_icon.imageset/fail_icon@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/fare_estimate_dropoff_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "fare_estimate_dropoff_icon.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "fare_estimate_dropoff_icon@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/fare_estimate_dropoff_icon.imageset/fare_estimate_dropoff_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/fare_estimate_dropoff_icon.imageset/fare_estimate_dropoff_icon.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/fare_estimate_dropoff_icon.imageset/fare_estimate_dropoff_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/fare_estimate_dropoff_icon.imageset/fare_estimate_dropoff_icon@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/fare_estimate_pickup_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "fare_estimate_pickup_icon.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "fare_estimate_pickup_icon@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/fare_estimate_pickup_icon.imageset/fare_estimate_pickup_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/fare_estimate_pickup_icon.imageset/fare_estimate_pickup_icon.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/fare_estimate_pickup_icon.imageset/fare_estimate_pickup_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/fare_estimate_pickup_icon.imageset/fare_estimate_pickup_icon@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/farequote_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "icon_farequote.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "icon_farequote@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/farequote_icon.imageset/icon_farequote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/farequote_icon.imageset/icon_farequote.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/farequote_icon.imageset/icon_farequote@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/farequote_icon.imageset/icon_farequote@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/farequote_icon_white.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "icon_farequote_white.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "icon_farequote_white@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/farequote_icon_white.imageset/icon_farequote_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/farequote_icon_white.imageset/icon_farequote_white.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/farequote_icon_white.imageset/icon_farequote_white@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/farequote_icon_white.imageset/icon_farequote_white@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/home_icon_white.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "home_icon_white.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "home_icon_white@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/home_icon_white.imageset/home_icon_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/home_icon_white.imageset/home_icon_white.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/home_icon_white.imageset/home_icon_white@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/home_icon_white.imageset/home_icon_white@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/magic_square_grid.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "magic_square_grid.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "magic_square_grid@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/magic_square_grid.imageset/magic_square_grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/magic_square_grid.imageset/magic_square_grid.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/magic_square_grid.imageset/magic_square_grid@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/magic_square_grid.imageset/magic_square_grid@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/map_bubble_pin.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "map_bubble_pin.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "map_bubble_pin@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/map_bubble_pin.imageset/map_bubble_pin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/map_bubble_pin.imageset/map_bubble_pin.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/map_bubble_pin.imageset/map_bubble_pin@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/map_bubble_pin.imageset/map_bubble_pin@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/network-alert.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "alert.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "alert@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/network-alert.imageset/alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/network-alert.imageset/alert.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/network-alert.imageset/alert@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/network-alert.imageset/alert@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/pin_green.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "pin_green.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "pin_green@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/pin_green.imageset/pin_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/pin_green.imageset/pin_green.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/pin_green.imageset/pin_green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/pin_green.imageset/pin_green@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/pin_red.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "pin_red.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "pin_red@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/pin_red.imageset/pin_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/pin_red.imageset/pin_red.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/pin_red.imageset/pin_red@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/pin_red.imageset/pin_red@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/powered_by_4sq.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "powered_by_4sq.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "powered_by_4sq@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/powered_by_4sq.imageset/powered_by_4sq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/powered_by_4sq.imageset/powered_by_4sq.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/powered_by_4sq.imageset/powered_by_4sq@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/powered_by_4sq.imageset/powered_by_4sq@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/promo_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "icon_promo.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "icon_promo@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/promo_icon.imageset/icon_promo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/promo_icon.imageset/icon_promo.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/promo_icon.imageset/icon_promo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/promo_icon.imageset/icon_promo@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/promo_icon_white.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "icon_promo_white.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "icon_promo_white@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/promo_icon_white.imageset/icon_promo_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/promo_icon_white.imageset/icon_promo_white.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/promo_icon_white.imageset/icon_promo_white@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/promo_icon_white.imageset/icon_promo_white@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/rating_star_empty.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "rating_star_empty.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "rating_star_empty@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/rating_star_empty.imageset/rating_star_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/rating_star_empty.imageset/rating_star_empty.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/rating_star_empty.imageset/rating_star_empty@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/rating_star_empty.imageset/rating_star_empty@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/rating_star_full.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "rating_star_full.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "rating_star_full@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/rating_star_full.imageset/rating_star_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/rating_star_full.imageset/rating_star_full.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/rating_star_full.imageset/rating_star_full@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/rating_star_full.imageset/rating_star_full@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/request_mask.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "request_mask.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "request_mask@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/request_mask.imageset/request_mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/request_mask.imageset/request_mask.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/request_mask.imageset/request_mask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/request_mask.imageset/request_mask@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/search_icon_up.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "search_icon_up.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "search_icon_up@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/search_icon_up.imageset/search_icon_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/search_icon_up.imageset/search_icon_up.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/search_icon_up.imageset/search_icon_up@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/search_icon_up.imageset/search_icon_up@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/search_no_results_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "search_no_results_icon.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "search_no_results_icon@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/search_no_results_icon.imageset/search_no_results_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/search_no_results_icon.imageset/search_no_results_icon.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/search_no_results_icon.imageset/search_no_results_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/search_no_results_icon.imageset/search_no_results_icon@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/set_pickup_location_arrow.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "set_pickup_location_arrow.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "set_pickup_location_arrow@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/set_pickup_location_arrow.imageset/set_pickup_location_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/set_pickup_location_arrow.imageset/set_pickup_location_arrow.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/set_pickup_location_arrow.imageset/set_pickup_location_arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/set_pickup_location_arrow.imageset/set_pickup_location_arrow@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/set_pickup_location_bubble_left.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "set_pickup_location_bubble_left.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "set_pickup_location_bubble_left@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/set_pickup_location_bubble_left.imageset/set_pickup_location_bubble_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/set_pickup_location_bubble_left.imageset/set_pickup_location_bubble_left.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/set_pickup_location_bubble_left.imageset/set_pickup_location_bubble_left@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/set_pickup_location_bubble_left.imageset/set_pickup_location_bubble_left@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/set_pickup_location_bubble_right.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "set_pickup_location_bubble_right.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "set_pickup_location_bubble_right@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/set_pickup_location_bubble_right.imageset/set_pickup_location_bubble_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/set_pickup_location_bubble_right.imageset/set_pickup_location_bubble_right.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/set_pickup_location_bubble_right.imageset/set_pickup_location_bubble_right@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/set_pickup_location_bubble_right.imageset/set_pickup_location_bubble_right@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/share_icon_white.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "share_icon_white.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "share_icon_white@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/share_icon_white.imageset/share_icon_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/share_icon_white.imageset/share_icon_white.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/share_icon_white.imageset/share_icon_white@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/share_icon_white.imageset/share_icon_white@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/sidebar_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "sidebar_icon@2x.png" 11 | } 12 | ], 13 | "info" : { 14 | "version" : 1, 15 | "author" : "xcode" 16 | } 17 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/sidebar_icon.imageset/sidebar_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/sidebar_icon.imageset/sidebar_icon@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/star.imageset/28-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/star.imageset/28-star.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/star.imageset/28-star@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/star.imageset/28-star@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/star.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "28-star.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "28-star@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/success_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "success_icon.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "success_icon@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/success_icon.imageset/success_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/success_icon.imageset/success_icon.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/success_icon.imageset/success_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/success_icon.imageset/success_icon@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/vehicle_picker_slider_background.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "vehicle_picker_slider_background.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "vehicle_picker_slider_background@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/vehicle_picker_slider_background.imageset/vehicle_picker_slider_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/vehicle_picker_slider_background.imageset/vehicle_picker_slider_background.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/vehicle_picker_slider_background.imageset/vehicle_picker_slider_background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/vehicle_picker_slider_background.imageset/vehicle_picker_slider_background@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/vehicle_picker_slider_down.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "vehicle_picker_slider_down.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "vehicle_picker_slider_down@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/vehicle_picker_slider_down.imageset/vehicle_picker_slider_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/vehicle_picker_slider_down.imageset/vehicle_picker_slider_down.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/vehicle_picker_slider_down.imageset/vehicle_picker_slider_down@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/vehicle_picker_slider_down.imageset/vehicle_picker_slider_down@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/vehicle_picker_slider_point.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "vehicle_picker_slider_point.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "vehicle_picker_slider_point@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/vehicle_picker_slider_point.imageset/vehicle_picker_slider_point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/vehicle_picker_slider_point.imageset/vehicle_picker_slider_point.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/vehicle_picker_slider_point.imageset/vehicle_picker_slider_point@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/vehicle_picker_slider_point.imageset/vehicle_picker_slider_point@2x.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/vehicle_picker_slider_up.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "vehicle_picker_slider_white_schema_up.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "vehicle_picker_slider_white_schema_up@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Instacab/Images.xcassets/vehicle_picker_slider_up.imageset/vehicle_picker_slider_white_schema_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/vehicle_picker_slider_up.imageset/vehicle_picker_slider_white_schema_up.png -------------------------------------------------------------------------------- /Instacab/Images.xcassets/vehicle_picker_slider_up.imageset/vehicle_picker_slider_white_schema_up@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/Instacab/Images.xcassets/vehicle_picker_slider_up.imageset/vehicle_picker_slider_white_schema_up@2x.png -------------------------------------------------------------------------------- /Instacab/InstaCab-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ru 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | com.brightstripe.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.2.4 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.2.4 25 | LSRequiresIPhoneOS 26 | 27 | UIRequiredDeviceCapabilities 28 | 29 | wifi 30 | gps 31 | location-services 32 | 33 | UIStatusBarHidden 34 | 35 | UIStatusBarStyle 36 | UIStatusBarStyleDefault 37 | UIStatusBarTintParameters 38 | 39 | UINavigationBar 40 | 41 | Style 42 | UIBarStyleDefault 43 | Translucent 44 | 45 | 46 | 47 | UISupportedInterfaceOrientations 48 | 49 | UIInterfaceOrientationPortrait 50 | 51 | UIViewControllerBasedStatusBarAppearance 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /Instacab/InstaCab-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /Instacab/MBProgressHud+Global.h: -------------------------------------------------------------------------------- 1 | // 2 | // MBProgressHud+Global.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 06/04/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MBProgressHUD.h" 11 | 12 | @interface MBProgressHUD (Global) 13 | 14 | + (MBProgressHUD *)showGlobalProgressHUDWithTitle:(NSString *)title; 15 | + (void)hideGlobalHUD; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Instacab/MBProgressHud+Global.m: -------------------------------------------------------------------------------- 1 | // 2 | // MBProgressHUD+Global.m 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 06/04/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "MBProgressHUD+Global.h" 10 | 11 | @implementation MBProgressHUD (Global) 12 | 13 | + (MBProgressHUD *)showGlobalProgressHUDWithTitle:(NSString *)title { 14 | UIWindow *window = [[[UIApplication sharedApplication] windows] lastObject]; 15 | 16 | MBProgressHUD *hud = [[MBProgressHUD alloc] initWithView:window]; 17 | hud.animationType = MBProgressHUDAnimationFade; 18 | hud.removeFromSuperViewOnHide = YES; 19 | hud.labelText = title; 20 | 21 | [window addSubview:hud]; 22 | hud.color = [UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1.0]; 23 | 24 | [hud show:YES]; 25 | 26 | return hud; 27 | } 28 | 29 | + (void)hideGlobalHUD { 30 | UIWindow *window = [[[UIApplication sharedApplication] windows] lastObject]; 31 | [MBProgressHUD hideHUDForView:window animated:YES]; 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Instacab/MBProgressHud+UIViewController.h: -------------------------------------------------------------------------------- 1 | /* 2 | * RNBoilerplate 3 | * 4 | * Created by Ryan Nystrom on 10/2/12. 5 | * Copyright (c) 2012 Ryan Nystrom. All rights reserved. 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | * copies of the Software, and to permit persons to whom the Software is 12 | * furnished to do so, subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in 15 | * all copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | * SOFTWARE. 24 | */ 25 | 26 | #import 27 | #import "MBProgressHUD.h" 28 | 29 | @interface UIView (UIViewWithMBProgressHUD) 30 | 31 | - (void)hideHUD; 32 | 33 | @end 34 | 35 | @interface UIViewController (UIViewControllerWithMBProgressHUD) 36 | 37 | - (void)showHUD; 38 | - (void)showHUDWithText:(NSString*)text; 39 | - (void)hideHUD; 40 | - (BOOL)isHUDHidden; 41 | - (void)show:(MBProgressHUD*)hud; 42 | 43 | @end -------------------------------------------------------------------------------- /Instacab/Models/ICSession.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICSession.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 18/06/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICSingleton.h" 10 | 11 | @interface ICSession : ICSingleton 12 | @property (nonatomic, assign) int currentVehicleViewId; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Instacab/Models/ICSession.m: -------------------------------------------------------------------------------- 1 | // 2 | // ICSession.m 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 18/06/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICSession.h" 10 | 11 | @implementation ICSession 12 | 13 | @synthesize currentVehicleViewId = _currentVehicleViewId; 14 | 15 | -(instancetype)init { 16 | self = [super init]; 17 | if (self) { 18 | _currentVehicleViewId = -1; 19 | if ([[NSUserDefaults standardUserDefaults] objectForKey:@"vehicleViewId"] != nil) 20 | _currentVehicleViewId = (int)[[NSUserDefaults standardUserDefaults] integerForKey:@"vehicleViewId"]; 21 | } 22 | return self; 23 | } 24 | 25 | -(void)setCurrentVehicleViewId:(int)currentVehicleViewId { 26 | if (_currentVehicleViewId == currentVehicleViewId) return; 27 | 28 | _currentVehicleViewId = currentVehicleViewId; 29 | [[NSUserDefaults standardUserDefaults] setInteger:currentVehicleViewId forKey:@"vehicleViewId"]; 30 | } 31 | @end 32 | -------------------------------------------------------------------------------- /Instacab/Payture/Payture.h: -------------------------------------------------------------------------------- 1 | // 2 | // Payture.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 13/06/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void (^CardRegisterSuccessBlock)(); 12 | typedef void (^CardRegisterFailureBlock)(NSString *error, NSString *description, NSInteger statusCode); 13 | 14 | @interface Payture : NSObject 15 | 16 | - (void)createCardNumber:(NSString *)cardNumber 17 | cardHolder:(NSString *)cardHolder 18 | expirationMonth:(NSNumber *)month 19 | expirationYear:(NSNumber *)year 20 | secureCode:(NSString *)cvv 21 | addCardUrl:(NSString *)addCardUrl 22 | submitCardUrl:(NSString *)submitCardUrl 23 | cardio:(BOOL)cardio 24 | success:(CardRegisterSuccessBlock)success 25 | failure:(CardRegisterFailureBlock)failure; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Instacab/QCustomAppearance.h: -------------------------------------------------------------------------------- 1 | // 2 | // QCustomAppearance.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 13/06/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "QuickDialog.h" 10 | 11 | @interface QCustomAppearance : QFlatAppearance 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Instacab/QCustomAppearance.m: -------------------------------------------------------------------------------- 1 | // 2 | // QCustomAppearance.m 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 13/06/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "QCustomAppearance.h" 10 | #import "AKNumericFormatter.h" 11 | #import "UITextField+AKNumericFormatter.h" 12 | #import "Colours.h" 13 | 14 | @implementation QCustomAppearance 15 | 16 | - (void)cell:(UITableViewCell *)cell willAppearForElement:(QElement *)element atIndexPath:(NSIndexPath *)path 17 | { 18 | if([element.key isEqualToString:@"mobile"]) 19 | { 20 | QEntryTableViewCell *entryCell = (QEntryTableViewCell *)cell; 21 | entryCell.textField.numericFormatter = [AKNumericFormatter formatterWithMask:@"+7 (***) ***-**-**" 22 | placeholderCharacter:'*' 23 | mode:AKNumericFormatterMixed]; 24 | } 25 | else if ([element isKindOfClass:[QButtonElement class]]){ 26 | cell.textLabel.textAlignment = NSTextAlignmentCenter; 27 | cell.textLabel.textColor = [UIColor blueberryColor]; 28 | cell.textLabel.highlightedTextColor = [UIColor whiteColor]; 29 | } 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Instacab/QuickDialogController+Additions.h: -------------------------------------------------------------------------------- 1 | // 2 | // QuickDialogController+Additions.h 3 | // Instacab 4 | // 5 | // Created by Pavel Tisunov on 14/01/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "QuickDialog.h" 10 | 11 | @interface QuickDialogController (Additions) 12 | 13 | - (QEntryElement *)entryElementWithKey:(NSString *)key; 14 | - (QTextField *)textFieldForEntryElementWithKey:(NSString *)key; 15 | - (NSString *)textForElementKey:(NSString *)key; 16 | - (UITableViewCell *)cellForElementKey:(NSString *)key; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Instacab/QuickDialogController+Additions.m: -------------------------------------------------------------------------------- 1 | // 2 | // QuickDialogController+Additions.m 3 | // Instacab 4 | // 5 | // Created by Pavel Tisunov on 14/01/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "QuickDialogController+Additions.h" 10 | 11 | @implementation QuickDialogController (Additions) 12 | 13 | - (QEntryElement *)entryElementWithKey:(NSString *)key { 14 | QEntryElement *element = (QEntryElement *)[self.root elementWithKey:key]; 15 | NSAssert(element != nil, @"Element not found"); 16 | return element; 17 | } 18 | 19 | - (QTextField *)textFieldForEntryElementWithKey:(NSString *)key { 20 | QEntryElement *element = (QEntryElement *)[self.root elementWithKey:key]; 21 | NSAssert(element != nil, @"Element not found"); 22 | 23 | QEntryTableViewCell *cell = (QEntryTableViewCell *) [self.quickDialogTableView cellForElement:element]; 24 | NSAssert(cell != nil, @"Cell not found"); 25 | 26 | return (QTextField *)cell.textField; 27 | } 28 | 29 | - (NSString *)textForElementKey:(NSString *)key { 30 | QEntryElement *element = (QEntryElement *)[self.root elementWithKey:key]; 31 | NSAssert(element != nil, @"Element not found"); 32 | 33 | return element.textValue; 34 | } 35 | 36 | - (UITableViewCell *)cellForElementKey:(NSString *)key { 37 | return [self.quickDialogTableView cellForElement:[self entryElementWithKey:key]]; 38 | } 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Instacab/Request/ICVehicleSelectionSliderLabel.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICVehicleSelectionLabel.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 25/05/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ICVehicleSelectionSliderLabel : UILabel 12 | @property (nonatomic, assign) BOOL available; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Instacab/Request/ICVehicleSelectionSliderLabel.m: -------------------------------------------------------------------------------- 1 | // 2 | // ICVehicleSelectionLabel.m 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 25/05/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICVehicleSelectionSliderLabel.h" 10 | #import "Colours.h" 11 | 12 | @implementation ICVehicleSelectionSliderLabel 13 | 14 | - (id)init 15 | { 16 | self = [super init]; 17 | if (self) { 18 | // Initialization code 19 | self.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:12.0]; 20 | } 21 | return self; 22 | } 23 | 24 | -(void)setText:(NSString *)text { 25 | [super setText:text]; 26 | 27 | [self sizeToFit]; 28 | } 29 | 30 | -(void)setAvailable:(BOOL)available { 31 | self.textColor = available ? [UIColor black25PercentColor] : [UIColor colorWithWhite:0.6f alpha:1.0f]; 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Instacab/Request/ICVehicleSelectionSliderView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICVehicleSelectionSliderView.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 24/05/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "ICVehicleSelectionSliderButton.h" 11 | #import "ICVehicleSelectionSliderLabel.h" 12 | #import "ICVehicleView.h" 13 | 14 | @protocol ICVehicleSelectionViewDelegate 15 | -(void)vehicleViewChanged; 16 | @end 17 | 18 | @interface ICVehicleSelectionSliderView : UIControl 19 | @property (readonly) ICVehicleView *selectedVehicleView; 20 | @property (nonatomic, weak) id delegate; 21 | 22 | -(void)updateOrderedVehicleViews:(NSArray *)vehicleViews selectedIndex:(int)selectedIndex; 23 | -(void)setAvailableVehicleViewIdMap:(NSDictionary *)map; 24 | @end 25 | -------------------------------------------------------------------------------- /Instacab/Request/ICVehicleSelectionView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICVehicleSelectionView.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 24/05/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "ICVehicleSelectionSliderView.h" 11 | #import "ICVehicleSelectionSliderButton.h" 12 | 13 | @interface ICVehicleSelectionView : UIView 14 | @property (readonly) NSNumber *selectedVehicleViewId; 15 | @property (nonatomic, weak) id delegate; 16 | 17 | -(void)layoutWithOrderedVehicleViews:(NSArray *)vehicleViews selectedViewId:(NSNumber *)viewId; 18 | -(void)setAvailableVehicleViewIdMap:(NSDictionary *)map; 19 | @end 20 | -------------------------------------------------------------------------------- /Instacab/Request/ICVehicleSelectionView.m: -------------------------------------------------------------------------------- 1 | // 2 | // ICVehicleSelectionView.m 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 24/05/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICVehicleSelectionView.h" 10 | 11 | @implementation ICVehicleSelectionView { 12 | ICVehicleSelectionSliderView *_sliderView; 13 | } 14 | 15 | - (id)initWithFrame:(CGRect)frame 16 | { 17 | self = [super initWithFrame:frame]; 18 | if (self) { 19 | self.backgroundColor = [UIColor colorWithWhite:244.0/255.0 alpha:1.0]; 20 | 21 | _sliderView = [[ICVehicleSelectionSliderView alloc] init]; 22 | [self addSubview:_sliderView]; 23 | } 24 | return self; 25 | } 26 | 27 | - (NSNumber *)selectedVehicleViewId { 28 | ICVehicleView *vehicleView = _sliderView.selectedVehicleView; 29 | return vehicleView.uniqueId; 30 | } 31 | 32 | -(void)layoutWithOrderedVehicleViews:(NSArray *)vehicleViews selectedViewId:(NSNumber *)viewId { 33 | if (vehicleViews.count != 0) { 34 | int index = 0; 35 | for (int i = 0; i < vehicleViews.count; i++) { 36 | if ([((ICVehicleView *)vehicleViews[i]).uniqueId isEqualToNumber:viewId]) { 37 | index = i; 38 | break; 39 | } 40 | } 41 | [_sliderView updateOrderedVehicleViews:vehicleViews selectedIndex:index]; 42 | } 43 | } 44 | 45 | -(void)setAvailableVehicleViewIdMap:(NSDictionary *)map { 46 | [_sliderView setAvailableVehicleViewIdMap:map]; 47 | } 48 | 49 | #pragma mark - Delegate 50 | 51 | -(void)setDelegate:(id)delegate { 52 | _sliderView.delegate = delegate; 53 | } 54 | 55 | -(id)delegate { 56 | return _sliderView.delegate; 57 | } 58 | 59 | @end 60 | -------------------------------------------------------------------------------- /Instacab/Sidebar/ICSidebarController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICSidebarController.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 12/06/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "RESideMenu.h" 11 | 12 | @interface ICSidebarController : UIViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Instacab/UIAlertView+Additions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIAlertView+Additions.h 3 | // InstacabDriver 4 | // 5 | // Created by Pavel Tisunov on 02/01/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIAlertView (Additions) 12 | + (void)presentWithTitle:(NSString *)title 13 | message:(NSString *)message 14 | buttons:(NSArray *)buttons 15 | buttonHandler:(void(^)(NSUInteger index))handler; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Instacab/UIAlertView+Additions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIAlertView+Additions.m 3 | // InstacabDriver 4 | // 5 | // Created by Pavel Tisunov on 02/01/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "UIAlertView+Additions.h" 10 | #import 11 | 12 | @implementation UIAlertView (Additions) 13 | 14 | static const char *HANDLER_KEY = "com.mattrajca.alertview.handler"; 15 | 16 | + (void)presentWithTitle:(NSString *)title 17 | message:(NSString *)message 18 | buttons:(NSArray *)buttons 19 | buttonHandler:(void (^)(NSUInteger))handler { 20 | 21 | UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[title uppercaseString] 22 | message:message 23 | delegate:nil 24 | cancelButtonTitle:nil 25 | otherButtonTitles:nil]; 26 | 27 | [alert setDelegate:alert]; 28 | 29 | [buttons enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 30 | [alert addButtonWithTitle:obj]; 31 | }]; 32 | 33 | if (handler) 34 | objc_setAssociatedObject(alert, HANDLER_KEY, handler, OBJC_ASSOCIATION_COPY_NONATOMIC); 35 | 36 | [alert show]; 37 | } 38 | 39 | - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 40 | id handler = objc_getAssociatedObject(alertView, HANDLER_KEY); 41 | 42 | if (handler) 43 | ((void(^)())handler)(buttonIndex); 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Instacab/UIApplication+Alerts.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface UIApplication (Alerts) 4 | - (void) showAlertWithTitle:(NSString *)title message:(NSString *)message cancelButtonTitle:(NSString *)cancelButtonTitle; 5 | - (void) showAlertForError:(NSError *)error; 6 | - (void) showAlertWithTitle:(NSString *)title message:(NSString *)message; 7 | - (void) showAlertWithTitle:(NSString *)title; 8 | @end -------------------------------------------------------------------------------- /Instacab/UIApplication+Alerts.m: -------------------------------------------------------------------------------- 1 | @implementation UIApplication (Alerts) 2 | 3 | // TODO: Сделать extension на UIViewController 4 | - (void) showAlertWithTitle:(NSString *)title message:(NSString *)message cancelButtonTitle:(NSString *)cancelButtonTitle 5 | { 6 | UIAlertView *anAlertView = [[UIAlertView alloc] initWithTitle:title message:message delegate:nil cancelButtonTitle:cancelButtonTitle otherButtonTitles:nil]; 7 | [anAlertView show]; 8 | } 9 | 10 | - (void) showAlertForError:(NSError *)error 11 | { 12 | [self showAlertWithTitle:NSLocalizedString(@"An error occured", @"") message:[error localizedDescription]]; 13 | } 14 | 15 | - (void) showAlertWithTitle:(NSString *)title message:(NSString *)message 16 | { 17 | [self showAlertWithTitle:title message:message cancelButtonTitle:@"OK"]; 18 | } 19 | 20 | - (void) showAlertWithTitle:(NSString *)title { 21 | [self showAlertWithTitle:title message:nil cancelButtonTitle:@"OK"]; 22 | } 23 | 24 | @end -------------------------------------------------------------------------------- /Instacab/UIApplication+Progress.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+Progress.h 3 | // InstacabDriver 4 | // 5 | // Created by Pavel Tisunov on 10/02/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIApplication (Progress) 12 | -(void)showProgressWithMessage:(NSString *)message; 13 | -(void)hideProgress; 14 | @end 15 | -------------------------------------------------------------------------------- /Instacab/UIApplication+Progress.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+Progress.m 3 | // InstacabDriver 4 | // 5 | // Created by Pavel Tisunov on 10/02/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "UIApplication+Progress.h" 10 | #import "MBProgressHUD.h" 11 | 12 | @implementation UIApplication (Progress) 13 | 14 | -(void)showProgressWithMessage:(NSString *)message { 15 | if ([MBProgressHUD HUDForView:[UIApplication sharedApplication].keyWindow]) return; 16 | 17 | MBProgressHUD *hud = [[MBProgressHUD alloc] initWithView:[UIApplication sharedApplication].keyWindow]; 18 | hud.labelText = message; 19 | hud.removeFromSuperViewOnHide = YES; 20 | hud.dimBackground = YES; 21 | 22 | [[UIApplication sharedApplication].keyWindow addSubview:hud]; 23 | [hud show:YES]; 24 | } 25 | 26 | -(void)hideProgress { 27 | MBProgressHUD *hud = [MBProgressHUD HUDForView:[UIApplication sharedApplication].keyWindow]; 28 | if (hud) 29 | [hud hide:YES]; 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Instacab/UINavigationController+Animation.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+PushPopAnimation.h 3 | // InstacabDriver 4 | // 5 | // Created by Pavel Tisunov on 13/11/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "UINavigationController+Block.h" 11 | 12 | @interface UINavigationController (Animation) 13 | 14 | - (void) slideLayerInDirection:(NSString *)direction andPush:(UIViewController *)destVC; 15 | - (void) slideLayerInDirection:(NSString *)direction andSetViewControllers:(NSArray *)viewControllers; 16 | - (void) slideLayerAndPopInDirection:(NSString *)direction; 17 | - (void) slideLayerAndPopToRootInDirection:(NSString *)direction completion:(VoidBlock)completionBlock; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Instacab/UINavigationController+Animation.m: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+PushPopAnimation.m 3 | // InstacabDriver 4 | // 5 | // Created by Pavel Tisunov on 13/11/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "UINavigationController+Animation.h" 10 | 11 | @implementation UINavigationController (Animation) 12 | 13 | - (void) slideLayerInDirection:(NSString *)direction andPush:(UIViewController *)destVC{ 14 | [self commonTransitionInDirection:direction]; 15 | [self pushViewController:destVC animated:NO]; 16 | } 17 | 18 | - (void) slideLayerInDirection:(NSString *)direction andSetViewControllers:(NSArray *)viewControllers { 19 | [self commonTransitionInDirection:direction]; 20 | self.viewControllers = viewControllers; 21 | } 22 | 23 | - (void)commonTransitionInDirection:(NSString *)direction { 24 | CATransition *transition = [CATransition animation]; 25 | transition.duration = 0.5; 26 | transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 27 | // transition.type = kCATransitionPush; 28 | // transition.subtype = direction; 29 | transition.type = kCATransitionFade; 30 | [self.view.layer addAnimation:transition forKey:kCATransition]; 31 | } 32 | 33 | - (void) slideLayerAndPopInDirection:(NSString *)direction { 34 | [self commonTransitionInDirection:direction]; 35 | [self popViewControllerAnimated:NO]; 36 | } 37 | 38 | - (void) slideLayerAndPopToRootInDirection:(NSString *)direction completion:(VoidBlock)completionBlock { 39 | [self commonTransitionInDirection:direction]; 40 | [self popToRootViewControllerAnimated:NO onCompletion:completionBlock]; 41 | } 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /Instacab/UINavigationController+Reachability.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+Reachability.h 3 | // InstacabDriver 4 | // 5 | // Created by Pavel Tisunov on 13/11/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationController (Reachability) 12 | 13 | -(void)showDispatcherConnectionNotification; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Instacab/UINavigationController+Reachability.m: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+Reachability.m 3 | // InstacabDriver 4 | // 5 | // Created by Pavel Tisunov on 13/11/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "UINavigationController+Reachability.h" 10 | #import "TSMessageView.h" 11 | #import "TSMessage.h" 12 | 13 | @implementation UINavigationController (Reachability) 14 | 15 | -(void)showDispatcherConnectionNotification { 16 | [TSMessage showNotificationInViewController:self 17 | title:@"Нет Сетевого Соединения" 18 | subtitle:@"Проверьте свое подключение к сети.\n" 19 | image:[UIImage imageNamed:@"server-alert"] 20 | type:TSMessageNotificationTypeError 21 | duration:TSMessageNotificationDurationEndless]; 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Instacab/UIView+Positioning.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Positioning.h 3 | // 4 | // Created by Shai Mishali on 5/22/13. 5 | // Copyright (c) 2013 Shai Mishali. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | /** 11 | `UIView+Positioning` provides easy shorthand methods to defining the frame properties (width, height, x, y) of any UIView based object in an easy fashion, as well as extra helpful properties and methods. 12 | */ 13 | 14 | @interface UIView (Positioning) 15 | 16 | /** View's X Position */ 17 | @property (nonatomic, assign) CGFloat x; 18 | 19 | /** View's Y Position */ 20 | @property (nonatomic, assign) CGFloat y; 21 | 22 | /** View's width */ 23 | @property (nonatomic, assign) CGFloat width; 24 | 25 | /** View's height */ 26 | @property (nonatomic, assign) CGFloat height; 27 | 28 | /** View's origin - Sets X and Y Positions */ 29 | @property (nonatomic, assign) CGPoint origin; 30 | 31 | /** View's size - Sets Width and Height */ 32 | @property (nonatomic, assign) CGSize size; 33 | 34 | /** Y vale representing the bottom of the view **/ 35 | @property (nonatomic, assign) CGFloat bottom; 36 | 37 | /** X Value representing the right side of the view **/ 38 | @property (nonatomic, assign) CGFloat right; 39 | 40 | /** X value of the object's center **/ 41 | @property (nonatomic, assign) CGFloat centerX; 42 | 43 | /** Y value of the object's center **/ 44 | @property (nonatomic, assign) CGFloat centerY; 45 | 46 | /** Returns the Subview with the heighest X value **/ 47 | @property (nonatomic, strong, readonly) UIView *lastSubviewOnX; 48 | 49 | /** Returns the Subview with the heighest Y value **/ 50 | @property (nonatomic, strong, readonly) UIView *lastSubviewOnY; 51 | 52 | /** 53 | Centers the view to its parent view (if exists) 54 | */ 55 | -(void) centerToParent; 56 | 57 | @end 58 | -------------------------------------------------------------------------------- /Instacab/UIViewController+Location.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+Location.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 25/04/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIViewController (Location) 12 | -(BOOL)locationServicesEnabled; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Instacab/UIViewController+Location.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+Location.m 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 25/04/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "UIViewController+Location.h" 10 | #import "ICLocationService.h" 11 | #import "UIApplication+Alerts.h" 12 | #import "ICClientService.h" 13 | 14 | @implementation UIViewController (Location) 15 | 16 | -(BOOL)locationServicesEnabled { 17 | if (![ICLocationService sharedInstance].isEnabled) { 18 | [[UIApplication sharedApplication] showAlertWithTitle:@"Ошибка Геолокации" message:@"Службы геолокации выключены. Включите их пройдя в Настройки -> Приватность -> Службы геолокации." cancelButtonTitle:@"OK"]; 19 | return NO; 20 | } 21 | 22 | if ([ICLocationService sharedInstance].isRestricted) { 23 | [[UIApplication sharedApplication] showAlertWithTitle:@"Ошибка Геолокации" message:@"Доступ к вашей геопозиции ограничен. Разрешите Instacab доступ пройдя в Настройки -> Приватность -> Службы геолокации." cancelButtonTitle:@"OK"]; 24 | return NO; 25 | } 26 | 27 | return YES; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Instacab/UIViewController+TitleLabel.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+TitleLabelAttritbutes.h 3 | // Instacab 4 | // 5 | // Created by Pavel Tisunov on 17/01/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIViewController (TitleLabel) 12 | @property (nonatomic, copy) NSString* titleText; 13 | 14 | -(void)setupBarButton:(UIBarButtonItem *)button; 15 | -(void)setupCallToActionBarButton:(UIBarButtonItem *)button; 16 | @end 17 | -------------------------------------------------------------------------------- /Instacab/Views/ICLocationLabelView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICLocationLabelView.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 26/04/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "ICLocationSingleLabel.h" 11 | 12 | @interface ICLocationLabelView : UIView 13 | -(void)updatePickupLocation:(ICLocation *)pickupLocation dropoffLocation:(ICLocation *)dropoffLocation; 14 | @end 15 | -------------------------------------------------------------------------------- /Instacab/Views/ICLocationLabelView.m: -------------------------------------------------------------------------------- 1 | // 2 | // ICLocationLabelView.m 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 26/04/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import "ICLocationLabelView.h" 10 | 11 | @implementation ICLocationLabelView { 12 | ICLocationSingleLabel *_pickupLabel; 13 | ICLocationSingleLabel *_dropoffLabel; 14 | } 15 | 16 | - (id)init 17 | { 18 | self = [super initWithFrame:CGRectMake(0, 0, 320, 92)]; 19 | if (self) { 20 | _pickupLabel = [[ICLocationSingleLabel alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height / 2)]; 21 | _pickupLabel.type = ICLocationLabelTypePickup; 22 | [self addSubview:_pickupLabel]; 23 | 24 | _dropoffLabel = [[ICLocationSingleLabel alloc] initWithFrame:CGRectMake(0, 47.0, self.frame.size.width, self.frame.size.height / 2)]; 25 | _dropoffLabel.type = ICLocationLabelTypeDropoff; 26 | [self addSubview:_dropoffLabel]; 27 | } 28 | return self; 29 | } 30 | 31 | -(void)updatePickupLocation:(ICLocation *)pickupLocation dropoffLocation:(ICLocation *)dropoffLocation { 32 | _pickupLabel.location = pickupLocation; 33 | _dropoffLabel.location = dropoffLocation; 34 | } 35 | 36 | -(CGSize)intrinsicContentSize { 37 | return CGSizeMake(320.0, 92.0); 38 | } 39 | 40 | /* 41 | // Only override drawRect: if you perform custom drawing. 42 | // An empty implementation adversely affects performance during animation. 43 | - (void)drawRect:(CGRect)rect 44 | { 45 | // Drawing code 46 | } 47 | */ 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /Instacab/Views/ICLocationSingleLabel.h: -------------------------------------------------------------------------------- 1 | // 2 | // ICLocationSingleLabel.h 3 | // InstaCab 4 | // 5 | // Created by Pavel Tisunov on 26/04/14. 6 | // Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | #include "ICLocation.h" 11 | 12 | typedef enum : NSUInteger { 13 | ICLocationLabelTypeDropoff, 14 | ICLocationLabelTypePickup, 15 | } ICLocationLabelType; 16 | 17 | @interface ICLocationSingleLabel : UIView 18 | @property (nonatomic, assign) ICLocationLabelType type; 19 | @property (nonatomic, strong) ICLocation *location; 20 | @end 21 | -------------------------------------------------------------------------------- /Instacab/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Instacab/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | /* 2 | Localizable.strings 3 | InstaCab 4 | 5 | Created by Pavel Tisunov on 18/02/14. 6 | Copyright (c) 2014 Bright Stripe. All rights reserved. 7 | */ 8 | -------------------------------------------------------------------------------- /Instacab/main.m: -------------------------------------------------------------------------------- 1 | // main.m 2 | // Hopper 3 | // 4 | // Created by Pavel Tisunov on 10/9/13. 5 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) 13 | { 14 | @autoreleasepool { 15 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /InstacabTests/InstacabTests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | com.brightstripe.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /InstacabTests/InstacabTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // HopperTests.m 3 | // HopperTests 4 | // 5 | // Created by Pavel Tisunov on 10/9/13. 6 | // Copyright (c) 2013 Bright Stripe. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface InstacabTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation InstacabTests 16 | 17 | - (void)setUp 18 | { 19 | [super setUp]; 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | } 22 | 23 | - (void)tearDown 24 | { 25 | // Put teardown code here. This method is called after the invocation of each test method in the class. 26 | [super tearDown]; 27 | } 28 | 29 | - (void)testExample 30 | { 31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /InstacabTests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Paul Tisunov 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | platform :ios, '7.0' 2 | inhibit_all_warnings! 3 | 4 | pod 'AFNetworking', '~> 2.0' 5 | pod 'Colours', '~> 5.0' 6 | pod 'SocketRocket', :git => 'git@github.com:tisunov/SocketRocket.git' 7 | pod 'Mantle', '~> 1.0' 8 | pod 'EDStarRating' 9 | pod 'ReactiveCocoa', '~> 2.1.7' 10 | pod 'MBProgressHUD', :git => 'https://github.com/dannybabiy/MBProgressHUD.git', :branch=>'ios7' 11 | pod 'SLScrollViewKeyboardSupport', :git => 'https://github.com/OliverLetterer/SLScrollViewKeyboardSupport.git' 12 | pod 'TSMessages', :git => 'https://github.com/tisunov/TSMessages.git' 13 | pod 'Bugsnag' 14 | pod 'ObjectiveSugar' 15 | pod 'QuickDialog', :git => 'https://github.com/escoz/QuickDialog.git' 16 | pod 'AKNumericFormatter', :git => 'https://github.com/blackm00n/AKNumericFormatter.git' 17 | pod 'PaymentKit', :git => 'https://github.com/stripe/PaymentKit.git' 18 | pod 'FCUtilities', :git => 'https://github.com/marcoarment/FCUtilities.git' 19 | pod 'iOSBlocks', :git => 'https://github.com/dzenbot/iOSBlocks.git', :inhibit_warnings => true 20 | pod 'UIView+AutoLayout' 21 | pod 'PromiseKit' 22 | pod 'RESideMenu' 23 | pod 'FastImageCache', '~> 1.3' 24 | pod 'Mixpanel' -------------------------------------------------------------------------------- /Skver.gpx: -------------------------------------------------------------------------------- 1 | Петровский сквер -------------------------------------------------------------------------------- /readme/confirmation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/readme/confirmation.png -------------------------------------------------------------------------------- /readme/fare_quote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/readme/fare_quote.png -------------------------------------------------------------------------------- /readme/feedback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/readme/feedback.png -------------------------------------------------------------------------------- /readme/pickup_location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/readme/pickup_location.png -------------------------------------------------------------------------------- /readme/progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/readme/progress.png -------------------------------------------------------------------------------- /readme/receipt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/readme/receipt.png -------------------------------------------------------------------------------- /readme/request.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tisunov/InstacabClient/d12b5f74150e34a4b97a1f76b32e5042cf564c91/readme/request.png --------------------------------------------------------------------------------