diff --git a/External/google-plus-ios-sdk/Changelog b/External/google-plus-ios-sdk/Changelog index 015f192d..f4113e83 100644 --- a/External/google-plus-ios-sdk/Changelog +++ b/External/google-plus-ios-sdk/Changelog @@ -1,3 +1,10 @@ +2013-02-26 -- v1.2.1 +- Interactive posts on Google+ share +- Improved sign-in and share APIs to use shared instances +- Automatic retrieval of user identity upon sign-in +- Expanded Google+ moments API support +- Updated sample app + 2012-10-12 -- v1.1.0 - Content deep linking on Google+ share - iOS6 support diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLBase64.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLBase64.m index cbf556e1..e6c03627 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLBase64.m +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLBase64.m @@ -32,7 +32,7 @@ static NSString *EncodeBase64StringCommon(NSData *data, const char *table) { NSUInteger bufferSize = ((length + 2) / 3) * 4; NSMutableData* buffer = [NSMutableData dataWithLength:bufferSize]; - uint8_t *output = [buffer mutableBytes]; + int8_t *output = [buffer mutableBytes]; for (NSUInteger i = 0; i < length; i += 3) { NSUInteger value = 0; @@ -70,7 +70,7 @@ static void CreateDecodingTable(const char *encodingTable, size_t encodingTableSize, char *decodingTable) { memset(decodingTable, 0, 128); for (unsigned int i = 0; i < encodingTableSize; i++) { - decodingTable[(unsigned int) encodingTable[i]] = i; + decodingTable[(unsigned int) encodingTable[i]] = (char)i; } } @@ -80,7 +80,7 @@ static NSData *DecodeBase64StringCommon(NSString *base64Str, const char *cString = [base64Str cStringUsingEncoding:NSASCIIStringEncoding]; if (cString == nil) return nil; - NSInteger inputLength = strlen(cString); + NSInteger inputLength = (NSInteger)strlen(cString); if (inputLength % 4 != 0) return nil; if (inputLength == 0) return [NSData data]; @@ -89,7 +89,7 @@ static NSData *DecodeBase64StringCommon(NSString *base64Str, } NSInteger outputLength = inputLength * 3 / 4; - NSMutableData* data = [NSMutableData dataWithLength:outputLength]; + NSMutableData* data = [NSMutableData dataWithLength:(NSUInteger)outputLength]; uint8_t *output = [data mutableBytes]; NSInteger inputPoint = 0; @@ -102,12 +102,12 @@ static NSData *DecodeBase64StringCommon(NSString *base64Str, int i2 = inputPoint < inputLength ? cString[inputPoint++] : 'A'; // 'A' will decode to \0 int i3 = inputPoint < inputLength ? cString[inputPoint++] : 'A'; - output[outputPoint++] = (table[i0] << 2) | (table[i1] >> 4); + output[outputPoint++] = (uint8_t)((table[i0] << 2) | (table[i1] >> 4)); if (outputPoint < outputLength) { - output[outputPoint++] = ((table[i1] & 0xF) << 4) | (table[i2] >> 2); + output[outputPoint++] = (uint8_t)(((table[i1] & 0xF) << 4) | (table[i2] >> 2)); } if (outputPoint < outputLength) { - output[outputPoint++] = ((table[i2] & 0x3) << 6) | table[i3]; + output[outputPoint++] = (uint8_t)(((table[i2] & 0x3) << 6) | table[i3]); } } diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLBatchQuery.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLBatchQuery.h index 2f20137d..5edf1790 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLBatchQuery.h +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLBatchQuery.h @@ -45,8 +45,8 @@ + (id)batchQuery; + (id)batchQueryWithQueries:(NSArray *)array; -- (void)addQuery:(GTLQuery *)query; +- (void)addQuery:(GTLQuery *)query GTL_NONNULL((1)); -- (GTLQuery *)queryForRequestID:(NSString *)requestID; +- (GTLQuery *)queryForRequestID:(NSString *)requestID GTL_NONNULL((1)); @end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLDateTime.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLDateTime.m index 632943d8..a55b049a 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLDateTime.m +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLDateTime.m @@ -34,6 +34,12 @@ @end +static NSCharacterSet *gDashSet = nil; +static NSCharacterSet *gTSet = nil; +static NSCharacterSet *gColonSet = nil; +static NSCharacterSet *gPlusMinusZSet = nil; +static NSMutableDictionary *gCalendarsForTimeZones = nil; + @implementation GTLDateTime // A note about milliseconds_: @@ -58,6 +64,19 @@ offsetSeconds = offsetSeconds_, universalTime = isUniversalTime_; ++ (void)initialize { + // Note that initialize is guaranteed by the runtime to be called in a + // thread-safe manner. + if (gDashSet == nil) { + gDashSet = [[NSCharacterSet characterSetWithCharactersInString:@"-"] retain]; + gTSet = [[NSCharacterSet characterSetWithCharactersInString:@"Tt "] retain]; + gColonSet = [[NSCharacterSet characterSetWithCharactersInString:@":"] retain]; + gPlusMinusZSet = [[NSCharacterSet characterSetWithCharactersInString:@"+-zZ"] retain]; + + gCalendarsForTimeZones = [[NSMutableDictionary alloc] init]; + } +} + + (GTLDateTime *)dateTimeWithRFC3339String:(NSString *)str { if (str == nil) return nil; @@ -179,29 +198,41 @@ } } -- (NSCalendar *)calendar { - NSCalendar *cal = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; - NSTimeZone *tz = self.timeZone; - if (tz) { - [cal setTimeZone:tz]; +- (NSCalendar *)calendarForTimeZone:(NSTimeZone *)tz { + NSCalendar *cal = nil; + @synchronized(gCalendarsForTimeZones) { + id tzKey = (tz ? tz : [NSNull null]); + cal = [gCalendarsForTimeZones objectForKey:tzKey]; + if (cal == nil) { + cal = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; + if (tz) { + [cal setTimeZone:tz]; + } + [gCalendarsForTimeZones setObject:cal forKey:tzKey]; + } } return cal; } +- (NSCalendar *)calendar { + NSTimeZone *tz = self.timeZone; + return [self calendarForTimeZone:tz]; +} + - (NSDate *)date { - NSCalendar *cal = self.calendar; NSDateComponents *dateComponents = self.dateComponents; NSTimeInterval extraMillisecondsAsSeconds = 0.0; + NSCalendar *cal; if (!self.hasTime) { - // we're not keeping track of a time, but NSDate always is based on + // We're not keeping track of a time, but NSDate always is based on // an absolute time. We want to avoid returning an NSDate where the // calendar date appears different from what was used to create our // date-time object. // // We'll make a copy of the date components, setting the time on our // copy to noon GMT, since that ensures the date renders correctly for - // any time zone + // any time zone. NSDateComponents *noonDateComponents = [[dateComponents copy] autorelease]; [noonDateComponents setHour:12]; [noonDateComponents setMinute:0]; @@ -209,8 +240,10 @@ dateComponents = noonDateComponents; NSTimeZone *gmt = [NSTimeZone timeZoneWithName:@"Universal"]; - [cal setTimeZone:gmt]; + cal = [self calendarForTimeZone:gmt]; } else { + cal = self.calendar; + // Add in the fractional seconds that don't fit into NSDateComponents. extraMillisecondsAsSeconds = ((NSTimeInterval)self.milliseconds) / 1000.0; } @@ -278,10 +311,7 @@ } - (void)setFromDate:(NSDate *)date timeZone:(NSTimeZone *)tz { - NSCalendar *cal = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; - if (tz) { - [cal setTimeZone:tz]; - } + NSCalendar *cal = [self calendarForTimeZone:tz]; NSUInteger const kComponentBits = (NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit @@ -332,25 +362,20 @@ // There should be no whitespace, so no skip characters. [scanner setCharactersToBeSkipped:nil]; - NSCharacterSet* dashSet = [NSCharacterSet characterSetWithCharactersInString:@"-"]; - NSCharacterSet* tSet = [NSCharacterSet characterSetWithCharactersInString:@"Tt "]; - NSCharacterSet* colonSet = [NSCharacterSet characterSetWithCharactersInString:@":"]; - NSCharacterSet* plusMinusZSet = [NSCharacterSet characterSetWithCharactersInString:@"+-zZ"]; - // for example, scan 2006-11-17T15:10:46-08:00 // or 2006-11-17T15:10:46Z if (// yyyy-mm-dd [scanner scanInteger:&year] && - [scanner scanCharactersFromSet:dashSet intoString:NULL] && + [scanner scanCharactersFromSet:gDashSet intoString:NULL] && [scanner scanInteger:&month] && - [scanner scanCharactersFromSet:dashSet intoString:NULL] && + [scanner scanCharactersFromSet:gDashSet intoString:NULL] && [scanner scanInteger:&day] && // Thh:mm:ss - [scanner scanCharactersFromSet:tSet intoString:NULL] && + [scanner scanCharactersFromSet:gTSet intoString:NULL] && [scanner scanInteger:&hour] && - [scanner scanCharactersFromSet:colonSet intoString:NULL] && + [scanner scanCharactersFromSet:gColonSet intoString:NULL] && [scanner scanInteger:&minute] && - [scanner scanCharactersFromSet:colonSet intoString:NULL] && + [scanner scanCharactersFromSet:gColonSet intoString:NULL] && [scanner scanDouble:&secDouble]) { // At this point we got secDouble, pull it apart. @@ -360,9 +385,9 @@ // Finish parsing, now the offset info. if (// Z or +hh:mm - [scanner scanCharactersFromSet:plusMinusZSet intoString:&sign] && + [scanner scanCharactersFromSet:gPlusMinusZSet intoString:&sign] && [scanner scanInteger:&offsetHour] && - [scanner scanCharactersFromSet:colonSet intoString:NULL] && + [scanner scanCharactersFromSet:gColonSet intoString:NULL] && [scanner scanInteger:&offsetMinute]) { } } diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLDefines.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLDefines.h index ebd96558..b12eb9eb 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLDefines.h +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLDefines.h @@ -126,3 +126,19 @@ #define NS_RETURNS_NOT_RETAINED #endif #endif + +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif + +#if 1 + // We will start using nonnull declarations once the static analyzer seems + // to support it without false positives. + #define GTL_NONNULL(x) +#else + #if __has_attribute(nonnull) + #define GTL_NONNULL(x) __attribute__((nonnull x)) + #else + #define GTL_NONNULL(x) + #endif +#endif diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLObject.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLObject.h index 42d79fe4..43935adf 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLObject.h +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLObject.h @@ -83,7 +83,7 @@ - (NSString *)JSONString; // generic access to json; also creates it if necessary -- (void)setJSONValue:(id)obj forKey:(NSString *)key; +- (void)setJSONValue:(id)obj forKey:(NSString *)key GTL_NONNULL((2)); - (id)JSONValueForKey:(NSString *)key; // Returns the list of keys in this object's JSON that aren't listed as @@ -93,13 +93,15 @@ // Any keys in the JSON that aren't listed as @properties on the object // are counted as "additional properties". These allow you to get/set them. - (id)additionalPropertyForName:(NSString *)name; -- (void)setAdditionalProperty:(id)obj forName:(NSString *)name; +- (void)setAdditionalProperty:(id)obj forName:(NSString *)name GTL_NONNULL((2)); - (NSDictionary *)additionalProperties; // User properties are supported for client convenience, but are not copied by // copyWithZone. User Properties keys beginning with _ are reserved by the library. -- (void)setProperty:(id)obj forKey:(NSString *)key; // pass nil obj to remove property -- (id)propertyForKey:(NSString *)key; +// +// Set nil for obj to remove the property. +- (void)setProperty:(id)obj forKey:(NSString *)key GTL_NONNULL((2)); +- (id)propertyForKey:(NSString *)key GTL_NONNULL((1)); // userData is stored as a property with key "_userData" - (void)setUserData:(id)obj; @@ -184,7 +186,7 @@ // identifiers to items. If the items list for the instance somehow changes, // use the reset method below to force a new cache to be created for this // collection. -- (id)itemForIdentifier:(NSString *)key; +- (id)itemForIdentifier:(NSString *)key GTL_NONNULL((1)); // Identifiers for all items are cached when the first one is obtained. // This method resets the cache. It is needed only if the item list has @@ -199,7 +201,7 @@ // Base object use for when an service method directly returns an array instead // of an object. Normally methods should return an object with an 'items' -// property, this exists for the methods not up to spec. +// property, but this exists for the methods not up to spec. @interface GTLResultArray : GTLCollectionObject // This method should only be called by subclasses. - (NSArray *)itemsWithItemClass:(Class)itemClass; diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLObject.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLObject.m index 8f1048e3..83c2d19f 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLObject.m +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLObject.m @@ -197,7 +197,7 @@ static NSString *const kUserDataPropertyKey = @"_userData"; // Open question: should this instead create the union of elements for // all items in the array, rather than just get fields from the first // array object? - if ([value count] > 0) { + if ([(NSArray *)value count] > 0) { id firstObj = [value objectAtIndex:0]; if ([firstObj isKindOfClass:[NSDictionary class]]) { // An array of objects @@ -455,7 +455,7 @@ static NSString *const kUserDataPropertyKey = @"_userData"; } else if ([rawValue isKindOfClass:[NSArray class]]) { // for arrays, show the number of items in the array: // [3] - value = [NSString stringWithFormat:@"[%lu]", (unsigned long)[rawValue count]]; + value = [NSString stringWithFormat:@"[%lu]", (unsigned long)[(NSArray *)rawValue count]]; } else if ([rawValue isKindOfClass:[NSString class]]) { // for strings, show the string in quotes: // "Hi mom." diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlus.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlus.h index f7e52a46..220410bb 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlus.h +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlus.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2012 Google Inc. +/* Copyright (c) 2013 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,16 +20,25 @@ // ---------------------------------------------------------------------------- // NOTE: This file is generated from Google APIs Discovery Service. // Service: -// Google+ API (plus/v1moments) +// Google+ API (plus/v1) // Description: // The Google+ API enables developers to build on top of the Google+ platform. // Documentation: -// https://developers.google.com/+/history/ +// https://developers.google.com/+/api/ #import "GTLPlusConstants.h" +#import "GTLPlusAcl.h" +#import "GTLPlusAclentryResource.h" +#import "GTLPlusActivity.h" +#import "GTLPlusActivityFeed.h" +#import "GTLPlusComment.h" +#import "GTLPlusCommentFeed.h" #import "GTLPlusItemScope.h" #import "GTLPlusMoment.h" +#import "GTLPlusMomentsFeed.h" +#import "GTLPlusPeopleFeed.h" +#import "GTLPlusPerson.h" #import "GTLQueryPlus.h" #import "GTLServicePlus.h" diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusAcl.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusAcl.h new file mode 100644 index 00000000..aad4f65e --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusAcl.h @@ -0,0 +1,60 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusAcl.h +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusAcl (0 custom class methods, 3 custom properties) + +#if GTL_BUILT_AS_FRAMEWORK + #import "GTL/GTLObject.h" +#else + #import "GTLObject.h" +#endif + +@class GTLPlusAclentryResource; + +// ---------------------------------------------------------------------------- +// +// GTLPlusAcl +// + +// This class supports NSFastEnumeration over its "items" property. It also +// supports -itemAtIndex: to retrieve individual objects from "items". + +@interface GTLPlusAcl : GTLCollectionObject + +// Description of the access granted, suitable for display. +// Remapped to 'descriptionProperty' to avoid NSObject's 'description'. +@property (copy) NSString *descriptionProperty; + +// The list of access entries. +@property (retain) NSArray *items; // of GTLPlusAclentryResource + +// Identifies this resource as a collection of access controls. Value: +// "plus#acl". +@property (copy) NSString *kind; + +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusAcl.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusAcl.m new file mode 100644 index 00000000..0e82d087 --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusAcl.m @@ -0,0 +1,61 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusAcl.m +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusAcl (0 custom class methods, 3 custom properties) + +#import "GTLPlusAcl.h" + +#import "GTLPlusAclentryResource.h" + +// ---------------------------------------------------------------------------- +// +// GTLPlusAcl +// + +@implementation GTLPlusAcl +@dynamic descriptionProperty, items, kind; + ++ (NSDictionary *)propertyToJSONKeyMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:@"description" + forKey:@"descriptionProperty"]; + return map; +} + ++ (NSDictionary *)arrayPropertyToClassMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:[GTLPlusAclentryResource class] + forKey:@"items"]; + return map; +} + ++ (void)load { + [self registerObjectClassForKind:@"plus#acl"]; +} + +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusAclentryResource.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusAclentryResource.h new file mode 100644 index 00000000..30634e8d --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusAclentryResource.h @@ -0,0 +1,61 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusAclentryResource.h +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusAclentryResource (0 custom class methods, 3 custom properties) + +#if GTL_BUILT_AS_FRAMEWORK + #import "GTL/GTLObject.h" +#else + #import "GTLObject.h" +#endif + +// ---------------------------------------------------------------------------- +// +// GTLPlusAclentryResource +// + +@interface GTLPlusAclentryResource : GTLObject + +// A descriptive name for this entry. Suitable for display. +@property (copy) NSString *displayName; + +// The ID of the entry. For entries of type "person" or "circle", this is the ID +// of the resource. For other types, this property is not set. +// identifier property maps to 'id' in JSON (to avoid Objective C's 'id'). +@property (copy) NSString *identifier; + +// The type of entry describing to whom access is granted. Possible values are: +// - "person" - Access to an individual. +// - "circle" - Access to members of a circle. +// - "myCircles" - Access to members of all the person's circles. +// - "extendedCircles" - Access to members of everyone in a person's circles, +// plus all of the people in their circles. +// - "public" - Access to anyone on the web. +@property (copy) NSString *type; + +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusAclentryResource.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusAclentryResource.m new file mode 100644 index 00000000..ff640290 --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusAclentryResource.m @@ -0,0 +1,48 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusAclentryResource.m +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusAclentryResource (0 custom class methods, 3 custom properties) + +#import "GTLPlusAclentryResource.h" + +// ---------------------------------------------------------------------------- +// +// GTLPlusAclentryResource +// + +@implementation GTLPlusAclentryResource +@dynamic displayName, identifier, type; + ++ (NSDictionary *)propertyToJSONKeyMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:@"id" + forKey:@"identifier"]; + return map; +} + +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusActivity.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusActivity.h new file mode 100644 index 00000000..ce4b9417 --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusActivity.h @@ -0,0 +1,493 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusActivity.h +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusActivity (0 custom class methods, 19 custom properties) +// GTLPlusActivityActor (0 custom class methods, 5 custom properties) +// GTLPlusActivityObject (0 custom class methods, 10 custom properties) +// GTLPlusActivityProvider (0 custom class methods, 1 custom properties) +// GTLPlusActivityActorImage (0 custom class methods, 1 custom properties) +// GTLPlusActivityActorName (0 custom class methods, 2 custom properties) +// GTLPlusActivityObjectActor (0 custom class methods, 4 custom properties) +// GTLPlusActivityObjectAttachmentsItem (0 custom class methods, 9 custom properties) +// GTLPlusActivityObjectPlusoners (0 custom class methods, 2 custom properties) +// GTLPlusActivityObjectReplies (0 custom class methods, 2 custom properties) +// GTLPlusActivityObjectResharers (0 custom class methods, 2 custom properties) +// GTLPlusActivityObjectActorImage (0 custom class methods, 1 custom properties) +// GTLPlusActivityObjectAttachmentsItemEmbed (0 custom class methods, 2 custom properties) +// GTLPlusActivityObjectAttachmentsItemFullImage (0 custom class methods, 4 custom properties) +// GTLPlusActivityObjectAttachmentsItemImage (0 custom class methods, 4 custom properties) +// GTLPlusActivityObjectAttachmentsItemThumbnailsItem (0 custom class methods, 3 custom properties) +// GTLPlusActivityObjectAttachmentsItemThumbnailsItemImage (0 custom class methods, 4 custom properties) + +#if GTL_BUILT_AS_FRAMEWORK + #import "GTL/GTLObject.h" +#else + #import "GTLObject.h" +#endif + +@class GTLPlusAcl; +@class GTLPlusActivityActor; +@class GTLPlusActivityActorImage; +@class GTLPlusActivityActorName; +@class GTLPlusActivityObject; +@class GTLPlusActivityObjectActor; +@class GTLPlusActivityObjectActorImage; +@class GTLPlusActivityObjectAttachmentsItem; +@class GTLPlusActivityObjectAttachmentsItemEmbed; +@class GTLPlusActivityObjectAttachmentsItemFullImage; +@class GTLPlusActivityObjectAttachmentsItemImage; +@class GTLPlusActivityObjectAttachmentsItemThumbnailsItem; +@class GTLPlusActivityObjectAttachmentsItemThumbnailsItemImage; +@class GTLPlusActivityObjectPlusoners; +@class GTLPlusActivityObjectReplies; +@class GTLPlusActivityObjectResharers; +@class GTLPlusActivityProvider; + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivity +// + +@interface GTLPlusActivity : GTLObject + +// Identifies who has access to see this activity. +@property (retain) GTLPlusAcl *access; + +// The person who performed this activity. +@property (retain) GTLPlusActivityActor *actor; + +// Street address where this activity occurred. +@property (copy) NSString *address; + +// Additional content added by the person who shared this activity, applicable +// only when resharing an activity. +@property (copy) NSString *annotation; + +// If this activity is a crosspost from another system, this property specifies +// the ID of the original activity. +@property (copy) NSString *crosspostSource; + +// ETag of this response for caching purposes. +@property (copy) NSString *ETag; + +// Latitude and longitude where this activity occurred. Format is latitude +// followed by longitude, space separated. +@property (copy) NSString *geocode; + +// The ID of this activity. +// identifier property maps to 'id' in JSON (to avoid Objective C's 'id'). +@property (copy) NSString *identifier; + +// Identifies this resource as an activity. Value: "plus#activity". +@property (copy) NSString *kind; + +// The object of this activity. +@property (retain) GTLPlusActivityObject *object; + +// ID of the place where this activity occurred. +@property (copy) NSString *placeId; + +// Name of the place where this activity occurred. +@property (copy) NSString *placeName; + +// The service provider that initially published this activity. +@property (retain) GTLPlusActivityProvider *provider; + +// The time at which this activity was initially published. Formatted as an RFC +// 3339 timestamp. +@property (retain) GTLDateTime *published; + +// Radius, in meters, of the region where this activity occurred, centered at +// the latitude and longitude identified in geocode. +@property (copy) NSString *radius; + +// Title of this activity. +@property (copy) NSString *title; + +// The time at which this activity was last updated. Formatted as an RFC 3339 +// timestamp. +@property (retain) GTLDateTime *updated; + +// The link to this activity. +@property (copy) NSString *url; + +// This activity's verb, indicating what action was performed. Possible values +// are: +// - "post" - Publish content to the stream. +// - "share" - Reshare an activity. +@property (copy) NSString *verb; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityActor +// + +@interface GTLPlusActivityActor : GTLObject + +// The name of the actor, suitable for display. +@property (copy) NSString *displayName; + +// The ID of the actor's person resource. +// identifier property maps to 'id' in JSON (to avoid Objective C's 'id'). +@property (copy) NSString *identifier; + +// The image representation of the actor. +@property (retain) GTLPlusActivityActorImage *image; + +// An object representation of the individual components of name. +@property (retain) GTLPlusActivityActorName *name; + +// The link to the actor's Google profile. +@property (copy) NSString *url; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObject +// + +@interface GTLPlusActivityObject : GTLObject + +// If this activity's object is itself another activity (for example, when a +// person reshares an activity), this property specifies the original activity's +// actor. +@property (retain) GTLPlusActivityObjectActor *actor; + +// The media objects attached to this activity. +@property (retain) NSArray *attachments; // of GTLPlusActivityObjectAttachmentsItem + +// The HTML-formatted content, suitable for display. +@property (copy) NSString *content; + +// The ID of the object. When resharing an activity, this is the ID of the +// activity being reshared. +// identifier property maps to 'id' in JSON (to avoid Objective C's 'id'). +@property (copy) NSString *identifier; + +// The type of the object. Possible values are: +// - "note" - Textual content. +// - "activity" - A Google+ activity. +@property (copy) NSString *objectType; + +// The content (text) as provided by the author, stored without any HTML +// formatting. When creating or updating an activity, this value must be +// supplied as plain text in the request. +@property (copy) NSString *originalContent; + +// People who +1'd this activity. +@property (retain) GTLPlusActivityObjectPlusoners *plusoners; + +// Comments in reply to this activity. +@property (retain) GTLPlusActivityObjectReplies *replies; + +// People who reshared this activity. +@property (retain) GTLPlusActivityObjectResharers *resharers; + +// The URL that points to the linked resource. +@property (copy) NSString *url; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityProvider +// + +@interface GTLPlusActivityProvider : GTLObject + +// Name of the service provider. +@property (copy) NSString *title; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityActorImage +// + +@interface GTLPlusActivityActorImage : GTLObject + +// The URL of the actor's profile photo. To re-size the image and crop it to a +// square, append the query string ?sz=x, where x is the dimension in pixels of +// each side. +@property (copy) NSString *url; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityActorName +// + +@interface GTLPlusActivityActorName : GTLObject + +// The family name (last name) of the actor. +@property (copy) NSString *familyName; + +// The given name (first name) of the actor. +@property (copy) NSString *givenName; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectActor +// + +@interface GTLPlusActivityObjectActor : GTLObject + +// The original actor's name, suitable for display. +@property (copy) NSString *displayName; + +// ID of the original actor. +// identifier property maps to 'id' in JSON (to avoid Objective C's 'id'). +@property (copy) NSString *identifier; + +// The image representation of the original actor. +@property (retain) GTLPlusActivityObjectActorImage *image; + +// A link to the original actor's Google profile. +@property (copy) NSString *url; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectAttachmentsItem +// + +@interface GTLPlusActivityObjectAttachmentsItem : GTLObject + +// If the attachment is an article, this property contains a snippet of text +// from the article. It can also include descriptions for other types. +@property (copy) NSString *content; + +// The title of the attachment (such as a photo caption or an article title). +@property (copy) NSString *displayName; + +// If the attachment is a video, the embeddable link. +@property (retain) GTLPlusActivityObjectAttachmentsItemEmbed *embed; + +// The full image URL for photo attachments. +@property (retain) GTLPlusActivityObjectAttachmentsItemFullImage *fullImage; + +// The ID of the attachment. +// identifier property maps to 'id' in JSON (to avoid Objective C's 'id'). +@property (copy) NSString *identifier; + +// The preview image for photos or videos. +@property (retain) GTLPlusActivityObjectAttachmentsItemImage *image; + +// The type of media object. Possible values are: +// - "photo" - A photo. +// - "album" - A photo album. +// - "video" - A video. +// - "article" - An article, specified by a link. +@property (copy) NSString *objectType; + +// If the attachment is an album, potential additional thumbnails from the +// album. +@property (retain) NSArray *thumbnails; // of GTLPlusActivityObjectAttachmentsItemThumbnailsItem + +// The link to the attachment, should be of type text/html. +@property (copy) NSString *url; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectPlusoners +// + +@interface GTLPlusActivityObjectPlusoners : GTLObject + +// The URL for the collection of people who +1'd this activity. +@property (copy) NSString *selfLink; + +// Total number of people who +1'd this activity. +@property (retain) NSNumber *totalItems; // unsignedIntValue + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectReplies +// + +@interface GTLPlusActivityObjectReplies : GTLObject + +// The URL for the collection of comments in reply to this activity. +@property (copy) NSString *selfLink; + +// Total number of comments on this activity. +@property (retain) NSNumber *totalItems; // unsignedIntValue + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectResharers +// + +@interface GTLPlusActivityObjectResharers : GTLObject + +// The URL for the collection of resharers. +@property (copy) NSString *selfLink; + +// Total number of people who reshared this activity. +@property (retain) NSNumber *totalItems; // unsignedIntValue + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectActorImage +// + +@interface GTLPlusActivityObjectActorImage : GTLObject + +// A URL that points to a thumbnail photo of the original actor. +@property (copy) NSString *url; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectAttachmentsItemEmbed +// + +@interface GTLPlusActivityObjectAttachmentsItemEmbed : GTLObject + +// Media type of the link. +@property (copy) NSString *type; + +// URL of the link. +@property (copy) NSString *url; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectAttachmentsItemFullImage +// + +@interface GTLPlusActivityObjectAttachmentsItemFullImage : GTLObject + +// The height, in pixels, of the linked resource. +@property (retain) NSNumber *height; // unsignedIntValue + +// Media type of the link. +@property (copy) NSString *type; + +// URL to the image. +@property (copy) NSString *url; + +// The width, in pixels, of the linked resource. +@property (retain) NSNumber *width; // unsignedIntValue + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectAttachmentsItemImage +// + +@interface GTLPlusActivityObjectAttachmentsItemImage : GTLObject + +// The height, in pixels, of the linked resource. +@property (retain) NSNumber *height; // unsignedIntValue + +// Media type of the link. +@property (copy) NSString *type; + +// Image url. +@property (copy) NSString *url; + +// The width, in pixels, of the linked resource. +@property (retain) NSNumber *width; // unsignedIntValue + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectAttachmentsItemThumbnailsItem +// + +@interface GTLPlusActivityObjectAttachmentsItemThumbnailsItem : GTLObject + +// Potential name of the thumbnail. +// Remapped to 'descriptionProperty' to avoid NSObject's 'description'. +@property (copy) NSString *descriptionProperty; + +// Image resource. +@property (retain) GTLPlusActivityObjectAttachmentsItemThumbnailsItemImage *image; + +// URL to the webpage containing the image. +@property (copy) NSString *url; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectAttachmentsItemThumbnailsItemImage +// + +@interface GTLPlusActivityObjectAttachmentsItemThumbnailsItemImage : GTLObject + +// The height, in pixels, of the linked resource. +@property (retain) NSNumber *height; // unsignedIntValue + +// Media type of the link. +@property (copy) NSString *type; + +// Image url. +@property (copy) NSString *url; + +// The width, in pixels, of the linked resource. +@property (retain) NSNumber *width; // unsignedIntValue + +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusActivity.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusActivity.m new file mode 100644 index 00000000..4d70f017 --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusActivity.m @@ -0,0 +1,290 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusActivity.m +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusActivity (0 custom class methods, 19 custom properties) +// GTLPlusActivityActor (0 custom class methods, 5 custom properties) +// GTLPlusActivityObject (0 custom class methods, 10 custom properties) +// GTLPlusActivityProvider (0 custom class methods, 1 custom properties) +// GTLPlusActivityActorImage (0 custom class methods, 1 custom properties) +// GTLPlusActivityActorName (0 custom class methods, 2 custom properties) +// GTLPlusActivityObjectActor (0 custom class methods, 4 custom properties) +// GTLPlusActivityObjectAttachmentsItem (0 custom class methods, 9 custom properties) +// GTLPlusActivityObjectPlusoners (0 custom class methods, 2 custom properties) +// GTLPlusActivityObjectReplies (0 custom class methods, 2 custom properties) +// GTLPlusActivityObjectResharers (0 custom class methods, 2 custom properties) +// GTLPlusActivityObjectActorImage (0 custom class methods, 1 custom properties) +// GTLPlusActivityObjectAttachmentsItemEmbed (0 custom class methods, 2 custom properties) +// GTLPlusActivityObjectAttachmentsItemFullImage (0 custom class methods, 4 custom properties) +// GTLPlusActivityObjectAttachmentsItemImage (0 custom class methods, 4 custom properties) +// GTLPlusActivityObjectAttachmentsItemThumbnailsItem (0 custom class methods, 3 custom properties) +// GTLPlusActivityObjectAttachmentsItemThumbnailsItemImage (0 custom class methods, 4 custom properties) + +#import "GTLPlusActivity.h" + +#import "GTLPlusAcl.h" + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivity +// + +@implementation GTLPlusActivity +@dynamic access, actor, address, annotation, crosspostSource, ETag, geocode, + identifier, kind, object, placeId, placeName, provider, published, + radius, title, updated, url, verb; + ++ (NSDictionary *)propertyToJSONKeyMap { + NSDictionary *map = + [NSDictionary dictionaryWithObjectsAndKeys: + @"etag", @"ETag", + @"id", @"identifier", + nil]; + return map; +} + ++ (void)load { + [self registerObjectClassForKind:@"plus#activity"]; +} + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityActor +// + +@implementation GTLPlusActivityActor +@dynamic displayName, identifier, image, name, url; + ++ (NSDictionary *)propertyToJSONKeyMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:@"id" + forKey:@"identifier"]; + return map; +} + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObject +// + +@implementation GTLPlusActivityObject +@dynamic actor, attachments, content, identifier, objectType, originalContent, + plusoners, replies, resharers, url; + ++ (NSDictionary *)propertyToJSONKeyMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:@"id" + forKey:@"identifier"]; + return map; +} + ++ (NSDictionary *)arrayPropertyToClassMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:[GTLPlusActivityObjectAttachmentsItem class] + forKey:@"attachments"]; + return map; +} + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityProvider +// + +@implementation GTLPlusActivityProvider +@dynamic title; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityActorImage +// + +@implementation GTLPlusActivityActorImage +@dynamic url; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityActorName +// + +@implementation GTLPlusActivityActorName +@dynamic familyName, givenName; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectActor +// + +@implementation GTLPlusActivityObjectActor +@dynamic displayName, identifier, image, url; + ++ (NSDictionary *)propertyToJSONKeyMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:@"id" + forKey:@"identifier"]; + return map; +} + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectAttachmentsItem +// + +@implementation GTLPlusActivityObjectAttachmentsItem +@dynamic content, displayName, embed, fullImage, identifier, image, objectType, + thumbnails, url; + ++ (NSDictionary *)propertyToJSONKeyMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:@"id" + forKey:@"identifier"]; + return map; +} + ++ (NSDictionary *)arrayPropertyToClassMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:[GTLPlusActivityObjectAttachmentsItemThumbnailsItem class] + forKey:@"thumbnails"]; + return map; +} + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectPlusoners +// + +@implementation GTLPlusActivityObjectPlusoners +@dynamic selfLink, totalItems; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectReplies +// + +@implementation GTLPlusActivityObjectReplies +@dynamic selfLink, totalItems; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectResharers +// + +@implementation GTLPlusActivityObjectResharers +@dynamic selfLink, totalItems; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectActorImage +// + +@implementation GTLPlusActivityObjectActorImage +@dynamic url; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectAttachmentsItemEmbed +// + +@implementation GTLPlusActivityObjectAttachmentsItemEmbed +@dynamic type, url; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectAttachmentsItemFullImage +// + +@implementation GTLPlusActivityObjectAttachmentsItemFullImage +@dynamic height, type, url, width; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectAttachmentsItemImage +// + +@implementation GTLPlusActivityObjectAttachmentsItemImage +@dynamic height, type, url, width; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectAttachmentsItemThumbnailsItem +// + +@implementation GTLPlusActivityObjectAttachmentsItemThumbnailsItem +@dynamic descriptionProperty, image, url; + ++ (NSDictionary *)propertyToJSONKeyMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:@"description" + forKey:@"descriptionProperty"]; + return map; +} + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityObjectAttachmentsItemThumbnailsItemImage +// + +@implementation GTLPlusActivityObjectAttachmentsItemThumbnailsItemImage +@dynamic height, type, url, width; +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusActivityFeed.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusActivityFeed.h new file mode 100644 index 00000000..f99ca32f --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusActivityFeed.h @@ -0,0 +1,81 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusActivityFeed.h +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusActivityFeed (0 custom class methods, 9 custom properties) + +#if GTL_BUILT_AS_FRAMEWORK + #import "GTL/GTLObject.h" +#else + #import "GTLObject.h" +#endif + +@class GTLPlusActivity; + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityFeed +// + +// This class supports NSFastEnumeration over its "items" property. It also +// supports -itemAtIndex: to retrieve individual objects from "items". + +@interface GTLPlusActivityFeed : GTLCollectionObject + +// ETag of this response for caching purposes. +@property (copy) NSString *ETag; + +// The ID of this collection of activities. Deprecated. +// identifier property maps to 'id' in JSON (to avoid Objective C's 'id'). +@property (copy) NSString *identifier; + +// The activities in this page of results. +@property (retain) NSArray *items; // of GTLPlusActivity + +// Identifies this resource as a collection of activities. Value: +// "plus#activityFeed". +@property (copy) NSString *kind; + +// Link to the next page of activities. +@property (copy) NSString *nextLink; + +// The continuation token, which is used to page through large result sets. +// Provide this value in a subsequent request to return the next page of +// results. +@property (copy) NSString *nextPageToken; + +// Link to this activity resource. +@property (copy) NSString *selfLink; + +// The title of this collection of activities. +@property (copy) NSString *title; + +// The time at which this collection of activities was last updated. Formatted +// as an RFC 3339 timestamp. +@property (retain) GTLDateTime *updated; + +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusActivityFeed.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusActivityFeed.m new file mode 100644 index 00000000..a3a34e48 --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusActivityFeed.m @@ -0,0 +1,64 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusActivityFeed.m +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusActivityFeed (0 custom class methods, 9 custom properties) + +#import "GTLPlusActivityFeed.h" + +#import "GTLPlusActivity.h" + +// ---------------------------------------------------------------------------- +// +// GTLPlusActivityFeed +// + +@implementation GTLPlusActivityFeed +@dynamic ETag, identifier, items, kind, nextLink, nextPageToken, selfLink, + title, updated; + ++ (NSDictionary *)propertyToJSONKeyMap { + NSDictionary *map = + [NSDictionary dictionaryWithObjectsAndKeys: + @"etag", @"ETag", + @"id", @"identifier", + nil]; + return map; +} + ++ (NSDictionary *)arrayPropertyToClassMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:[GTLPlusActivity class] + forKey:@"items"]; + return map; +} + ++ (void)load { + [self registerObjectClassForKind:@"plus#activityFeed"]; +} + +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusComment.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusComment.h new file mode 100644 index 00000000..4698576a --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusComment.h @@ -0,0 +1,183 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusComment.h +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusComment (0 custom class methods, 11 custom properties) +// GTLPlusCommentActor (0 custom class methods, 4 custom properties) +// GTLPlusCommentInReplyToItem (0 custom class methods, 2 custom properties) +// GTLPlusCommentObject (0 custom class methods, 3 custom properties) +// GTLPlusCommentPlusoners (0 custom class methods, 1 custom properties) +// GTLPlusCommentActorImage (0 custom class methods, 1 custom properties) + +#if GTL_BUILT_AS_FRAMEWORK + #import "GTL/GTLObject.h" +#else + #import "GTLObject.h" +#endif + +@class GTLPlusCommentActor; +@class GTLPlusCommentActorImage; +@class GTLPlusCommentInReplyToItem; +@class GTLPlusCommentObject; +@class GTLPlusCommentPlusoners; + +// ---------------------------------------------------------------------------- +// +// GTLPlusComment +// + +@interface GTLPlusComment : GTLObject + +// The person who posted this comment. +@property (retain) GTLPlusCommentActor *actor; + +// ETag of this response for caching purposes. +@property (copy) NSString *ETag; + +// The ID of this comment. +// identifier property maps to 'id' in JSON (to avoid Objective C's 'id'). +@property (copy) NSString *identifier; + +// The activity this comment replied to. +@property (retain) NSArray *inReplyTo; // of GTLPlusCommentInReplyToItem + +// Identifies this resource as a comment. Value: "plus#comment". +@property (copy) NSString *kind; + +// The object of this comment. +@property (retain) GTLPlusCommentObject *object; + +// People who +1'd this comment. +@property (retain) GTLPlusCommentPlusoners *plusoners; + +// The time at which this comment was initially published. Formatted as an RFC +// 3339 timestamp. +@property (retain) GTLDateTime *published; + +// Link to this comment resource. +@property (copy) NSString *selfLink; + +// The time at which this comment was last updated. Formatted as an RFC 3339 +// timestamp. +@property (retain) GTLDateTime *updated; + +// This comment's verb, indicating what action was performed. Possible values +// are: +// - "post" - Publish content to the stream. +@property (copy) NSString *verb; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusCommentActor +// + +@interface GTLPlusCommentActor : GTLObject + +// The name of this actor, suitable for display. +@property (copy) NSString *displayName; + +// The ID of the actor. +// identifier property maps to 'id' in JSON (to avoid Objective C's 'id'). +@property (copy) NSString *identifier; + +// The image representation of this actor. +@property (retain) GTLPlusCommentActorImage *image; + +// A link to the person resource for this actor. +@property (copy) NSString *url; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusCommentInReplyToItem +// + +@interface GTLPlusCommentInReplyToItem : GTLObject + +// The ID of the activity. +// identifier property maps to 'id' in JSON (to avoid Objective C's 'id'). +@property (copy) NSString *identifier; + +// The URL of the activity. +@property (copy) NSString *url; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusCommentObject +// + +@interface GTLPlusCommentObject : GTLObject + +// The HTML-formatted content, suitable for display. +@property (copy) NSString *content; + +// The object type of this comment. Possible values are: +// - "comment" - A comment in reply to an activity. +@property (copy) NSString *objectType; + +// The content (text) as provided by the author, stored without any HTML +// formatting. When creating or updating a comment, this value must be supplied +// as plain text in the request. +@property (copy) NSString *originalContent; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusCommentPlusoners +// + +@interface GTLPlusCommentPlusoners : GTLObject + +// Total number of people who +1'd this comment. +@property (retain) NSNumber *totalItems; // unsignedIntValue + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusCommentActorImage +// + +@interface GTLPlusCommentActorImage : GTLObject + +// The URL of the actor's profile photo. To re-size the image and crop it to a +// square, append the query string ?sz=x, where x is the dimension in pixels of +// each side. +@property (copy) NSString *url; + +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusComment.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusComment.m new file mode 100644 index 00000000..3abaa26d --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusComment.m @@ -0,0 +1,133 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusComment.m +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusComment (0 custom class methods, 11 custom properties) +// GTLPlusCommentActor (0 custom class methods, 4 custom properties) +// GTLPlusCommentInReplyToItem (0 custom class methods, 2 custom properties) +// GTLPlusCommentObject (0 custom class methods, 3 custom properties) +// GTLPlusCommentPlusoners (0 custom class methods, 1 custom properties) +// GTLPlusCommentActorImage (0 custom class methods, 1 custom properties) + +#import "GTLPlusComment.h" + +// ---------------------------------------------------------------------------- +// +// GTLPlusComment +// + +@implementation GTLPlusComment +@dynamic actor, ETag, identifier, inReplyTo, kind, object, plusoners, published, + selfLink, updated, verb; + ++ (NSDictionary *)propertyToJSONKeyMap { + NSDictionary *map = + [NSDictionary dictionaryWithObjectsAndKeys: + @"etag", @"ETag", + @"id", @"identifier", + nil]; + return map; +} + ++ (NSDictionary *)arrayPropertyToClassMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:[GTLPlusCommentInReplyToItem class] + forKey:@"inReplyTo"]; + return map; +} + ++ (void)load { + [self registerObjectClassForKind:@"plus#comment"]; +} + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusCommentActor +// + +@implementation GTLPlusCommentActor +@dynamic displayName, identifier, image, url; + ++ (NSDictionary *)propertyToJSONKeyMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:@"id" + forKey:@"identifier"]; + return map; +} + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusCommentInReplyToItem +// + +@implementation GTLPlusCommentInReplyToItem +@dynamic identifier, url; + ++ (NSDictionary *)propertyToJSONKeyMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:@"id" + forKey:@"identifier"]; + return map; +} + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusCommentObject +// + +@implementation GTLPlusCommentObject +@dynamic content, objectType, originalContent; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusCommentPlusoners +// + +@implementation GTLPlusCommentPlusoners +@dynamic totalItems; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusCommentActorImage +// + +@implementation GTLPlusCommentActorImage +@dynamic url; +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusCommentFeed.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusCommentFeed.h new file mode 100644 index 00000000..74f9be5a --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusCommentFeed.h @@ -0,0 +1,78 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusCommentFeed.h +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusCommentFeed (0 custom class methods, 8 custom properties) + +#if GTL_BUILT_AS_FRAMEWORK + #import "GTL/GTLObject.h" +#else + #import "GTLObject.h" +#endif + +@class GTLPlusComment; + +// ---------------------------------------------------------------------------- +// +// GTLPlusCommentFeed +// + +// This class supports NSFastEnumeration over its "items" property. It also +// supports -itemAtIndex: to retrieve individual objects from "items". + +@interface GTLPlusCommentFeed : GTLCollectionObject + +// ETag of this response for caching purposes. +@property (copy) NSString *ETag; + +// The ID of this collection of comments. +// identifier property maps to 'id' in JSON (to avoid Objective C's 'id'). +@property (copy) NSString *identifier; + +// The comments in this page of results. +@property (retain) NSArray *items; // of GTLPlusComment + +// Identifies this resource as a collection of comments. Value: +// "plus#commentFeed". +@property (copy) NSString *kind; + +// Link to the next page of activities. +@property (copy) NSString *nextLink; + +// The continuation token, which is used to page through large result sets. +// Provide this value in a subsequent request to return the next page of +// results. +@property (copy) NSString *nextPageToken; + +// The title of this collection of comments. +@property (copy) NSString *title; + +// The time at which this collection of comments was last updated. Formatted as +// an RFC 3339 timestamp. +@property (retain) GTLDateTime *updated; + +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusCommentFeed.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusCommentFeed.m new file mode 100644 index 00000000..a8d81e6e --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusCommentFeed.m @@ -0,0 +1,63 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusCommentFeed.m +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusCommentFeed (0 custom class methods, 8 custom properties) + +#import "GTLPlusCommentFeed.h" + +#import "GTLPlusComment.h" + +// ---------------------------------------------------------------------------- +// +// GTLPlusCommentFeed +// + +@implementation GTLPlusCommentFeed +@dynamic ETag, identifier, items, kind, nextLink, nextPageToken, title, updated; + ++ (NSDictionary *)propertyToJSONKeyMap { + NSDictionary *map = + [NSDictionary dictionaryWithObjectsAndKeys: + @"etag", @"ETag", + @"id", @"identifier", + nil]; + return map; +} + ++ (NSDictionary *)arrayPropertyToClassMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:[GTLPlusComment class] + forKey:@"items"]; + return map; +} + ++ (void)load { + [self registerObjectClassForKind:@"plus#commentFeed"]; +} + +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusConstants.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusConstants.h index f4f91c55..b5e87ad7 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusConstants.h +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusConstants.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2012 Google Inc. +/* Copyright (c) 2013 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,11 +20,11 @@ // ---------------------------------------------------------------------------- // NOTE: This file is generated from Google APIs Discovery Service. // Service: -// Google+ API (plus/v1moments) +// Google+ API (plus/v1) // Description: // The Google+ API enables developers to build on top of the Google+ platform. // Documentation: -// https://developers.google.com/+/history/ +// https://developers.google.com/+/api/ #import @@ -35,10 +35,23 @@ #endif // Authorization scope +// Know your name, basic info, and list of people you're connected to on Google+ +GTL_EXTERN NSString * const kGTLAuthScopePlusLogin; // "https://www.googleapis.com/auth/plus.login" // Know who you are on Google -GTL_EXTERN NSString * const kGTLAuthScopePlusMe; // "https://www.googleapis.com/auth/plus.me" -// Send your activity to your private Google+ history -GTL_EXTERN NSString * const kGTLAuthScopePlusMomentsWrite; // "https://www.googleapis.com/auth/plus.moments.write" +GTL_EXTERN NSString * const kGTLAuthScopePlusMe; // "https://www.googleapis.com/auth/plus.me" // Collection -GTL_EXTERN NSString * const kGTLPlusCollectionVault; // "vault" +GTL_EXTERN NSString * const kGTLPlusCollectionPlusoners; // "plusoners" +GTL_EXTERN NSString * const kGTLPlusCollectionPublic; // "public" +GTL_EXTERN NSString * const kGTLPlusCollectionResharers; // "resharers" +GTL_EXTERN NSString * const kGTLPlusCollectionVault; // "vault" +GTL_EXTERN NSString * const kGTLPlusCollectionVisible; // "visible" + +// OrderBy +GTL_EXTERN NSString * const kGTLPlusOrderByAlphabetical; // "alphabetical" +GTL_EXTERN NSString * const kGTLPlusOrderByBest; // "best" +GTL_EXTERN NSString * const kGTLPlusOrderByRecent; // "recent" + +// SortOrder +GTL_EXTERN NSString * const kGTLPlusSortOrderAscending; // "ascending" +GTL_EXTERN NSString * const kGTLPlusSortOrderDescending; // "descending" diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusConstants.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusConstants.m index 28f4a30e..bb5610ff 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusConstants.m +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusConstants.m @@ -1,4 +1,4 @@ -/* Copyright (c) 2012 Google Inc. +/* Copyright (c) 2013 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,17 +20,30 @@ // ---------------------------------------------------------------------------- // NOTE: This file is generated from Google APIs Discovery Service. // Service: -// Google+ API (plus/v1moments) +// Google+ API (plus/v1) // Description: // The Google+ API enables developers to build on top of the Google+ platform. // Documentation: -// https://developers.google.com/+/history/ +// https://developers.google.com/+/api/ #import "GTLPlusConstants.h" // Authorization scope -NSString * const kGTLAuthScopePlusMe = @"https://www.googleapis.com/auth/plus.me"; -NSString * const kGTLAuthScopePlusMomentsWrite = @"https://www.googleapis.com/auth/plus.moments.write"; +NSString * const kGTLAuthScopePlusLogin = @"https://www.googleapis.com/auth/plus.login"; +NSString * const kGTLAuthScopePlusMe = @"https://www.googleapis.com/auth/plus.me"; // Collection -NSString * const kGTLPlusCollectionVault = @"vault"; +NSString * const kGTLPlusCollectionPlusoners = @"plusoners"; +NSString * const kGTLPlusCollectionPublic = @"public"; +NSString * const kGTLPlusCollectionResharers = @"resharers"; +NSString * const kGTLPlusCollectionVault = @"vault"; +NSString * const kGTLPlusCollectionVisible = @"visible"; + +// OrderBy +NSString * const kGTLPlusOrderByAlphabetical = @"alphabetical"; +NSString * const kGTLPlusOrderByBest = @"best"; +NSString * const kGTLPlusOrderByRecent = @"recent"; + +// SortOrder +NSString * const kGTLPlusSortOrderAscending = @"ascending"; +NSString * const kGTLPlusSortOrderDescending = @"descending"; diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusItemScope.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusItemScope.h index 6826f2bc..17e2b371 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusItemScope.h +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusItemScope.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2012 Google Inc. +/* Copyright (c) 2013 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,11 +20,11 @@ // ---------------------------------------------------------------------------- // NOTE: This file is generated from Google APIs Discovery Service. // Service: -// Google+ API (plus/v1moments) +// Google+ API (plus/v1) // Description: // The Google+ API enables developers to build on top of the Google+ platform. // Documentation: -// https://developers.google.com/+/history/ +// https://developers.google.com/+/api/ // Classes: // GTLPlusItemScope (0 custom class methods, 55 custom properties) diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusItemScope.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusItemScope.m index 4ae390c0..ee761503 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusItemScope.m +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusItemScope.m @@ -1,4 +1,4 @@ -/* Copyright (c) 2012 Google Inc. +/* Copyright (c) 2013 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,11 +20,11 @@ // ---------------------------------------------------------------------------- // NOTE: This file is generated from Google APIs Discovery Service. // Service: -// Google+ API (plus/v1moments) +// Google+ API (plus/v1) // Description: // The Google+ API enables developers to build on top of the Google+ platform. // Documentation: -// https://developers.google.com/+/history/ +// https://developers.google.com/+/api/ // Classes: // GTLPlusItemScope (0 custom class methods, 55 custom properties) diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusMoment.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusMoment.h index 1ab05cac..0b028c88 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusMoment.h +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusMoment.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2012 Google Inc. +/* Copyright (c) 2013 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,11 +20,11 @@ // ---------------------------------------------------------------------------- // NOTE: This file is generated from Google APIs Discovery Service. // Service: -// Google+ API (plus/v1moments) +// Google+ API (plus/v1) // Description: // The Google+ API enables developers to build on top of the Google+ platform. // Documentation: -// https://developers.google.com/+/history/ +// https://developers.google.com/+/api/ // Classes: // GTLPlusMoment (0 custom class methods, 6 custom properties) diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusMoment.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusMoment.m index 5d06e924..7785726a 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusMoment.m +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusMoment.m @@ -1,4 +1,4 @@ -/* Copyright (c) 2012 Google Inc. +/* Copyright (c) 2013 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,11 +20,11 @@ // ---------------------------------------------------------------------------- // NOTE: This file is generated from Google APIs Discovery Service. // Service: -// Google+ API (plus/v1moments) +// Google+ API (plus/v1) // Description: // The Google+ API enables developers to build on top of the Google+ platform. // Documentation: -// https://developers.google.com/+/history/ +// https://developers.google.com/+/api/ // Classes: // GTLPlusMoment (0 custom class methods, 6 custom properties) diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusMomentsFeed.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusMomentsFeed.h new file mode 100644 index 00000000..6cc8106b --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusMomentsFeed.h @@ -0,0 +1,76 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusMomentsFeed.h +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusMomentsFeed (0 custom class methods, 8 custom properties) + +#if GTL_BUILT_AS_FRAMEWORK + #import "GTL/GTLObject.h" +#else + #import "GTLObject.h" +#endif + +@class GTLPlusMoment; + +// ---------------------------------------------------------------------------- +// +// GTLPlusMomentsFeed +// + +// This class supports NSFastEnumeration over its "items" property. It also +// supports -itemAtIndex: to retrieve individual objects from "items". + +@interface GTLPlusMomentsFeed : GTLCollectionObject + +// ETag of this response for caching purposes. +@property (copy) NSString *ETag; + +// The moments in this page of results. +@property (retain) NSArray *items; // of GTLPlusMoment + +// Identifies this resource as a collection of moments. Value: +// "plus#momentsFeed". +@property (copy) NSString *kind; + +// Link to the next page of moments. +@property (copy) NSString *nextLink; + +// The continuation token, which is used to page through large result sets. +// Provide this value in a subsequent request to return the next page of +// results. +@property (copy) NSString *nextPageToken; + +// Link to this page of moments. +@property (copy) NSString *selfLink; + +// The title of this collection of moments. +@property (copy) NSString *title; + +// The RFC 339 timestamp for when this collection of moments was last updated. +@property (retain) GTLDateTime *updated; + +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusMomentsFeed.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusMomentsFeed.m new file mode 100644 index 00000000..21ff97c5 --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusMomentsFeed.m @@ -0,0 +1,61 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusMomentsFeed.m +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusMomentsFeed (0 custom class methods, 8 custom properties) + +#import "GTLPlusMomentsFeed.h" + +#import "GTLPlusMoment.h" + +// ---------------------------------------------------------------------------- +// +// GTLPlusMomentsFeed +// + +@implementation GTLPlusMomentsFeed +@dynamic ETag, items, kind, nextLink, nextPageToken, selfLink, title, updated; + ++ (NSDictionary *)propertyToJSONKeyMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:@"etag" + forKey:@"ETag"]; + return map; +} + ++ (NSDictionary *)arrayPropertyToClassMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:[GTLPlusMoment class] + forKey:@"items"]; + return map; +} + ++ (void)load { + [self registerObjectClassForKind:@"plus#momentsFeed"]; +} + +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusPeopleFeed.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusPeopleFeed.h new file mode 100644 index 00000000..523afadd --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusPeopleFeed.h @@ -0,0 +1,76 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusPeopleFeed.h +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusPeopleFeed (0 custom class methods, 7 custom properties) + +#if GTL_BUILT_AS_FRAMEWORK + #import "GTL/GTLObject.h" +#else + #import "GTLObject.h" +#endif + +@class GTLPlusPerson; + +// ---------------------------------------------------------------------------- +// +// GTLPlusPeopleFeed +// + +// This class supports NSFastEnumeration over its "items" property. It also +// supports -itemAtIndex: to retrieve individual objects from "items". + +@interface GTLPlusPeopleFeed : GTLCollectionObject + +// ETag of this response for caching purposes. +@property (copy) NSString *ETag; + +// The people in this page of results. Each item includes the id, displayName, +// image, and url for the person. To retrieve additional profile data, see the +// people.get method. +@property (retain) NSArray *items; // of GTLPlusPerson + +// Identifies this resource as a collection of people. Value: "plus#peopleFeed". +@property (copy) NSString *kind; + +// The continuation token, which is used to page through large result sets. +// Provide this value in a subsequent request to return the next page of +// results. +@property (copy) NSString *nextPageToken; + +// Link to this resource. +@property (copy) NSString *selfLink; + +// The title of this collection of people. +@property (copy) NSString *title; + +// The total number of people available in this list. The number of people in a +// response might be smaller due to paging. This might not be set for all +// collections. +@property (retain) NSNumber *totalItems; // intValue + +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusPeopleFeed.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusPeopleFeed.m new file mode 100644 index 00000000..4861f65f --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusPeopleFeed.m @@ -0,0 +1,61 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusPeopleFeed.m +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusPeopleFeed (0 custom class methods, 7 custom properties) + +#import "GTLPlusPeopleFeed.h" + +#import "GTLPlusPerson.h" + +// ---------------------------------------------------------------------------- +// +// GTLPlusPeopleFeed +// + +@implementation GTLPlusPeopleFeed +@dynamic ETag, items, kind, nextPageToken, selfLink, title, totalItems; + ++ (NSDictionary *)propertyToJSONKeyMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:@"etag" + forKey:@"ETag"]; + return map; +} + ++ (NSDictionary *)arrayPropertyToClassMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:[GTLPlusPerson class] + forKey:@"items"]; + return map; +} + ++ (void)load { + [self registerObjectClassForKind:@"plus#peopleFeed"]; +} + +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusPerson.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusPerson.h new file mode 100644 index 00000000..57ae94ed --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusPerson.h @@ -0,0 +1,388 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusPerson.h +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusPerson (0 custom class methods, 28 custom properties) +// GTLPlusPersonAgeRange (0 custom class methods, 2 custom properties) +// GTLPlusPersonCover (0 custom class methods, 3 custom properties) +// GTLPlusPersonEmailsItem (0 custom class methods, 3 custom properties) +// GTLPlusPersonImage (0 custom class methods, 1 custom properties) +// GTLPlusPersonName (0 custom class methods, 6 custom properties) +// GTLPlusPersonOrganizationsItem (0 custom class methods, 9 custom properties) +// GTLPlusPersonPlacesLivedItem (0 custom class methods, 2 custom properties) +// GTLPlusPersonUrlsItem (0 custom class methods, 3 custom properties) +// GTLPlusPersonCoverCoverInfo (0 custom class methods, 2 custom properties) +// GTLPlusPersonCoverCoverPhoto (0 custom class methods, 3 custom properties) + +#if GTL_BUILT_AS_FRAMEWORK + #import "GTL/GTLObject.h" +#else + #import "GTLObject.h" +#endif + +@class GTLPlusPersonAgeRange; +@class GTLPlusPersonCover; +@class GTLPlusPersonCoverCoverInfo; +@class GTLPlusPersonCoverCoverPhoto; +@class GTLPlusPersonEmailsItem; +@class GTLPlusPersonImage; +@class GTLPlusPersonName; +@class GTLPlusPersonOrganizationsItem; +@class GTLPlusPersonPlacesLivedItem; +@class GTLPlusPersonUrlsItem; + +// ---------------------------------------------------------------------------- +// +// GTLPlusPerson +// + +@interface GTLPlusPerson : GTLObject + +// A short biography for this person. +@property (copy) NSString *aboutMe; + +// The age range of the person. +@property (retain) GTLPlusPersonAgeRange *ageRange; + +// The person's date of birth, represented as YYYY-MM-DD. +@property (copy) NSString *birthday; + +// The "bragging rights" line of this person. +@property (copy) NSString *braggingRights; + +// If a Google+ Page and for followers who are visible, the number of people who +// have added this page to a circle. +@property (retain) NSNumber *circledByCount; // intValue + +// The cover photo content. +@property (retain) GTLPlusPersonCover *cover; + +// The current location for this person. +@property (copy) NSString *currentLocation; + +// The name of this person, suitable for display. +@property (copy) NSString *displayName; + +// A list of email addresses for this person. +@property (retain) NSArray *emails; // of GTLPlusPersonEmailsItem + +// ETag of this response for caching purposes. +@property (copy) NSString *ETag; + +// The person's gender. Possible values are: +// - "male" - Male gender. +// - "female" - Female gender. +// - "other" - Other. +@property (copy) NSString *gender; + +// If "true", indicates that the person has installed the app that is making the +// request and has chosen to expose this install state to the caller. A value of +// "false" indicates that the install state cannot be determined (it is either +// not installed or the person has chosen to keep this information private). +@property (retain) NSNumber *hasApp; // boolValue + +// The ID of this person. +// identifier property maps to 'id' in JSON (to avoid Objective C's 'id'). +@property (copy) NSString *identifier; + +// The representation of the person's profile photo. +@property (retain) GTLPlusPersonImage *image; + +// Whether this user has signed up for Google+. +@property (retain) NSNumber *isPlusUser; // boolValue + +// Identifies this resource as a person. Value: "plus#person". +@property (copy) NSString *kind; + +// The user's preferred language for rendering. +@property (copy) NSString *language; + +// An object representation of the individual components of a person's name. +@property (retain) GTLPlusPersonName *name; + +// The nickname of this person. +@property (copy) NSString *nickname; + +// Type of person within Google+. Possible values are: +// - "person" - represents an actual person. +// - "page" - represents a page. +@property (copy) NSString *objectType; + +// A list of current or past organizations with which this person is associated. +@property (retain) NSArray *organizations; // of GTLPlusPersonOrganizationsItem + +// A list of places where this person has lived. +@property (retain) NSArray *placesLived; // of GTLPlusPersonPlacesLivedItem + +// If a Google+ Page, the number of people who have +1'ed this page. +@property (retain) NSNumber *plusOneCount; // intValue + +// The person's relationship status. Possible values are: +// - "single" - Person is single. +// - "in_a_relationship" - Person is in a relationship. +// - "engaged" - Person is engaged. +// - "married" - Person is married. +// - "its_complicated" - The relationship is complicated. +// - "open_relationship" - Person is in an open relationship. +// - "widowed" - Person is widowed. +// - "in_domestic_partnership" - Person is in a domestic partnership. +// - "in_civil_union" - Person is in a civil union. +@property (copy) NSString *relationshipStatus; + +// The brief description (tagline) of this person. +@property (copy) NSString *tagline; + +// The URL of this person's profile. +@property (copy) NSString *url; + +// A list of URLs for this person. +@property (retain) NSArray *urls; // of GTLPlusPersonUrlsItem + +// Whether the person or Google+ Page has been verified. +@property (retain) NSNumber *verified; // boolValue + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonAgeRange +// + +@interface GTLPlusPersonAgeRange : GTLObject + +// The age range's upper bound, if any. +@property (retain) NSNumber *max; // intValue + +// The age range's lower bound, if any. +@property (retain) NSNumber *min; // intValue + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonCover +// + +@interface GTLPlusPersonCover : GTLObject + +// Extra information about the cover photo. +@property (retain) GTLPlusPersonCoverCoverInfo *coverInfo; + +// The person's primary cover image. +@property (retain) GTLPlusPersonCoverCoverPhoto *coverPhoto; + +// The layout of the cover art. Possible values are: +// - "banner" - One large image banner. +@property (copy) NSString *layout; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonEmailsItem +// + +@interface GTLPlusPersonEmailsItem : GTLObject + +// If "true", indicates this email address is the person's primary one. +@property (retain) NSNumber *primary; // boolValue + +// The type of address. Possible values are: +// - "home" - Home email address. +// - "work" - Work email address. +// - "other" - Other. +@property (copy) NSString *type; + +// The email address. +@property (copy) NSString *value; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonImage +// + +@interface GTLPlusPersonImage : GTLObject + +// The URL of the person's profile photo. To re-size the image and crop it to a +// square, append the query string ?sz=x, where x is the dimension in pixels of +// each side. +@property (copy) NSString *url; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonName +// + +@interface GTLPlusPersonName : GTLObject + +// The family name (last name) of this person. +@property (copy) NSString *familyName; + +// The full name of this person, including middle names, suffixes, etc. +@property (copy) NSString *formatted; + +// The given name (first name) of this person. +@property (copy) NSString *givenName; + +// The honorific prefixes (such as "Dr." or "Mrs.") for this person. +@property (copy) NSString *honorificPrefix; + +// The honorific suffixes (such as "Jr.") for this person. +@property (copy) NSString *honorificSuffix; + +// The middle name of this person. +@property (copy) NSString *middleName; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonOrganizationsItem +// + +@interface GTLPlusPersonOrganizationsItem : GTLObject + +// The department within the organization. Deprecated. +@property (copy) NSString *department; + +// A short description of the person's role in this organization. Deprecated. +// Remapped to 'descriptionProperty' to avoid NSObject's 'description'. +@property (copy) NSString *descriptionProperty; + +// The date the person left this organization. +@property (copy) NSString *endDate; + +// The location of this organization. Deprecated. +@property (copy) NSString *location; + +// The name of the organization. +@property (copy) NSString *name; + +// If "true", indicates this organization is the person's primary one (typically +// interpreted as current one). +@property (retain) NSNumber *primary; // boolValue + +// The date the person joined this organization. +@property (copy) NSString *startDate; + +// The person's job title or role within the organization. +@property (copy) NSString *title; + +// The type of organization. Possible values are: +// - "work" - Work. +// - "school" - School. +@property (copy) NSString *type; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonPlacesLivedItem +// + +@interface GTLPlusPersonPlacesLivedItem : GTLObject + +// If "true", this place of residence is this person's primary residence. +@property (retain) NSNumber *primary; // boolValue + +// A place where this person has lived. For example: "Seattle, WA", "Near +// Toronto". +@property (copy) NSString *value; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonUrlsItem +// + +@interface GTLPlusPersonUrlsItem : GTLObject + +// If "true", this URL is the person's primary URL. +@property (retain) NSNumber *primary; // boolValue + +// The type of URL. Possible values are: +// - "home" - URL for home. +// - "work" - URL for work. +// - "blog" - URL for blog. +// - "profile" - URL for profile. +// - "other" - Other. +@property (copy) NSString *type; + +// The URL value. +@property (copy) NSString *value; + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonCoverCoverInfo +// + +@interface GTLPlusPersonCoverCoverInfo : GTLObject + +// The difference between the left position of the image cover and the actual +// displayed cover image. Only valid for BANNER layout. +@property (retain) NSNumber *leftImageOffset; // intValue + +// The difference between the top position of the image cover and the actual +// displayed cover image. Only valid for BANNER layout. +@property (retain) NSNumber *topImageOffset; // intValue + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonCoverCoverPhoto +// + +@interface GTLPlusPersonCoverCoverPhoto : GTLObject + +// The height to the image. +@property (retain) NSNumber *height; // intValue + +// The url to the image. +@property (copy) NSString *url; + +// The width to the image. +@property (retain) NSNumber *width; // intValue + +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusPerson.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusPerson.m new file mode 100644 index 00000000..200434fb --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLPlusPerson.m @@ -0,0 +1,189 @@ +/* Copyright (c) 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// GTLPlusPerson.m +// + +// ---------------------------------------------------------------------------- +// NOTE: This file is generated from Google APIs Discovery Service. +// Service: +// Google+ API (plus/v1) +// Description: +// The Google+ API enables developers to build on top of the Google+ platform. +// Documentation: +// https://developers.google.com/+/api/ +// Classes: +// GTLPlusPerson (0 custom class methods, 28 custom properties) +// GTLPlusPersonAgeRange (0 custom class methods, 2 custom properties) +// GTLPlusPersonCover (0 custom class methods, 3 custom properties) +// GTLPlusPersonEmailsItem (0 custom class methods, 3 custom properties) +// GTLPlusPersonImage (0 custom class methods, 1 custom properties) +// GTLPlusPersonName (0 custom class methods, 6 custom properties) +// GTLPlusPersonOrganizationsItem (0 custom class methods, 9 custom properties) +// GTLPlusPersonPlacesLivedItem (0 custom class methods, 2 custom properties) +// GTLPlusPersonUrlsItem (0 custom class methods, 3 custom properties) +// GTLPlusPersonCoverCoverInfo (0 custom class methods, 2 custom properties) +// GTLPlusPersonCoverCoverPhoto (0 custom class methods, 3 custom properties) + +#import "GTLPlusPerson.h" + +// ---------------------------------------------------------------------------- +// +// GTLPlusPerson +// + +@implementation GTLPlusPerson +@dynamic aboutMe, ageRange, birthday, braggingRights, circledByCount, cover, + currentLocation, displayName, emails, ETag, gender, hasApp, identifier, + image, isPlusUser, kind, language, name, nickname, objectType, + organizations, placesLived, plusOneCount, relationshipStatus, tagline, + url, urls, verified; + ++ (NSDictionary *)propertyToJSONKeyMap { + NSDictionary *map = + [NSDictionary dictionaryWithObjectsAndKeys: + @"etag", @"ETag", + @"id", @"identifier", + nil]; + return map; +} + ++ (NSDictionary *)arrayPropertyToClassMap { + NSDictionary *map = + [NSDictionary dictionaryWithObjectsAndKeys: + [GTLPlusPersonEmailsItem class], @"emails", + [GTLPlusPersonOrganizationsItem class], @"organizations", + [GTLPlusPersonPlacesLivedItem class], @"placesLived", + [GTLPlusPersonUrlsItem class], @"urls", + nil]; + return map; +} + ++ (void)load { + [self registerObjectClassForKind:@"plus#person"]; +} + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonAgeRange +// + +@implementation GTLPlusPersonAgeRange +@dynamic max, min; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonCover +// + +@implementation GTLPlusPersonCover +@dynamic coverInfo, coverPhoto, layout; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonEmailsItem +// + +@implementation GTLPlusPersonEmailsItem +@dynamic primary, type, value; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonImage +// + +@implementation GTLPlusPersonImage +@dynamic url; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonName +// + +@implementation GTLPlusPersonName +@dynamic familyName, formatted, givenName, honorificPrefix, honorificSuffix, + middleName; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonOrganizationsItem +// + +@implementation GTLPlusPersonOrganizationsItem +@dynamic department, descriptionProperty, endDate, location, name, primary, + startDate, title, type; + ++ (NSDictionary *)propertyToJSONKeyMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:@"description" + forKey:@"descriptionProperty"]; + return map; +} + +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonPlacesLivedItem +// + +@implementation GTLPlusPersonPlacesLivedItem +@dynamic primary, value; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonUrlsItem +// + +@implementation GTLPlusPersonUrlsItem +@dynamic primary, type, value; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonCoverCoverInfo +// + +@implementation GTLPlusPersonCoverCoverInfo +@dynamic leftImageOffset, topImageOffset; +@end + + +// ---------------------------------------------------------------------------- +// +// GTLPlusPersonCoverCoverPhoto +// + +@implementation GTLPlusPersonCoverCoverPhoto +@dynamic height, url, width; +@end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLQueryPlus.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLQueryPlus.h index 66ac63d6..44b43109 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLQueryPlus.h +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLQueryPlus.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2012 Google Inc. +/* Copyright (c) 2013 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,13 +20,13 @@ // ---------------------------------------------------------------------------- // NOTE: This file is generated from Google APIs Discovery Service. // Service: -// Google+ API (plus/v1moments) +// Google+ API (plus/v1) // Description: // The Google+ API enables developers to build on top of the Google+ platform. // Documentation: -// https://developers.google.com/+/history/ +// https://developers.google.com/+/api/ // Classes: -// GTLQueryPlus (1 custom class methods, 4 custom properties) +// GTLQueryPlus (12 custom class methods, 15 custom properties) #if GTL_BUILT_AS_FRAMEWORK #import "GTL/GTLQuery.h" @@ -48,16 +48,123 @@ // // Method-specific parameters; see the comments below for more information. // +@property (copy) NSString *activityId; @property (copy) NSString *collection; +@property (copy) NSString *commentId; @property (assign) BOOL debug; +// identifier property maps to 'id' in JSON (to avoid Objective C's 'id'). +@property (copy) NSString *identifier; +@property (copy) NSString *language; +@property (assign) NSUInteger maxResults; +@property (copy) NSString *orderBy; +@property (copy) NSString *pageToken; +@property (copy) NSString *query; +@property (copy) NSString *sortOrder; +@property (copy) NSString *targetUrl; +@property (copy) NSString *type; @property (copy) NSString *userId; +#pragma mark - +#pragma mark "activities" methods +// These create a GTLQueryPlus object. + +// Method: plus.activities.get +// Get an activity. +// Required: +// activityId: The ID of the activity to get. +// Authorization scope(s): +// kGTLAuthScopePlusLogin +// kGTLAuthScopePlusMe +// Fetches a GTLPlusActivity. ++ (id)queryForActivitiesGetWithActivityId:(NSString *)activityId; + +// Method: plus.activities.list +// List all of the activities in the specified collection for a particular user. +// Required: +// userId: The ID of the user to get activities for. The special value "me" +// can be used to indicate the authenticated user. +// collection: The collection of activities to list. +// kGTLPlusCollectionPublic: All public activities created by the specified +// user. +// Optional: +// maxResults: The maximum number of activities to include in the response, +// which is used for paging. For any response, the actual number returned +// might be less than the specified maxResults. (1..100, default 20) +// pageToken: The continuation token, which is used to page through large +// result sets. To get the next page of results, set this parameter to the +// value of "nextPageToken" from the previous response. +// Authorization scope(s): +// kGTLAuthScopePlusLogin +// kGTLAuthScopePlusMe +// Fetches a GTLPlusActivityFeed. ++ (id)queryForActivitiesListWithUserId:(NSString *)userId + collection:(NSString *)collection; + +// Method: plus.activities.search +// Search public activities. +// Required: +// query: Full-text search query string. +// Optional: +// language: Specify the preferred language to search with. See search +// language codes for available values. (Default en-US) +// maxResults: The maximum number of activities to include in the response, +// which is used for paging. For any response, the actual number returned +// might be less than the specified maxResults. (1..20, default 10) +// orderBy: Specifies how to order search results. (Default +// kGTLPlusOrderByRecent) +// kGTLPlusOrderByBest: Sort activities by relevance to the user, most +// relevant first. +// kGTLPlusOrderByRecent: Sort activities by published date, most recent +// first. +// pageToken: The continuation token, which is used to page through large +// result sets. To get the next page of results, set this parameter to the +// value of "nextPageToken" from the previous response. This token can be of +// any length. +// Authorization scope(s): +// kGTLAuthScopePlusMe +// Fetches a GTLPlusActivityFeed. ++ (id)queryForActivitiesSearchWithQuery:(NSString *)query; + +#pragma mark - +#pragma mark "comments" methods +// These create a GTLQueryPlus object. + +// Method: plus.comments.get +// Get a comment. +// Required: +// commentId: The ID of the comment to get. +// Authorization scope(s): +// kGTLAuthScopePlusMe +// Fetches a GTLPlusComment. ++ (id)queryForCommentsGetWithCommentId:(NSString *)commentId; + +// Method: plus.comments.list +// List all of the comments for an activity. +// Required: +// activityId: The ID of the activity to get comments for. +// Optional: +// maxResults: The maximum number of comments to include in the response, +// which is used for paging. For any response, the actual number returned +// might be less than the specified maxResults. (0..500, default 20) +// pageToken: The continuation token, which is used to page through large +// result sets. To get the next page of results, set this parameter to the +// value of "nextPageToken" from the previous response. +// sortOrder: The order in which to sort the list of comments. (Default +// kGTLPlusSortOrderAscending) +// kGTLPlusSortOrderAscending: Sort oldest comments first. +// kGTLPlusSortOrderDescending: Sort newest comments first. +// Authorization scope(s): +// kGTLAuthScopePlusMe +// Fetches a GTLPlusCommentFeed. ++ (id)queryForCommentsListWithActivityId:(NSString *)activityId; + #pragma mark - #pragma mark "moments" methods // These create a GTLQueryPlus object. // Method: plus.moments.insert -// Record a user activity (e.g Bill watched a video on Youtube) +// Record a moment representing a user's activity such as making a purchase or +// commenting on a blog. // Required: // userId: The ID of the user to record activities for. The only valid values // are "me" and the ID of the authenticated user. @@ -66,11 +173,125 @@ // Optional: // debug: Return the moment as written. Should be used only for debugging. // Authorization scope(s): -// kGTLAuthScopePlusMe -// kGTLAuthScopePlusMomentsWrite +// kGTLAuthScopePlusLogin // Fetches a GTLPlusMoment. + (id)queryForMomentsInsertWithObject:(GTLPlusMoment *)object userId:(NSString *)userId collection:(NSString *)collection; +// Method: plus.moments.list +// List all of the moments for a particular user. +// Required: +// userId: The ID of the user to get moments for. The special value "me" can +// be used to indicate the authenticated user. +// collection: The collection of moments to list. +// kGTLPlusCollectionVault: All moments created by the requesting +// application for the authenticated user. +// Optional: +// maxResults: The maximum number of moments to include in the response, which +// is used for paging. For any response, the actual number returned might be +// less than the specified maxResults. (1..100, default 20) +// pageToken: The continuation token, which is used to page through large +// result sets. To get the next page of results, set this parameter to the +// value of "nextPageToken" from the previous response. +// targetUrl: Only moments containing this targetUrl will be returned. +// type: Only moments of this type will be returned. +// Authorization scope(s): +// kGTLAuthScopePlusLogin +// Fetches a GTLPlusMomentsFeed. ++ (id)queryForMomentsListWithUserId:(NSString *)userId + collection:(NSString *)collection; + +// Method: plus.moments.remove +// Delete a moment. +// Required: +// identifier: The ID of the moment to delete. +// Authorization scope(s): +// kGTLAuthScopePlusLogin ++ (id)queryForMomentsRemoveWithIdentifier:(NSString *)identifier; + +#pragma mark - +#pragma mark "people" methods +// These create a GTLQueryPlus object. + +// Method: plus.people.get +// Get a person's profile. If your app uses scope +// https://www.googleapis.com/auth/plus.login, this method is guaranteed to +// return ageRange and language. +// Required: +// userId: The ID of the person to get the profile for. The special value "me" +// can be used to indicate the authenticated user. +// Authorization scope(s): +// kGTLAuthScopePlusLogin +// kGTLAuthScopePlusMe +// Fetches a GTLPlusPerson. ++ (id)queryForPeopleGetWithUserId:(NSString *)userId; + +// Method: plus.people.list +// List all of the people in the specified collection. +// Required: +// userId: Get the collection of people for the person identified by the ID or +// use "me" to indiciated the authenticated user. +// collection: The collection of people to list. +// kGTLPlusCollectionVisible: The list of people who this user has added to +// one or more circles, limited to the circles visible to the requesting +// application. +// Optional: +// maxResults: The maximum number of people to include in the response, which +// is used for paging. For any response, the actual number returned might be +// less than the specified maxResults. (1..100, default 100) +// orderBy: The order to return people in. +// kGTLPlusOrderByAlphabetical: Order the people by their display name. +// kGTLPlusOrderByBest: Order people based on the relevence to the viewer. +// pageToken: The continuation token, which is used to page through large +// result sets. To get the next page of results, set this parameter to the +// value of "nextPageToken" from the previous response. +// Authorization scope(s): +// kGTLAuthScopePlusLogin +// Fetches a GTLPlusPeopleFeed. ++ (id)queryForPeopleListWithUserId:(NSString *)userId + collection:(NSString *)collection; + +// Method: plus.people.listByActivity +// List all of the people in the specified collection for a particular activity. +// Required: +// activityId: The ID of the activity to get the list of people for. +// collection: The collection of people to list. +// kGTLPlusCollectionPlusoners: List all people who have +1'd this +// activity. +// kGTLPlusCollectionResharers: List all people who have reshared this +// activity. +// Optional: +// maxResults: The maximum number of people to include in the response, which +// is used for paging. For any response, the actual number returned might be +// less than the specified maxResults. (1..100, default 20) +// pageToken: The continuation token, which is used to page through large +// result sets. To get the next page of results, set this parameter to the +// value of "nextPageToken" from the previous response. +// Authorization scope(s): +// kGTLAuthScopePlusMe +// Fetches a GTLPlusPeopleFeed. ++ (id)queryForPeopleListByActivityWithActivityId:(NSString *)activityId + collection:(NSString *)collection; + +// Method: plus.people.search +// Search all public profiles. +// Required: +// query: Specify a query string for full text search of public text in all +// profiles. +// Optional: +// language: Specify the preferred language to search with. See search +// language codes for available values. (Default en-US) +// maxResults: The maximum number of people to include in the response, which +// is used for paging. For any response, the actual number returned might be +// less than the specified maxResults. (1..20, default 10) +// pageToken: The continuation token, which is used to page through large +// result sets. To get the next page of results, set this parameter to the +// value of "nextPageToken" from the previous response. This token can be of +// any length. +// Authorization scope(s): +// kGTLAuthScopePlusMe +// Fetches a GTLPlusPeopleFeed. ++ (id)queryForPeopleSearchWithQuery:(NSString *)query; + @end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLQueryPlus.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLQueryPlus.m index 45b98c4f..8d2c9a98 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLQueryPlus.m +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLQueryPlus.m @@ -1,4 +1,4 @@ -/* Copyright (c) 2012 Google Inc. +/* Copyright (c) 2013 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,21 +20,87 @@ // ---------------------------------------------------------------------------- // NOTE: This file is generated from Google APIs Discovery Service. // Service: -// Google+ API (plus/v1moments) +// Google+ API (plus/v1) // Description: // The Google+ API enables developers to build on top of the Google+ platform. // Documentation: -// https://developers.google.com/+/history/ +// https://developers.google.com/+/api/ // Classes: -// GTLQueryPlus (1 custom class methods, 4 custom properties) +// GTLQueryPlus (12 custom class methods, 15 custom properties) #import "GTLQueryPlus.h" +#import "GTLPlusActivity.h" +#import "GTLPlusActivityFeed.h" +#import "GTLPlusComment.h" +#import "GTLPlusCommentFeed.h" #import "GTLPlusMoment.h" +#import "GTLPlusMomentsFeed.h" +#import "GTLPlusPeopleFeed.h" +#import "GTLPlusPerson.h" @implementation GTLQueryPlus -@dynamic collection, debug, fields, userId; +@dynamic activityId, collection, commentId, debug, fields, identifier, language, + maxResults, orderBy, pageToken, query, sortOrder, targetUrl, type, + userId; + ++ (NSDictionary *)parameterNameMap { + NSDictionary *map = + [NSDictionary dictionaryWithObject:@"id" + forKey:@"identifier"]; + return map; +} + +#pragma mark - +#pragma mark "activities" methods +// These create a GTLQueryPlus object. + ++ (id)queryForActivitiesGetWithActivityId:(NSString *)activityId { + NSString *methodName = @"plus.activities.get"; + GTLQueryPlus *query = [self queryWithMethodName:methodName]; + query.activityId = activityId; + query.expectedObjectClass = [GTLPlusActivity class]; + return query; +} + ++ (id)queryForActivitiesListWithUserId:(NSString *)userId + collection:(NSString *)collection { + NSString *methodName = @"plus.activities.list"; + GTLQueryPlus *query = [self queryWithMethodName:methodName]; + query.userId = userId; + query.collection = collection; + query.expectedObjectClass = [GTLPlusActivityFeed class]; + return query; +} + ++ (id)queryForActivitiesSearchWithQuery:(NSString *)query_param { + NSString *methodName = @"plus.activities.search"; + GTLQueryPlus *query = [self queryWithMethodName:methodName]; + query.query = query_param; + query.expectedObjectClass = [GTLPlusActivityFeed class]; + return query; +} + +#pragma mark - +#pragma mark "comments" methods +// These create a GTLQueryPlus object. + ++ (id)queryForCommentsGetWithCommentId:(NSString *)commentId { + NSString *methodName = @"plus.comments.get"; + GTLQueryPlus *query = [self queryWithMethodName:methodName]; + query.commentId = commentId; + query.expectedObjectClass = [GTLPlusComment class]; + return query; +} + ++ (id)queryForCommentsListWithActivityId:(NSString *)activityId { + NSString *methodName = @"plus.comments.list"; + GTLQueryPlus *query = [self queryWithMethodName:methodName]; + query.activityId = activityId; + query.expectedObjectClass = [GTLPlusCommentFeed class]; + return query; +} #pragma mark - #pragma mark "moments" methods @@ -56,4 +122,61 @@ return query; } ++ (id)queryForMomentsListWithUserId:(NSString *)userId + collection:(NSString *)collection { + NSString *methodName = @"plus.moments.list"; + GTLQueryPlus *query = [self queryWithMethodName:methodName]; + query.userId = userId; + query.collection = collection; + query.expectedObjectClass = [GTLPlusMomentsFeed class]; + return query; +} + ++ (id)queryForMomentsRemoveWithIdentifier:(NSString *)identifier { + NSString *methodName = @"plus.moments.remove"; + GTLQueryPlus *query = [self queryWithMethodName:methodName]; + query.identifier = identifier; + return query; +} + +#pragma mark - +#pragma mark "people" methods +// These create a GTLQueryPlus object. + ++ (id)queryForPeopleGetWithUserId:(NSString *)userId { + NSString *methodName = @"plus.people.get"; + GTLQueryPlus *query = [self queryWithMethodName:methodName]; + query.userId = userId; + query.expectedObjectClass = [GTLPlusPerson class]; + return query; +} + ++ (id)queryForPeopleListWithUserId:(NSString *)userId + collection:(NSString *)collection { + NSString *methodName = @"plus.people.list"; + GTLQueryPlus *query = [self queryWithMethodName:methodName]; + query.userId = userId; + query.collection = collection; + query.expectedObjectClass = [GTLPlusPeopleFeed class]; + return query; +} + ++ (id)queryForPeopleListByActivityWithActivityId:(NSString *)activityId + collection:(NSString *)collection { + NSString *methodName = @"plus.people.listByActivity"; + GTLQueryPlus *query = [self queryWithMethodName:methodName]; + query.activityId = activityId; + query.collection = collection; + query.expectedObjectClass = [GTLPlusPeopleFeed class]; + return query; +} + ++ (id)queryForPeopleSearchWithQuery:(NSString *)query_param { + NSString *methodName = @"plus.people.search"; + GTLQueryPlus *query = [self queryWithMethodName:methodName]; + query.query = query_param; + query.expectedObjectClass = [GTLPlusPeopleFeed class]; + return query; +} + @end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLServicePlus.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLServicePlus.h index 0ec90133..b05c4f47 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLServicePlus.h +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLServicePlus.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2012 Google Inc. +/* Copyright (c) 2013 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,11 +20,11 @@ // ---------------------------------------------------------------------------- // NOTE: This file is generated from Google APIs Discovery Service. // Service: -// Google+ API (plus/v1moments) +// Google+ API (plus/v1) // Description: // The Google+ API enables developers to build on top of the Google+ platform. // Documentation: -// https://developers.google.com/+/history/ +// https://developers.google.com/+/api/ // Classes: // GTLServicePlus (0 custom class methods, 0 custom properties) diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLServicePlus.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLServicePlus.m index e131d257..6a53d566 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLServicePlus.m +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLPlus/GTLServicePlus.m @@ -1,4 +1,4 @@ -/* Copyright (c) 2012 Google Inc. +/* Copyright (c) 2013 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,11 +20,11 @@ // ---------------------------------------------------------------------------- // NOTE: This file is generated from Google APIs Discovery Service. // Service: -// Google+ API (plus/v1moments) +// Google+ API (plus/v1) // Description: // The Google+ API enables developers to build on top of the Google+ platform. // Documentation: -// https://developers.google.com/+/history/ +// https://developers.google.com/+/api/ // Classes: // GTLServicePlus (0 custom class methods, 0 custom properties) @@ -38,8 +38,17 @@ + (NSArray *)checkClasses { NSArray *classes = [NSArray arrayWithObjects: [GTLQueryPlus class], + [GTLPlusAcl class], + [GTLPlusAclentryResource class], + [GTLPlusActivity class], + [GTLPlusActivityFeed class], + [GTLPlusComment class], + [GTLPlusCommentFeed class], [GTLPlusItemScope class], [GTLPlusMoment class], + [GTLPlusMomentsFeed class], + [GTLPlusPeopleFeed class], + [GTLPlusPerson class], nil]; return classes; } @@ -49,7 +58,7 @@ self = [super init]; if (self) { // Version from discovery. - self.apiVersion = @"v1moments"; + self.apiVersion = @"v1"; // From discovery. Where to send JSON-RPC. // Turn off prettyPrint for this service to save bandwidth (especially on diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLQuery.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLQuery.h index 7b9f8139..39d0b108 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLQuery.h +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLQuery.h @@ -116,15 +116,15 @@ #endif // methodName is the RPC method name to use. -+ (id)queryWithMethodName:(NSString *)methodName; ++ (id)queryWithMethodName:(NSString *)methodName GTL_NONNULL((1)); // methodName is the RPC method name to use. -- (id)initWithMethodName:(NSString *)method; +- (id)initWithMethodName:(NSString *)method GTL_NONNULL((1)); // If you need to set a parameter that is not listed as a property for a // query class, you can do so via this api. If you need to clear it after // setting, pass nil for obj. -- (void)setCustomParameter:(id)obj forKey:(NSString *)key; +- (void)setCustomParameter:(id)obj forKey:(NSString *)key GTL_NONNULL((2)); // Auto-generated request IDs + (NSString *)nextRequestID; diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLService.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLService.h index c2b8b991..eac1dac8 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLService.h +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLService.h @@ -160,11 +160,11 @@ typedef void *GTLServiceUploadProgressBlock; - (GTLServiceTicket *)executeQuery:(id)query delegate:(id)delegate - didFinishSelector:(SEL)finishedSelector; + didFinishSelector:(SEL)finishedSelector GTL_NONNULL((1)); #if NS_BLOCKS_AVAILABLE - (GTLServiceTicket *)executeQuery:(id)query - completionHandler:(void (^)(GTLServiceTicket *ticket, id object, NSError *error))handler; + completionHandler:(void (^)(GTLServiceTicket *ticket, id object, NSError *error))handler GTL_NONNULL((1)); #endif // Automatic page fetches @@ -231,85 +231,85 @@ typedef void *GTLServiceUploadProgressBlock; parameters:(NSDictionary *)parameters objectClass:(Class)objectClass delegate:(id)delegate - didFinishSelector:(SEL)finishedSelector; + didFinishSelector:(SEL)finishedSelector GTL_NONNULL((1)); - (GTLServiceTicket *)fetchObjectWithMethodNamed:(NSString *)methodName insertingObject:(GTLObject *)bodyObject objectClass:(Class)objectClass delegate:(id)delegate - didFinishSelector:(SEL)finishedSelector; + didFinishSelector:(SEL)finishedSelector GTL_NONNULL((1)); - (GTLServiceTicket *)fetchObjectWithMethodNamed:(NSString *)methodName parameters:(NSDictionary *)parameters insertingObject:(GTLObject *)bodyObject objectClass:(Class)objectClass delegate:(id)delegate - didFinishSelector:(SEL)finishedSelector; + didFinishSelector:(SEL)finishedSelector GTL_NONNULL((1)); #if NS_BLOCKS_AVAILABLE - (GTLServiceTicket *)fetchObjectWithMethodNamed:(NSString *)methodName parameters:(NSDictionary *)parameters objectClass:(Class)objectClass - completionHandler:(void (^)(GTLServiceTicket *ticket, id object, NSError *error))handler; + completionHandler:(void (^)(GTLServiceTicket *ticket, id object, NSError *error))handler GTL_NONNULL((1)); - (GTLServiceTicket *)fetchObjectWithMethodNamed:(NSString *)methodName insertingObject:(GTLObject *)bodyObject objectClass:(Class)objectClass - completionHandler:(void (^)(GTLServiceTicket *ticket, id object, NSError *error))handler; + completionHandler:(void (^)(GTLServiceTicket *ticket, id object, NSError *error))handler GTL_NONNULL((1)); - (GTLServiceTicket *)fetchObjectWithMethodNamed:(NSString *)methodName parameters:(NSDictionary *)parameters insertingObject:(GTLObject *)bodyObject objectClass:(Class)objectClass - completionHandler:(void (^)(GTLServiceTicket *ticket, id object, NSError *error))handler; + completionHandler:(void (^)(GTLServiceTicket *ticket, id object, NSError *error))handler GTL_NONNULL((1)); #endif #pragma mark REST Fetch Methods - (GTLServiceTicket *)fetchObjectWithURL:(NSURL *)objectURL delegate:(id)delegate - didFinishSelector:(SEL)finishedSelector; + didFinishSelector:(SEL)finishedSelector GTL_NONNULL((1)); - (GTLServiceTicket *)fetchObjectWithURL:(NSURL *)objectURL objectClass:(Class)objectClass delegate:(id)delegate - didFinishSelector:(SEL)finishedSelector; + didFinishSelector:(SEL)finishedSelector GTL_NONNULL((1)); - (GTLServiceTicket *)fetchPublicObjectWithURL:(NSURL *)objectURL objectClass:(Class)objectClass delegate:(id)delegate - didFinishSelector:(SEL)finishedSelector; + didFinishSelector:(SEL)finishedSelector GTL_NONNULL((1)); - (GTLServiceTicket *)fetchObjectByInsertingObject:(GTLObject *)bodyToPut forURL:(NSURL *)destinationURL delegate:(id)delegate - didFinishSelector:(SEL)finishedSelector; + didFinishSelector:(SEL)finishedSelector GTL_NONNULL((1,2)); - (GTLServiceTicket *)fetchObjectByUpdatingObject:(GTLObject *)bodyToPut forURL:(NSURL *)destinationURL delegate:(id)delegate - didFinishSelector:(SEL)finishedSelector; + didFinishSelector:(SEL)finishedSelector GTL_NONNULL((1,2)); - (GTLServiceTicket *)deleteResourceURL:(NSURL *)destinationURL ETag:(NSString *)etagOrNil delegate:(id)delegate - didFinishSelector:(SEL)finishedSelector; + didFinishSelector:(SEL)finishedSelector GTL_NONNULL((1)); #if NS_BLOCKS_AVAILABLE - (GTLServiceTicket *)fetchObjectWithURL:(NSURL *)objectURL - completionHandler:(void (^)(GTLServiceTicket *ticket, id object, NSError *error))handler; + completionHandler:(void (^)(GTLServiceTicket *ticket, id object, NSError *error))handler GTL_NONNULL((1)); - (GTLServiceTicket *)fetchObjectByInsertingObject:(GTLObject *)bodyToPut forURL:(NSURL *)destinationURL - completionHandler:(void (^)(GTLServiceTicket *ticket, id object, NSError *error))handler; + completionHandler:(void (^)(GTLServiceTicket *ticket, id object, NSError *error))handler GTL_NONNULL((1)); - (GTLServiceTicket *)fetchObjectByUpdatingObject:(GTLObject *)bodyToPut forURL:(NSURL *)destinationURL - completionHandler:(void (^)(GTLServiceTicket *ticket, id object, NSError *error))handler; + completionHandler:(void (^)(GTLServiceTicket *ticket, id object, NSError *error))handler GTL_NONNULL((1)); - (GTLServiceTicket *)deleteResourceURL:(NSURL *)destinationURL ETag:(NSString *)etagOrNil - completionHandler:(void (^)(GTLServiceTicket *ticket, id object, NSError *error))handler; + completionHandler:(void (^)(GTLServiceTicket *ticket, id object, NSError *error))handler GTL_NONNULL((1)); #endif #pragma mark User Properties @@ -320,8 +320,8 @@ typedef void *GTLServiceUploadProgressBlock; // // The service properties dictionary is copied to become the initial property // dictionary for each ticket. -- (void)setServiceProperty:(id)obj forKey:(NSString *)key; // pass nil obj to remove property -- (id)servicePropertyForKey:(NSString *)key; +- (void)setServiceProperty:(id)obj forKey:(NSString *)key GTL_NONNULL((2)); // pass nil obj to remove property +- (id)servicePropertyForKey:(NSString *)key GTL_NONNULL((1)); @property (nonatomic, copy) NSDictionary *serviceProperties; @@ -391,7 +391,7 @@ typedef void *GTLServiceUploadProgressBlock; // For http method, pass nil (for default GET method), POST, PUT, or DELETE - (NSMutableURLRequest *)requestForURL:(NSURL *)url ETag:(NSString *)etagOrNil - httpMethod:(NSString *)httpMethodOrNil; + httpMethod:(NSString *)httpMethodOrNil GTL_NONNULL((1)); // objectRequestForURL returns an NSMutableURLRequest for a JSON GTL object // @@ -403,7 +403,7 @@ typedef void *GTLServiceUploadProgressBlock; httpMethod:(NSString *)httpMethod isREST:(BOOL)isREST additionalHeaders:(NSDictionary *)additionalHeaders - ticket:(GTLServiceTicket *)ticket; + ticket:(GTLServiceTicket *)ticket GTL_NONNULL((1)); // The queue used for parsing JSON responses (previously this property // was called operationQueue) @@ -479,7 +479,7 @@ typedef void *GTLServiceUploadProgressBlock; - (BOOL)waitForTicket:(GTLServiceTicket *)ticket timeout:(NSTimeInterval)timeoutInSeconds fetchedObject:(GTLObject **)outObjectOrNil - error:(NSError **)outErrorOrNil; + error:(NSError **)outErrorOrNil GTL_NONNULL((1)); @end #pragma mark - @@ -555,7 +555,7 @@ typedef void *GTLServiceUploadProgressBlock; // Properties and userData are supported for client convenience. // // Property keys beginning with _ are reserved by the library. -- (void)setProperty:(id)obj forKey:(NSString *)key; // pass nil obj to remove property +- (void)setProperty:(id)obj forKey:(NSString *)key GTL_NONNULL((1)); // pass nil obj to remove property - (id)propertyForKey:(NSString *)key; @property (nonatomic, copy) NSDictionary *properties; @@ -567,7 +567,7 @@ typedef void *GTLServiceUploadProgressBlock; @property (nonatomic, retain) GTLObject *fetchedObject; @property (nonatomic, retain) id executingQuery; // Query currently being fetched by this ticket @property (nonatomic, retain) id originalQuery; // Query used to create this ticket -- (GTLQuery *)queryForRequestID:(NSString *)requestID; // Returns the query from within the batch with the given id. +- (GTLQuery *)queryForRequestID:(NSString *)requestID GTL_NONNULL((1)); // Returns the query from within the batch with the given id. @property (nonatomic, retain) NSDictionary *surrogates; diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLService.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLService.m index 78dbd27e..ad00bb1d 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLService.m +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLService.m @@ -633,7 +633,10 @@ static NSString *ETagIfPresent(GTLObject *obj) { if (bodyObject != nil) { GTL_DEBUG_ASSERT([parameters objectForKey:kBodyObjectParamKey] == nil, @"There was already something under the 'data' key?!"); - [worker setObject:[bodyObject JSON] forKey:kBodyObjectParamKey]; + NSMutableDictionary *json = [bodyObject JSON]; + if (json != nil) { + [worker setObject:json forKey:kBodyObjectParamKey]; + } } finalParams = worker; } diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLUploadParameters.h b/External/google-plus-ios-sdk/OpenSource/GTL/GTLUploadParameters.h index 9abd2758..a3c1d9dc 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLUploadParameters.h +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLUploadParameters.h @@ -52,9 +52,9 @@ @property (assign) BOOL shouldSendUploadOnly; + (GTLUploadParameters *)uploadParametersWithData:(NSData *)data - MIMEType:(NSString *)mimeType; + MIMEType:(NSString *)mimeType GTL_NONNULL((1,2)); + (GTLUploadParameters *)uploadParametersWithFileHandle:(NSFileHandle *)fileHandle - MIMEType:(NSString *)mimeType; + MIMEType:(NSString *)mimeType GTL_NONNULL((1,2)); @end diff --git a/External/google-plus-ios-sdk/OpenSource/GTL/GTLUtilities.m b/External/google-plus-ios-sdk/OpenSource/GTL/GTLUtilities.m index 56062a95..90d8e745 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTL/GTLUtilities.m +++ b/External/google-plus-ios-sdk/OpenSource/GTL/GTLUtilities.m @@ -104,7 +104,7 @@ const CFStringRef kCharsToForceEscape = CFSTR("!*'();:@&=+$,/?%#[]"); for (unsigned int idx = 0; utf8[idx] != '\0'; idx++) { - unsigned char currChar = utf8[idx]; + unsigned char currChar = (unsigned char)utf8[idx]; if (currChar < 0x20 || currChar == 0x25 || currChar > 0x7E) { if (encoded == nil) { @@ -322,19 +322,36 @@ BOOL GTL_AreBoolsEqual(BOOL b1, BOOL b2) { } NSNumber *GTL_EnsureNSNumber(NSNumber *num) { + // If the server returned a string object where we expect a number, try + // to make a number object. if ([num isKindOfClass:[NSString class]]) { - NSDecimalNumber *reallyNum; - // Force the parse to use '.' as the number seperator. - static NSLocale *usLocale = nil; - @synchronized([GTLUtilities class]) { - if (usLocale == nil) { - usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; + NSNumber *newNum; + NSString *str = (NSString *)num; + if ([str rangeOfString:@"."].location != NSNotFound) { + // This is a floating-point number. + // Force the parser to use '.' as the decimal separator. + static NSLocale *usLocale = nil; + @synchronized([GTLUtilities class]) { + if (usLocale == nil) { + usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; + } + newNum = [NSDecimalNumber decimalNumberWithString:(NSString*)num + locale:(id)usLocale]; + } + } else { + // NSDecimalNumber +decimalNumberWithString:locale: + // does not correctly create an NSNumber for large values like + // 71100000000007780. + if ([str hasPrefix:@"-"]) { + newNum = [NSNumber numberWithLongLong:[str longLongValue]]; + } else { + const char *utf8 = [str UTF8String]; + unsigned long long ull = strtoull(utf8, NULL, 10); + newNum = [NSNumber numberWithUnsignedLongLong:ull]; } - reallyNum = [NSDecimalNumber decimalNumberWithString:(NSString*)num - locale:(id)usLocale]; } - if (reallyNum != nil) { - num = reallyNum; + if (newNum) { + num = newNum; } } return num; diff --git a/External/google-plus-ios-sdk/OpenSource/GTMDefines.h b/External/google-plus-ios-sdk/OpenSource/GTMDefines.h index b970d69c..c2958487 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTMDefines.h +++ b/External/google-plus-ios-sdk/OpenSource/GTMDefines.h @@ -217,21 +217,10 @@ #define GTM_AVAILABLE_ONLY_ON_MACOS UNAVAILABLE_ATTRIBUTE #endif -// Provide a symbol to include/exclude extra code for GC support. (This mainly -// just controls the inclusion of finalize methods). +// GC was dropped by Apple, define the old constant incase anyone still keys +// off of it. #ifndef GTM_SUPPORT_GC - #if GTM_IPHONE_SDK - // iPhone never needs GC - #define GTM_SUPPORT_GC 0 - #else - // We can't find a symbol to tell if GC is supported/required, so best we - // do on Mac targets is include it if we're on 10.5 or later. - #if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - #define GTM_SUPPORT_GC 0 - #else - #define GTM_SUPPORT_GC 1 - #endif - #endif + #define GTM_SUPPORT_GC 0 #endif // To simplify support for 64bit (and Leopard in general), we provide the type @@ -352,7 +341,15 @@ #endif #ifndef GTM_NONNULL - #define GTM_NONNULL(x) __attribute__((nonnull(x))) + #if defined(__has_attribute) + #if __has_attribute(nonnull) + #define GTM_NONNULL(x) __attribute__((nonnull x)) + #else + #define GTM_NONNULL(x) + #endif + #else + #define GTM_NONNULL(x) + #endif #endif // Invalidates the initializer from which it's called. diff --git a/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetchHistory.m b/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetchHistory.m index 0bbd81d2..2c859230 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetchHistory.m +++ b/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetchHistory.m @@ -183,13 +183,13 @@ static NSString* const kGTMETagHeader = @"Etag"; - (void)removeExpiredCookies { // count backwards since we're deleting items from the array - for (NSInteger idx = [cookies_ count] - 1; idx >= 0; idx--) { + for (NSInteger idx = (NSInteger)[cookies_ count] - 1; idx >= 0; idx--) { - NSHTTPCookie *storedCookie = [cookies_ objectAtIndex:idx]; + NSHTTPCookie *storedCookie = [cookies_ objectAtIndex:(NSUInteger)idx]; NSDate *expiresDate = [storedCookie expiresDate]; if (expiresDate && [expiresDate timeIntervalSinceNow] < 0) { - [cookies_ removeObjectAtIndex:idx]; + [cookies_ removeObjectAtIndex:(NSUInteger)idx]; } } } diff --git a/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetcher.h b/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetcher.h index 3f58f3d6..e4977370 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetcher.h +++ b/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetcher.h @@ -390,6 +390,8 @@ NSString *GTMApplicationIdentifier(NSBundle *bundle); - (void)stopAuthorization; +- (void)stopAuthorizationForRequest:(NSURLRequest *)request; + - (BOOL)isAuthorizingRequest:(NSURLRequest *)request; - (BOOL)isAuthorizedRequest:(NSURLRequest *)request; @@ -472,6 +474,11 @@ NSString *GTMApplicationIdentifier(NSBundle *bundle); NSString *comment_; // comment for log NSString *log_; +#if !STRIP_GTM_FETCH_LOGGING + NSString *logRequestBody_; + NSString *logResponseBody_; + BOOL shouldDeferResponseBodyLogging_; +#endif } // Create a fetcher @@ -704,7 +711,7 @@ NSString *GTMApplicationIdentifier(NSBundle *bundle); // Comments are useful for logging @property (copy) NSString *comment; -- (void)setCommentWithFormat:(id)format, ...; +- (void)setCommentWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1, 2); // Log of request and response, if logging is enabled @property (copy) NSString *log; diff --git a/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetcher.m b/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetcher.m index 75fe3bf8..a5367831 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetcher.m +++ b/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetcher.m @@ -54,6 +54,7 @@ static NSString *const kCallbackError = @"error"; - (BOOL)beginFetchMayDelay:(BOOL)mayDelay mayAuthorize:(BOOL)mayAuthorize; - (void)failToBeginFetchWithError:(NSError *)error; +- (void)failToBeginFetchDeferWithError:(NSError *)error; #if GTM_BACKGROUND_FETCHING - (void)endBackgroundTask; @@ -72,8 +73,6 @@ static NSString *const kCallbackError = @"error"; - (void)addCookiesToRequest:(NSMutableURLRequest *)request; - (void)handleCookiesForResponse:(NSURLResponse *)response; -- (void)logNowWithError:(NSError *)error; - - (void)invokeFetchCallbacksWithData:(NSData *)data error:(NSError *)error; - (void)invokeFetchCallback:(SEL)sel @@ -205,6 +204,10 @@ static NSString *const kCallbackError = @"error"; [retryTimer_ release]; [comment_ release]; [log_ release]; +#if !STRIP_GTM_FETCH_LOGGING + [logRequestBody_ release]; + [logResponseBody_ release]; +#endif [super dealloc]; } @@ -241,8 +244,8 @@ static NSString *const kCallbackError = @"error"; goto CannotBeginFetch; } - if (request_ == nil) { - NSAssert(request_ != nil, @"beginFetchWithDelegate requires a request"); + if (request_ == nil || [request_ URL] == nil) { + NSAssert(request_ != nil, @"beginFetchWithDelegate requires a request with a URL"); goto CannotBeginFetch; } @@ -407,10 +410,28 @@ static NSString *const kCallbackError = @"error"; return YES; CannotBeginFetch: - [self failToBeginFetchWithError:error]; + [self failToBeginFetchDeferWithError:error]; return NO; } +- (void)failToBeginFetchDeferWithError:(NSError *)error { + if (delegateQueue_) { + // Deferring will happen by the callback being invoked on the specified + // queue. + [self failToBeginFetchWithError:error]; + } else { + // No delegate queue has been specified, so put the callback + // on an appropriate run loop. + NSArray *modes = (runLoopModes_ ? runLoopModes_ : + [NSArray arrayWithObject:NSRunLoopCommonModes]); + [self performSelector:@selector(failToBeginFetchWithError:) + onThread:[NSThread currentThread] + withObject:error + waitUntilDone:NO + modes:modes]; + } +} + - (void)failToBeginFetchWithError:(NSError *)error { if (error == nil) { error = [NSError errorWithDomain:kGTMHTTPFetcherErrorDomain @@ -438,14 +459,13 @@ CannotBeginFetch: #if GTM_BACKGROUND_FETCHING - (void)backgroundFetchExpired { + // On background expiration, we stop the fetch and invoke the callbacks + NSError *error = [NSError errorWithDomain:kGTMHTTPFetcherErrorDomain + code:kGTMHTTPFetcherErrorBackgroundExpiration + userInfo:nil]; + [self invokeFetchCallbacksOnDelegateQueueWithData:nil + error:error]; @synchronized(self) { - // On background expiration, we stop the fetch and invoke the callbacks - NSError *error = [NSError errorWithDomain:kGTMHTTPFetcherErrorDomain - code:kGTMHTTPFetcherErrorBackgroundExpiration - userInfo:nil]; - [self invokeFetchCallbacksOnDelegateQueueWithData:nil - error:error]; - // Stopping the fetch here will indirectly call endBackgroundTask [self stopFetchReleasingCallbacks:NO]; @@ -455,14 +475,16 @@ CannotBeginFetch: } - (void)endBackgroundTask { - // Whenever the connection stops or background execution expires, - // we need to tell UIApplication we're done - if (backgroundTaskIdentifer_) { - // If backgroundTaskIdentifer_ is non-zero, we know we're on iOS 4 - UIApplication *app = [UIApplication sharedApplication]; - [app endBackgroundTask:backgroundTaskIdentifer_]; + @synchronized(self) { + // Whenever the connection stops or background execution expires, + // we need to tell UIApplication we're done + if (backgroundTaskIdentifer_) { + // If backgroundTaskIdentifer_ is non-zero, we know we're on iOS 4 + UIApplication *app = [UIApplication sharedApplication]; + [app endBackgroundTask:backgroundTaskIdentifer_]; - backgroundTaskIdentifer_ = 0; + backgroundTaskIdentifer_ = 0; + } } } #endif // GTM_BACKGROUND_FETCHING @@ -491,7 +513,7 @@ CannotBeginFetch: finishedWithError:(NSError *)error { if (error != nil) { // We can't fetch without authorization - [self failToBeginFetchWithError:error]; + [self failToBeginFetchDeferWithError:error]; } else { [self beginFetchMayDelay:NO mayAuthorize:NO]; @@ -625,6 +647,8 @@ CannotBeginFetch: // Cancel the fetch of the URL that's currently in progress. - (void)stopFetchReleasingCallbacks:(BOOL)shouldReleaseCallbacks { + id service; + // if the connection or the retry timer is all that's retaining the fetcher, // we want to be sure this instance survives stopping at least long enough for // the stack to unwind @@ -632,39 +656,45 @@ CannotBeginFetch: [self destroyRetryTimer]; - if (connection_) { - // in case cancelling the connection calls this recursively, we want - // to ensure that we'll only release the connection and delegate once, - // so first set connection_ to nil - NSURLConnection* oldConnection = connection_; - connection_ = nil; + @synchronized(self) { + service = [[service_ retain] autorelease]; - if (!hasConnectionEnded_) { - [oldConnection cancel]; + if (connection_) { + // in case cancelling the connection calls this recursively, we want + // to ensure that we'll only release the connection and delegate once, + // so first set connection_ to nil + NSURLConnection* oldConnection = connection_; + connection_ = nil; + + if (!hasConnectionEnded_) { + [oldConnection cancel]; + } + + // this may be called in a callback from the connection, so use autorelease + [oldConnection autorelease]; } - - // this may be called in a callback from the connection, so use autorelease - [oldConnection autorelease]; } // send the stopped notification [self sendStopNotificationIfNeeded]; - [authorizer_ stopAuthorization]; + @synchronized(self) { + [authorizer_ stopAuthorizationForRequest:request_]; - if (shouldReleaseCallbacks) { - [self releaseCallbacks]; + if (shouldReleaseCallbacks) { + [self releaseCallbacks]; - self.authorizer = nil; + self.authorizer = nil; + } + + if (temporaryDownloadPath_) { + [[NSFileManager defaultManager] removeItemAtPath:temporaryDownloadPath_ + error:NULL]; + self.temporaryDownloadPath = nil; + } } - [service_ fetcherDidStop:self]; - - if (temporaryDownloadPath_) { - [[NSFileManager defaultManager] removeItemAtPath:temporaryDownloadPath_ - error:NULL]; - self.temporaryDownloadPath = nil; - } + [service fetcherDidStop:self]; #if GTM_BACKGROUND_FETCHING [self endBackgroundTask]; @@ -673,15 +703,19 @@ CannotBeginFetch: // External stop method - (void)stopFetching { - @synchronized(self) { - [self stopFetchReleasingCallbacks:YES]; - } + [self stopFetchReleasingCallbacks:YES]; } - (void)sendStopNotificationIfNeeded { - if (isStopNotificationNeeded_) { - isStopNotificationNeeded_ = NO; + BOOL sendNow = NO; + @synchronized(self) { + if (isStopNotificationNeeded_) { + isStopNotificationNeeded_ = NO; + sendNow = YES; + } + } + if (sendNow) { NSNotificationCenter *defaultNC = [NSNotificationCenter defaultCenter]; [defaultNC postNotificationName:kGTMHTTPFetcherStoppedNotification object:self]; @@ -895,16 +929,28 @@ didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { - (void)invokeFetchCallbacksWithData:(NSData *)data error:(NSError *)error { + // To avoid deadlocks, this should not be called inside of @synchronized(self) + id target; + SEL sel; +#if NS_BLOCKS_AVAILABLE + void (^block)(NSData *, NSError *); +#endif + @synchronized(self) { + target = delegate_; + sel = finishedSel_; + block = completionBlock_; + } + [[self retain] autorelease]; // In case the callback releases us - [self invokeFetchCallback:finishedSel_ - target:delegate_ + [self invokeFetchCallback:sel + target:target data:data error:error]; #if NS_BLOCKS_AVAILABLE - if (completionBlock_) { - completionBlock_(data, error); + if (block) { + block(data, error); } #endif } @@ -1064,42 +1110,56 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite { // and copy the cached data. // // For other errors or if there's no cached data, just return the actual status. -- (NSInteger)statusAfterHandlingNotModifiedError { - - NSInteger status = [self statusCode]; - if (status == kGTMHTTPFetcherStatusNotModified +- (NSData *)cachedDataForStatus { + if ([self statusCode] == kGTMHTTPFetcherStatusNotModified && [fetchHistory_ shouldCacheETaggedData]) { - NSData *cachedData = [fetchHistory_ cachedDataForRequest:request_]; - if (cachedData) { - // Forge the status to pass on to the delegate - status = 200; + return cachedData; + } + return nil; +} - // Copy our stored data - if (downloadFileHandle_ != nil) { - @try { - // Downloading to a file handle won't save to the cache (the data is - // likely inappropriately large for caching), but will still read from - // the cache, on the unlikely chance that the response was Not Modified - // and the URL response was indeed present in the cache. - [downloadFileHandle_ truncateFileAtOffset:0]; - [downloadFileHandle_ writeData:cachedData]; - downloadedLength_ = [downloadFileHandle_ offsetInFile]; - } - @catch (NSException *) { - // Failed to write data, likely due to lack of disk space - status = kGTMHTTPFetcherErrorFileHandleException; - } - } else { - [downloadedData_ setData:cachedData]; - downloadedLength_ = [cachedData length]; +- (NSInteger)statusAfterHandlingNotModifiedError { + NSInteger status = [self statusCode]; + NSData *cachedData = [self cachedDataForStatus]; + if (cachedData) { + // Forge the status to pass on to the delegate + status = 200; + + // Copy our stored data + if (downloadFileHandle_ != nil) { + @try { + // Downloading to a file handle won't save to the cache (the data is + // likely inappropriately large for caching), but will still read from + // the cache, on the unlikely chance that the response was Not Modified + // and the URL response was indeed present in the cache. + [downloadFileHandle_ truncateFileAtOffset:0]; + [downloadFileHandle_ writeData:cachedData]; + downloadedLength_ = [downloadFileHandle_ offsetInFile]; } + @catch (NSException *) { + // Failed to write data, likely due to lack of disk space + status = kGTMHTTPFetcherErrorFileHandleException; + } + } else { + [downloadedData_ setData:cachedData]; + downloadedLength_ = [cachedData length]; } } return status; } - (void)connectionDidFinishLoading:(NSURLConnection *)connection { + BOOL shouldStopFetching = YES; + BOOL shouldSendStopNotification = NO; + NSError *error = nil; + NSData *downloadedData; +#if !STRIP_GTM_FETCH_LOGGING + BOOL shouldDeferLogging = NO; +#endif + BOOL shouldBeginRetryTimer = NO; + BOOL hasLogged = NO; + @synchronized(self) { // We no longer need to cancel the connection hasConnectionEnded_ = YES; @@ -1115,21 +1175,15 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite { [[self retain] autorelease]; // in case the callback releases us - [self logNowWithError:nil]; + NSInteger status = [self statusCode]; + if ([self cachedDataForStatus] != nil) { + // Log the pre-cache response. + [self logNowWithError:nil]; + hasLogged = YES; + status = [self statusAfterHandlingNotModifiedError]; + } - NSInteger status = [self statusAfterHandlingNotModifiedError]; - - // We want to send the stop notification before calling the delegate's - // callback selector, since the callback selector may release all of - // the fetcher properties that the client is using to track the fetches. - // - // We'll also stop now so that, to any observers watching the notifications, - // it doesn't look like our wait for a retry (which may be long, - // 30 seconds or more) is part of the network activity. - [self sendStopNotificationIfNeeded]; - - BOOL shouldStopFetching = YES; - NSError *error = nil; + shouldSendStopNotification = YES; if (status >= 0 && status < 300) { // success @@ -1149,10 +1203,15 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite { } } } else { + // unsuccessful + if (!hasLogged) { + [self logNowWithError:nil]; + hasLogged = YES; + } // Status over 300; retry or notify the delegate of failure if ([self shouldRetryNowForStatus:status error:nil]) { // retrying - [self beginRetryTimer]; + shouldBeginRetryTimer = YES; shouldStopFetching = NO; } else { NSDictionary *userInfo = nil; @@ -1165,14 +1224,42 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite { userInfo:userInfo]; } } + downloadedData = downloadedData_; +#if !STRIP_GTM_FETCH_LOGGING + shouldDeferLogging = shouldDeferResponseBodyLogging_; +#endif + } - if (shouldStopFetching) { - // Call the callbacks - [self invokeFetchCallbacksWithData:downloadedData_ - error:error]; + if (shouldBeginRetryTimer) { + [self beginRetryTimer]; + } - BOOL shouldRelease = [self shouldReleaseCallbacksUponCompletion]; - [self stopFetchReleasingCallbacks:shouldRelease]; + if (shouldSendStopNotification) { + // We want to send the stop notification before calling the delegate's + // callback selector, since the callback selector may release all of + // the fetcher properties that the client is using to track the fetches. + // + // We'll also stop now so that, to any observers watching the notifications, + // it doesn't look like our wait for a retry (which may be long, + // 30 seconds or more) is part of the network activity. + [self sendStopNotificationIfNeeded]; + } + + if (shouldStopFetching) { + // Call the callbacks (outside of the @synchronized to avoid deadlocks.) + [self invokeFetchCallbacksWithData:downloadedData + error:error]; + BOOL shouldRelease = [self shouldReleaseCallbacksUponCompletion]; + [self stopFetchReleasingCallbacks:shouldRelease]; + } + + @synchronized(self) { + BOOL shouldLogNow = !hasLogged; +#if !STRIP_GTM_FETCH_LOGGING + if (shouldDeferLogging) shouldLogNow = NO; +#endif + if (shouldLogNow) { + [self logNowWithError:nil]; } } } @@ -1198,24 +1285,21 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite { hasConnectionEnded_ = YES; [self logNowWithError:error]; + } - // See comment about sendStopNotificationIfNeeded - // in connectionDidFinishLoading: - [self sendStopNotificationIfNeeded]; + // See comment about sendStopNotificationIfNeeded + // in connectionDidFinishLoading: + [self sendStopNotificationIfNeeded]; - if ([self shouldRetryNowForStatus:0 error:error]) { + if ([self shouldRetryNowForStatus:0 error:error]) { + [self beginRetryTimer]; + } else { + [[self retain] autorelease]; // in case the callback releases us - [self beginRetryTimer]; + [self invokeFetchCallbacksWithData:nil + error:error]; - } else { - - [[self retain] autorelease]; // in case the callback releases us - - [self invokeFetchCallbacksWithData:nil - error:error]; - - [self stopFetchReleasingCallbacks:YES]; - } + [self stopFetchReleasingCallbacks:YES]; } } @@ -1333,43 +1417,44 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite { waitUntilDone:NO]; return; } - - NSTimeInterval nextInterval = [self nextRetryInterval]; - NSTimeInterval maxInterval = [self maxRetryInterval]; - - NSTimeInterval newInterval = MIN(nextInterval, maxInterval); - - [self primeRetryTimerWithNewTimeInterval:newInterval]; } + + NSTimeInterval nextInterval = [self nextRetryInterval]; + NSTimeInterval maxInterval = [self maxRetryInterval]; + NSTimeInterval newInterval = MIN(nextInterval, maxInterval); + + [self primeRetryTimerWithNewTimeInterval:newInterval]; + + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc postNotificationName:kGTMHTTPFetcherRetryDelayStartedNotification + object:self]; } - (void)primeRetryTimerWithNewTimeInterval:(NSTimeInterval)secs { [self destroyRetryTimer]; - lastRetryInterval_ = secs; + @synchronized(self) { + lastRetryInterval_ = secs; - retryTimer_ = [NSTimer timerWithTimeInterval:secs - target:self - selector:@selector(retryTimerFired:) - userInfo:nil - repeats:NO]; - [retryTimer_ retain]; + retryTimer_ = [NSTimer timerWithTimeInterval:secs + target:self + selector:@selector(retryTimerFired:) + userInfo:nil + repeats:NO]; + [retryTimer_ retain]; - NSRunLoop *timerRL = (self.delegateQueue ? - [NSRunLoop mainRunLoop] : [NSRunLoop currentRunLoop]); - [timerRL addTimer:retryTimer_ - forMode:NSDefaultRunLoopMode]; - - NSNotificationCenter *defaultNC = [NSNotificationCenter defaultCenter]; - [defaultNC postNotificationName:kGTMHTTPFetcherRetryDelayStartedNotification - object:self]; + NSRunLoop *timerRL = (self.delegateQueue ? + [NSRunLoop mainRunLoop] : [NSRunLoop currentRunLoop]); + [timerRL addTimer:retryTimer_ + forMode:NSDefaultRunLoopMode]; + } } - (void)retryTimerFired:(NSTimer *)timer { - @synchronized(self) { - [self destroyRetryTimer]; + [self destroyRetryTimer]; + @synchronized(self) { retryCount_++; [self retryFetch]; @@ -1377,11 +1462,17 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite { } - (void)destroyRetryTimer { - if (retryTimer_) { - [retryTimer_ invalidate]; - [retryTimer_ autorelease]; - retryTimer_ = nil; + BOOL shouldNotify = NO; + @synchronized(self) { + if (retryTimer_) { + [retryTimer_ invalidate]; + [retryTimer_ autorelease]; + retryTimer_ = nil; + shouldNotify = YES; + } + } + if (shouldNotify) { NSNotificationCenter *defaultNC = [NSNotificationCenter defaultCenter]; [defaultNC postNotificationName:kGTMHTTPFetcherRetryDelayStoppedNotification object:self]; @@ -1575,42 +1666,56 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite { } - (id)userData { - return userData_; + @synchronized(self) { + return userData_; + } } - (void)setUserData:(id)theObj { - [userData_ autorelease]; - userData_ = [theObj retain]; + @synchronized(self) { + [userData_ autorelease]; + userData_ = [theObj retain]; + } } - (void)setProperties:(NSMutableDictionary *)dict { - [properties_ autorelease]; + @synchronized(self) { + [properties_ autorelease]; - // This copies rather than retains the parameter for compatiblity with - // an earlier version that took an immutable parameter and copied it. - properties_ = [dict mutableCopy]; + // This copies rather than retains the parameter for compatiblity with + // an earlier version that took an immutable parameter and copied it. + properties_ = [dict mutableCopy]; + } } - (NSMutableDictionary *)properties { - return properties_; + @synchronized(self) { + return properties_; + } } - (void)setProperty:(id)obj forKey:(NSString *)key { - if (properties_ == nil && obj != nil) { - [self setProperties:[NSMutableDictionary dictionary]]; + @synchronized(self) { + if (properties_ == nil && obj != nil) { + [self setProperties:[NSMutableDictionary dictionary]]; + } + [properties_ setValue:obj forKey:key]; } - [properties_ setValue:obj forKey:key]; } - (id)propertyForKey:(NSString *)key { - return [properties_ objectForKey:key]; + @synchronized(self) { + return [properties_ objectForKey:key]; + } } - (void)addPropertiesFromDictionary:(NSDictionary *)dict { - if (properties_ == nil && dict != nil) { - [self setProperties:[[dict mutableCopy] autorelease]]; - } else { - [properties_ addEntriesFromDictionary:dict]; + @synchronized(self) { + if (properties_ == nil && dict != nil) { + [self setProperties:[[dict mutableCopy] autorelease]]; + } else { + [properties_ addEntriesFromDictionary:dict]; + } } } @@ -1620,6 +1725,7 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite { if (format) { va_list argList; va_start(argList, format); + result = [[[NSString alloc] initWithFormat:format arguments:argList] autorelease]; va_end(argList); diff --git a/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetcherLogging.h b/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetcherLogging.h index eb259751..d1dacdf3 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetcherLogging.h +++ b/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetcherLogging.h @@ -80,6 +80,19 @@ // internal; called by fetcher - (void)logFetchWithError:(NSError *)error; - (BOOL)logCapturePostStream; + +// Applications may provide alternative body strings to be displayed in the +// log, such as for binary requests or responses. If deferring is turned +// on, the response log will not be sent until deferring is turned off, +// allowing the application to write the response body after the response +// data has been parsed. +- (void)setLogRequestBody:(NSString *)bodyString; +- (NSString *)logRequestBody; +- (void)setLogResponseBody:(NSString *)bodyString; +- (NSString *)logResponseBody; +- (void)setShouldDeferResponseBodyLogging:(BOOL)flag; +- (BOOL)shouldDeferResponseBodyLogging; + @end -#endif +#endif // !STRIP_GTM_FETCH_LOGGING diff --git a/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetcherLogging.m b/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetcherLogging.m index 84387ca6..d583c09d 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetcherLogging.m +++ b/External/google-plus-ios-sdk/OpenSource/GTMHTTPFetcherLogging.m @@ -294,6 +294,51 @@ static NSString* gLoggingProcessName = nil; } } +- (void)setLogRequestBody:(NSString *)bodyString { + @synchronized(self) { + [logRequestBody_ release]; + logRequestBody_ = [bodyString copy]; + } +} + +- (NSString *)logRequestBody { + @synchronized(self) { + return logRequestBody_; + } +} + +- (void)setLogResponseBody:(NSString *)bodyString { + @synchronized(self) { + [logResponseBody_ release]; + logResponseBody_ = [bodyString copy]; + } +} + +- (NSString *)logResponseBody { + @synchronized(self) { + return logResponseBody_; + } +} + +- (void)setShouldDeferResponseBodyLogging:(BOOL)flag { + @synchronized(self) { + if (flag != shouldDeferResponseBodyLogging_) { + shouldDeferResponseBodyLogging_ = flag; + if (!flag) { + [self performSelectorOnMainThread:@selector(logFetchWithError:) + withObject:nil + waitUntilDone:NO]; + } + } + } +} + +- (BOOL)shouldDeferResponseBodyLogging { + @synchronized(self) { + return shouldDeferResponseBodyLogging_; + } +} + // stringFromStreamData creates a string given the supplied data // // If NSString can create a UTF-8 string from the data, then that is returned. @@ -528,16 +573,16 @@ static NSString* gLoggingProcessName = nil; // write the date & time, the comment, and the link to the plain-text // (copyable) log - NSString *dateLineFormat = @"%@      "; + NSString *const dateLineFormat = @"%@      "; [outputHTML appendFormat:dateLineFormat, [NSDate date]]; NSString *comment = [self comment]; if (comment) { - NSString *commentFormat = @"%@      "; + NSString *const commentFormat = @"%@      "; [outputHTML appendFormat:commentFormat, comment]; } - NSString *reqRespFormat = @"request/response log
"; + NSString *const reqRespFormat = @"
request/response log
"; [outputHTML appendFormat:reqRespFormat, copyableFileName]; // write the request URL @@ -601,22 +646,28 @@ static NSString* gLoggingProcessName = nil; [outputHTML appendFormat:@"   data: %d bytes, %@
\n", (int)postDataLength, postType ? postType : @""]; - postDataStr = [self stringFromStreamData:postData - contentType:postType]; - if (postDataStr) { - // remove OAuth 2 client secret and refresh token - postDataStr = [[self class] snipSubstringOfString:postDataStr - betweenStartString:@"client_secret=" - endString:@"&"]; + if (logRequestBody_) { + postDataStr = [[logRequestBody_ copy] autorelease]; + [logRequestBody_ release]; + logRequestBody_ = nil; + } else { + postDataStr = [self stringFromStreamData:postData + contentType:postType]; + if (postDataStr) { + // remove OAuth 2 client secret and refresh token + postDataStr = [[self class] snipSubstringOfString:postDataStr + betweenStartString:@"client_secret=" + endString:@"&"]; - postDataStr = [[self class] snipSubstringOfString:postDataStr - betweenStartString:@"refresh_token=" - endString:@"&"]; + postDataStr = [[self class] snipSubstringOfString:postDataStr + betweenStartString:@"refresh_token=" + endString:@"&"]; - // remove ClientLogin password - postDataStr = [[self class] snipSubstringOfString:postDataStr - betweenStartString:@"&Passwd=" - endString:@"&"]; + // remove ClientLogin password + postDataStr = [[self class] snipSubstringOfString:postDataStr + betweenStartString:@"&Passwd=" + endString:@"&"]; + } } } else { // no post data @@ -637,7 +688,7 @@ static NSString* gLoggingProcessName = nil; NSString *jsonCode = [[jsonError valueForKey:@"code"] description]; NSString *jsonMessage = [jsonError valueForKey:@"message"]; if (jsonCode || jsonMessage) { - NSString *jsonErrFmt = @"   JSON error: JSON error: %@ %@  ⚑"; // 2691 = ⚑ statusString = [statusString stringByAppendingFormat:jsonErrFmt, jsonCode ? jsonCode : @"", @@ -648,7 +699,7 @@ static NSString* gLoggingProcessName = nil; } else { // purple for anything other than 200 or 201 NSString *flag = (status >= 400 ? @" ⚑" : @""); // 2691 = ⚑ - NSString *statusFormat = @"%ld %@"; + NSString *const statusFormat = @"%ld %@"; statusString = [NSString stringWithFormat:statusFormat, (long)status, flag]; } @@ -659,7 +710,7 @@ static NSString* gLoggingProcessName = nil; NSURL *responseURL = [response URL]; if (responseURL && ![responseURL isEqual:[request URL]]) { - NSString *responseURLFormat = @"response URL:" + NSString *const responseURLFormat = @"response URL:" " %@
\n"; responseURLStr = [NSString stringWithFormat:responseURLFormat, [responseURL absoluteString]]; @@ -700,13 +751,13 @@ static NSString* gLoggingProcessName = nil; // Make a small inline image that links to the full image file [outputHTML appendFormat:@"   data: %d bytes, %@
", (int)responseDataLength, responseMIMEType]; - NSString *fmt = @"imageimage\n"; [outputHTML appendFormat:fmt, escapedResponseFile, escapedResponseFile]; } else { // The response data was XML; link to the xml file - NSString *fmt = @"   data: %d bytes, " + NSString *const fmt = @"   data: %d bytes, " "%@   %@\n"; [outputHTML appendFormat:fmt, (int)responseDataLength, responseMIMEType, @@ -747,6 +798,11 @@ static NSString* gLoggingProcessName = nil; [copyable appendFormat:@"Response body: (%u bytes)\n", (unsigned int) responseDataLength]; if (responseDataLength > 0) { + if (logResponseBody_) { + responseDataStr = [[logResponseBody_ copy] autorelease]; + [logResponseBody_ release]; + logResponseBody_ = nil; + } if (responseDataStr != nil) { [copyable appendFormat:@"%@\n", responseDataStr]; } else if (status >= 400 && [temporaryDownloadPath_ length] > 0) { diff --git a/External/google-plus-ios-sdk/OpenSource/GTMMethodCheck.m b/External/google-plus-ios-sdk/OpenSource/GTMMethodCheck.m index bbf2cf47..650d255f 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTMMethodCheck.m +++ b/External/google-plus-ios-sdk/OpenSource/GTMMethodCheck.m @@ -47,8 +47,11 @@ static BOOL ConformsToNSObjectProtocol(Class cls) { || (strncmp(className, "__NS", 4) == 0) || (strcmp(className, "CFObject") == 0) || (strcmp(className, "__IncompleteProtocol") == 0) + || (strcmp(className, "__ARCLite__") == 0) + || (strcmp(className, "WebMIMETypeRegistry") == 0) #if GTM_IPHONE_SDK || (strcmp(className, "Object") == 0) + || (strcmp(className, "UIKeyboardCandidateUtilities") == 0) #endif ) { return YES; @@ -80,14 +83,18 @@ void GTMMethodCheckMethodChecker(void) { // Run through all the classes looking for class methods that are // prefixed with xxGMMethodCheckMethod. If it finds one, it calls it. // See GTMMethodCheck.h to see what it does. +#if !defined(__has_feature) || !__has_feature(objc_arc) NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; +#else + @autoreleasepool { +#endif int numClasses = 0; int newNumClasses = objc_getClassList(NULL, 0); int i; Class *classes = NULL; while (numClasses < newNumClasses) { numClasses = newNumClasses; - classes = realloc(classes, sizeof(Class) * numClasses); + classes = (Class *)realloc(classes, sizeof(Class) * numClasses); _GTMDevAssert(classes, @"Unable to allocate memory for classes"); newNumClasses = objc_getClassList(classes, numClasses); } @@ -157,7 +164,11 @@ void GTMMethodCheckMethodChecker(void) { free(methods); } free(classes); +#if !defined(__has_feature) || !__has_feature(objc_arc) [pool drain]; +#else + } // @autoreleasepool +#endif } #endif // DEBUG diff --git a/External/google-plus-ios-sdk/OpenSource/GTMOAuth2Authentication.h b/External/google-plus-ios-sdk/OpenSource/GTMOAuth2Authentication.h index 50fd188d..8a7155a3 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTMOAuth2Authentication.h +++ b/External/google-plus-ios-sdk/OpenSource/GTMOAuth2Authentication.h @@ -149,6 +149,7 @@ _EXTERN NSString* const kGTMOAuth2NetworkFound _INITIALIZE_AS(@"kGTMOAuth @property (retain) NSString *scope; @property (retain) NSString *tokenType; @property (retain) NSString *assertion; +@property (retain) NSString *refreshScope; // Apps may optionally add parameters here to be provided to the token // endpoint on token requests and refreshes @@ -176,6 +177,9 @@ _EXTERN NSString* const kGTMOAuth2NetworkFound _INITIALIZE_AS(@"kGTMOAuth // with the authorizing service. @property (copy) NSString *serviceProvider; +// User ID; not used for authentication +@property (retain) NSString *userID; + // User email and verified status; not used for authentication // // The verified string can be checked with -boolValue. If the result is false, @@ -184,8 +188,8 @@ _EXTERN NSString* const kGTMOAuth2NetworkFound _INITIALIZE_AS(@"kGTMOAuth @property (retain) NSString *userEmail; @property (retain) NSString *userEmailIsVerified; -// Property indicating if this auth has a refresh token so is suitable for -// authorizing a request. This does not guarantee that the token is valid. +// Property indicating if this auth has a refresh or access token so is suitable +// for authorizing a request. This does not guarantee that the token is valid. @property (readonly) BOOL canAuthorize; // Property indicating if this object will authorize plain http request @@ -273,9 +277,13 @@ _EXTERN NSString* const kGTMOAuth2NetworkFound _INITIALIZE_AS(@"kGTMOAuth // Check if a request appears to be authorized - (BOOL)isAuthorizedRequest:(NSURLRequest *)request; -// Stop any pending refresh fetch +// Stop any pending refresh fetch. This will also cancel the authorization +// for all fetch requests pending authorization. - (void)stopAuthorization; +// Prevents authorization callback for a given request. +- (void)stopAuthorizationForRequest:(NSURLRequest *)request; + // OAuth fetch user-agent header value - (NSString *)userAgent; diff --git a/External/google-plus-ios-sdk/OpenSource/GTMOAuth2Authentication.m b/External/google-plus-ios-sdk/OpenSource/GTMOAuth2Authentication.m index b3f74075..0ea5fd7e 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTMOAuth2Authentication.m +++ b/External/google-plus-ios-sdk/OpenSource/GTMOAuth2Authentication.m @@ -31,9 +31,11 @@ static NSString *const kOAuth2TokenTypeKey = @"token_type"; static NSString *const kOAuth2ExpiresInKey = @"expires_in"; static NSString *const kOAuth2CodeKey = @"code"; static NSString *const kOAuth2AssertionKey = @"assertion"; +static NSString *const kOAuth2RefreshScopeKey = @"refreshScope"; // additional persistent keys static NSString *const kServiceProviderKey = @"serviceProvider"; +static NSString *const kUserIDKey = @"userID"; static NSString *const kUserEmailKey = @"email"; static NSString *const kUserEmailIsVerifiedKey = @"isVerified"; @@ -178,6 +180,7 @@ finishedRefreshWithFetcher:(GTMHTTPFetcher *)fetcher refreshToken, code, assertion, + refreshScope, errorString, tokenType, scope, @@ -478,6 +481,29 @@ finishedRefreshWithFetcher:(GTMHTTPFetcher *)fetcher } } +- (void)stopAuthorizationForRequest:(NSURLRequest *)request { + @synchronized(authorizationQueue_) { + NSUInteger argIndex = 0; + BOOL found = NO; + for (GTMOAuth2AuthorizationArgs *args in authorizationQueue_) { + if ([args request] == request) { + found = YES; + break; + } + argIndex++; + } + + if (found) { + [authorizationQueue_ removeObjectAtIndex:argIndex]; + + // If the queue is now empty, go ahead and stop the fetcher. + if ([authorizationQueue_ count] == 0) { + [self stopAuthorization]; + } + } + } +} + - (BOOL)authorizeRequestImmediateArgs:(GTMOAuth2AuthorizationArgs *)args { // This authorization entry point never attempts to refresh the access token, // but does call the completion routine @@ -608,13 +634,15 @@ finishedRefreshWithFetcher:(GTMHTTPFetcher *)fetcher NSString *accessToken = self.accessToken; NSString *refreshToken = self.refreshToken; NSString *assertion = self.assertion; + NSString *code = self.code; BOOL hasRefreshToken = ([refreshToken length] > 0); BOOL hasAccessToken = ([accessToken length] > 0); BOOL hasAssertion = ([assertion length] > 0); + BOOL hasCode = ([code length] > 0); // Determine if we need to refresh the access token - if (hasRefreshToken || hasAssertion) { + if (hasRefreshToken || hasAssertion || hasCode) { if (!hasAccessToken) { shouldRefresh = YES; } else { @@ -666,7 +694,6 @@ finishedRefreshWithFetcher:(GTMHTTPFetcher *)fetcher NSMutableDictionary *paramsDict = [NSMutableDictionary dictionary]; - NSString *commentTemplate; NSString *fetchType; NSString *refreshToken = self.refreshToken; @@ -677,14 +704,18 @@ finishedRefreshWithFetcher:(GTMHTTPFetcher *)fetcher // We have a refresh token [paramsDict setObject:@"refresh_token" forKey:@"grant_type"]; [paramsDict setObject:refreshToken forKey:@"refresh_token"]; - + + NSString *refreshScope = self.refreshScope; + if ([refreshScope length] > 0) { + [paramsDict setObject:refreshScope forKey:@"scope"]; + } + fetchType = kGTMOAuth2FetchTypeRefresh; - commentTemplate = @"refresh token for %@"; } else if (code) { // We have a code string [paramsDict setObject:@"authorization_code" forKey:@"grant_type"]; [paramsDict setObject:code forKey:@"code"]; - + NSString *redirectURI = self.redirectURI; if ([redirectURI length] > 0) { [paramsDict setObject:redirectURI forKey:@"redirect_uri"]; @@ -696,13 +727,11 @@ finishedRefreshWithFetcher:(GTMHTTPFetcher *)fetcher } fetchType = kGTMOAuth2FetchTypeToken; - commentTemplate = @"fetch tokens for %@"; } else if (assertion) { // We have an assertion string [paramsDict setObject:assertion forKey:@"assertion"]; [paramsDict setObject:@"http://oauth.net/grant_type/jwt/1.0/bearer" forKey:@"grant_type"]; - commentTemplate = @"fetch tokens for %@"; fetchType = kGTMOAuth2FetchTypeAssertion; } else { #if DEBUG @@ -749,7 +778,8 @@ finishedRefreshWithFetcher:(GTMHTTPFetcher *)fetcher fetcher = [GTMHTTPFetcher fetcherWithRequest:request]; } - [fetcher setCommentWithFormat:commentTemplate, [tokenURL host]]; + NSString *const template = (refreshToken ? @"refresh token for %@" : @"fetch tokens for %@"); + [fetcher setCommentWithFormat:template, [tokenURL host]]; fetcher.postData = paramData; fetcher.retryEnabled = YES; fetcher.maxRetryInterval = 15.0; @@ -898,6 +928,7 @@ finishedRefreshWithFetcher:(GTMHTTPFetcher *)fetcher [dict setValue:refreshToken forKey:kOAuth2RefreshTokenKey]; [dict setValue:accessToken forKey:kOAuth2AccessTokenKey]; [dict setValue:self.serviceProvider forKey:kServiceProviderKey]; + [dict setValue:self.userID forKey:kUserIDKey]; [dict setValue:self.userEmail forKey:kUserEmailKey]; [dict setValue:self.userEmailIsVerified forKey:kUserEmailIsVerifiedKey]; [dict setValue:self.scope forKey:kOAuth2ScopeKey]; @@ -965,6 +996,14 @@ finishedRefreshWithFetcher:(GTMHTTPFetcher *)fetcher [self.parameters setValue:str forKey:kOAuth2AssertionKey]; } +- (NSString *)refreshScope { + return [self.parameters objectForKey:kOAuth2RefreshScopeKey]; +} + +- (void)setRefreshScope:(NSString *)str { + [self.parameters setValue:str forKey:kOAuth2RefreshScopeKey]; +} + - (NSString *)errorString { return [self.parameters objectForKey:kOAuth2ErrorKey]; } @@ -1024,6 +1063,14 @@ finishedRefreshWithFetcher:(GTMHTTPFetcher *)fetcher [self.parameters setValue:str forKey:kServiceProviderKey]; } +- (NSString *)userID { + return [self.parameters objectForKey:kUserIDKey]; +} + +- (void)setUserID:(NSString *)str { + [self.parameters setValue:str forKey:kUserIDKey]; +} + - (NSString *)userEmail { return [self.parameters objectForKey:kUserEmailKey]; } diff --git a/External/google-plus-ios-sdk/OpenSource/GTMOAuth2SignIn.h b/External/google-plus-ios-sdk/OpenSource/GTMOAuth2SignIn.h index 90ccf397..ded279bd 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTMOAuth2SignIn.h +++ b/External/google-plus-ios-sdk/OpenSource/GTMOAuth2SignIn.h @@ -152,6 +152,11 @@ // delegate's finishedSelector - (void)windowWasClosed; +// Start the sequences for signing in with an authorization code. The +// authentication must contain an authorization code, otherwise the process +// will fail. +- (void)authCodeObtained; + #pragma mark - #if !GTM_OAUTH2_SKIP_GOOGLE_SUPPORT diff --git a/External/google-plus-ios-sdk/OpenSource/GTMOAuth2SignIn.m b/External/google-plus-ios-sdk/OpenSource/GTMOAuth2SignIn.m index 9755febd..fba0222f 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTMOAuth2SignIn.m +++ b/External/google-plus-ios-sdk/OpenSource/GTMOAuth2SignIn.m @@ -46,12 +46,11 @@ NSString *const kOOBString = @"urn:ietf:wg:oauth:2.0:oob"; + (NSMutableURLRequest *)mutableURLRequestWithURL:(NSURL *)oldURL paramString:(NSString *)paramStr; #if !GTM_OAUTH2_SKIP_GOOGLE_SUPPORT +- (void)addScopeForGoogleUserInfo; - (void)fetchGoogleUserInfo; #endif - (void)finishSignInWithError:(NSError *)error; -- (void)handleCallbackReached; - - (void)auth:(GTMOAuth2Authentication *)auth finishedWithFetcher:(GTMHTTPFetcher *)fetcher error:(NSError *)error; @@ -136,6 +135,27 @@ finishedWithFetcher:(GTMHTTPFetcher *)fetcher return auth; } + +- (void)addScopeForGoogleUserInfo { + GTMOAuth2Authentication *auth = self.authentication; + if (self.shouldFetchGoogleUserEmail) { + NSString *const emailScope = @"https://www.googleapis.com/auth/userinfo.email"; + NSString *scope = auth.scope; + if ([scope rangeOfString:emailScope].location == NSNotFound) { + scope = [GTMOAuth2Authentication scopeWithStrings:scope, emailScope, nil]; + auth.scope = scope; + } + } + + if (self.shouldFetchGoogleUserProfile) { + NSString *const profileScope = @"https://www.googleapis.com/auth/userinfo.profile"; + NSString *scope = auth.scope; + if ([scope rangeOfString:profileScope].location == NSNotFound) { + scope = [GTMOAuth2Authentication scopeWithStrings:scope, profileScope, nil]; + auth.scope = scope; + } + } +} #endif - (id)initWithAuthentication:(GTMOAuth2Authentication *)auth @@ -217,24 +237,7 @@ finishedWithFetcher:(GTMHTTPFetcher *)fetcher // For signing in to Google, append the scope for obtaining the authenticated // user email and profile, as appropriate #if !GTM_OAUTH2_SKIP_GOOGLE_SUPPORT - GTMOAuth2Authentication *auth = self.authentication; - if (self.shouldFetchGoogleUserEmail) { - NSString *const emailScope = @"https://www.googleapis.com/auth/userinfo.email"; - NSString *scope = auth.scope; - if ([scope rangeOfString:emailScope].location == NSNotFound) { - scope = [GTMOAuth2Authentication scopeWithStrings:scope, emailScope, nil]; - auth.scope = scope; - } - } - - if (self.shouldFetchGoogleUserProfile) { - NSString *const profileScope = @"https://www.googleapis.com/auth/userinfo.profile"; - NSString *scope = auth.scope; - if ([scope rangeOfString:profileScope].location == NSNotFound) { - scope = [GTMOAuth2Authentication scopeWithStrings:scope, profileScope, nil]; - auth.scope = scope; - } - } + [self addScopeForGoogleUserInfo]; #endif // start the authorization @@ -350,7 +353,7 @@ finishedWithFetcher:(GTMHTTPFetcher *)fetcher // requested // // When the request is for the callback URL, this method invokes -// handleCallbackReached and returns YES +// authCodeObtained and returns YES - (BOOL)requestRedirectedToRequest:(NSURLRequest *)redirectedRequest { // for Google's installed app sign-in protocol, we'll look for the // end-of-sign-in indicator in the titleChanged: method below @@ -400,7 +403,7 @@ finishedWithFetcher:(GTMHTTPFetcher *)fetcher @"response lacks auth code or error"); #endif - [self handleCallbackReached]; + [self authCodeObtained]; } // tell the delegate that we did handle this request return YES; @@ -410,7 +413,7 @@ finishedWithFetcher:(GTMHTTPFetcher *)fetcher // been loadded // // When the title indicates sign-in has completed, this method invokes -// handleCallbackReached and returns YES +// authCodeObtained and returns YES - (BOOL)titleChanged:(NSString *)title { // return YES if the OAuth flow ending title was detected @@ -432,7 +435,7 @@ finishedWithFetcher:(GTMHTTPFetcher *)fetcher if (!self.hasHandledCallback) { [self.authentication setKeysForResponseDictionary:dict]; - [self handleCallbackReached]; + [self authCodeObtained]; } return YES; } @@ -467,7 +470,7 @@ finishedWithFetcher:(GTMHTTPFetcher *)fetcher return NO; } -- (void)handleCallbackReached { +- (void)authCodeObtained { // the callback page was requested, or the authenticate code was loaded // into a page's title, so exchange the auth code for access & refresh tokens // and tell the window to close @@ -475,7 +478,19 @@ finishedWithFetcher:(GTMHTTPFetcher *)fetcher // avoid duplicate signals that the callback point has been reached self.hasHandledCallback = YES; - [self closeTheWindow]; + // If the signin was request for exchanging an authentication token to a + // refresh token, there is no window to close. + if (self.webRequestSelector) { + [self closeTheWindow]; + } else { + // For signing in to Google, append the scope for obtaining the + // authenticated user email and profile, as appropriate. This is usually + // done by the startSigningIn method, but this method is not called when + // exchanging an authentication token for a refresh token. +#if !GTM_OAUTH2_SKIP_GOOGLE_SUPPORT + [self addScopeForGoogleUserInfo]; +#endif + } NSError *error = nil; @@ -601,6 +616,10 @@ finishedWithFetcher:(GTMHTTPFetcher *)fetcher if (profileDict) { self.userProfile = profileDict; + // Save the ID into the auth object + NSString *identifier = [profileDict objectForKey:@"id"]; + [auth setUserID:identifier]; + // Save the email into the auth object NSString *email = [profileDict objectForKey:@"email"]; [auth setUserEmail:email]; @@ -757,7 +776,8 @@ static void ReachabilityCallBack(SCNetworkReachabilityRef target, #if !GTM_OAUTH2_SKIP_GOOGLE_SUPPORT + (void)revokeTokenForGoogleAuthentication:(GTMOAuth2Authentication *)auth { - if (auth.canAuthorize + if (auth.refreshToken != nil + && auth.canAuthorize && [auth.serviceProvider isEqual:kGTMOAuth2ServiceProviderGoogle]) { // create a signed revocation request for this authentication object @@ -767,44 +787,45 @@ static void ReachabilityCallBack(SCNetworkReachabilityRef target, NSString *token = auth.refreshToken; NSString *encoded = [GTMOAuth2Authentication encodedOAuthValueForString:token]; - NSString *body = [@"token=" stringByAppendingString:encoded]; + if (encoded != nil) { + NSString *body = [@"token=" stringByAppendingString:encoded]; - [request setHTTPBody:[body dataUsingEncoding:NSUTF8StringEncoding]]; - [request setHTTPMethod:@"POST"]; + [request setHTTPBody:[body dataUsingEncoding:NSUTF8StringEncoding]]; + [request setHTTPMethod:@"POST"]; - NSString *userAgent = [auth userAgent]; - [request setValue:userAgent forHTTPHeaderField:@"User-Agent"]; + NSString *userAgent = [auth userAgent]; + [request setValue:userAgent forHTTPHeaderField:@"User-Agent"]; - // there's nothing to be done if revocation succeeds or fails - GTMHTTPFetcher *fetcher; - id fetcherService = auth.fetcherService; - if (fetcherService) { - fetcher = [fetcherService fetcherWithRequest:request]; - } else { - fetcher = [GTMHTTPFetcher fetcherWithRequest:request]; - } - fetcher.comment = @"revoke token"; + // there's nothing to be done if revocation succeeds or fails + GTMHTTPFetcher *fetcher; + id fetcherService = auth.fetcherService; + if (fetcherService) { + fetcher = [fetcherService fetcherWithRequest:request]; + } else { + fetcher = [GTMHTTPFetcher fetcherWithRequest:request]; + } + fetcher.comment = @"revoke token"; - // Use a completion handler fetch for better debugging, but only if we're - // guaranteed that blocks are available in the runtime + // Use a completion handler fetch for better debugging, but only if we're + // guaranteed that blocks are available in the runtime #if (!TARGET_OS_IPHONE && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1060)) || \ (TARGET_OS_IPHONE && (__IPHONE_OS_VERSION_MIN_REQUIRED >= 40000)) - // Blocks are available - [fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) { + // Blocks are available + [fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) { #if DEBUG - if (error) { - NSString *errStr = [[[NSString alloc] initWithData:data - encoding:NSUTF8StringEncoding] autorelease]; - NSLog(@"revoke error: %@", errStr); - } + if (error) { + NSString *errStr = [[[NSString alloc] initWithData:data + encoding:NSUTF8StringEncoding] autorelease]; + NSLog(@"revoke error: %@", errStr); + } #endif // DEBUG - }]; + }]; #else - // Blocks may not be available - [fetcher beginFetchWithDelegate:nil didFinishSelector:NULL]; + // Blocks may not be available + [fetcher beginFetchWithDelegate:nil didFinishSelector:NULL]; #endif + } } - [auth reset]; } #endif // !GTM_OAUTH2_SKIP_GOOGLE_SUPPORT diff --git a/External/google-plus-ios-sdk/OpenSource/GTMOAuth2ViewControllerTouch.m b/External/google-plus-ios-sdk/OpenSource/GTMOAuth2ViewControllerTouch.m index 037e5676..40cf4aee 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTMOAuth2ViewControllerTouch.m +++ b/External/google-plus-ios-sdk/OpenSource/GTMOAuth2ViewControllerTouch.m @@ -586,7 +586,7 @@ static Class gSignInClass = Nil; // // Even better is for apps to check the system clock and show some more // helpful, localized instructions for users; this is really a fallback. - NSString *html = @"
" + NSString *const html = @"
" @"⌚ ?
System Clock Incorrect
%@" @"
"; NSString *errHTML = [NSString stringWithFormat:html, [NSDate date]]; @@ -720,6 +720,13 @@ static Class gSignInClass = Nil; [super viewWillDisappear:animated]; } +- (void)viewDidLayoutSubviews { + // We don't call super's version of this method because + // -[UIViewController viewDidLayoutSubviews] is documented as a no-op, that + // didn't exist before iOS 5. + [initialActivityIndicator_ setCenter:[webView_ center]]; +} + - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { diff --git a/External/google-plus-ios-sdk/OpenSource/GTMOAuth2ViewTouch.xib b/External/google-plus-ios-sdk/OpenSource/GTMOAuth2ViewTouch.xib index 12d6834d..4f91fa4a 100644 --- a/External/google-plus-ios-sdk/OpenSource/GTMOAuth2ViewTouch.xib +++ b/External/google-plus-ios-sdk/OpenSource/GTMOAuth2ViewTouch.xib @@ -3,12 +3,12 @@ 1024 12C60 - 2843 + 2840 1187.34 625.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1929 + 1926 YES @@ -155,7 +155,7 @@ - 292 + 301 {{150, 115}, {20, 20}} @@ -489,6 +489,6 @@ YES 3 - 1929 + 1926 diff --git a/External/google-plus-ios-sdk/OpenSource/OpenInChromeController.h b/External/google-plus-ios-sdk/OpenSource/OpenInChromeController.h new file mode 100644 index 00000000..35363a71 --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/OpenInChromeController.h @@ -0,0 +1,54 @@ +// Copyright 2012, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#import + +// This class is used to check if Google Chrome is installed in the system and +// to open a URL in Google Chrome either with or without a callback URL. +@interface OpenInChromeController : NSObject + +// Returns a shared instance of the OpenInChromeController. ++ (OpenInChromeController *)sharedInstance; + +// Returns YES if Google Chrome is installed in the user's system. +- (BOOL)isChromeInstalled; + +// Opens a URL in Google Chrome. +- (BOOL)openInChrome:(NSURL *)url; + +// Open a URL in Google Chrome providing a |callbackURL| to return to the app. +// URLs from the same app will be opened in the same tab unless |createNewTab| +// is set to YES. +// |callbackURL| can be nil. +// The return value of this method is YES if the URL is successfully opened. +- (BOOL)openInChrome:(NSURL *)url + withCallbackURL:(NSURL *)callbackURL + createNewTab:(BOOL)createNewTab; + +@end diff --git a/External/google-plus-ios-sdk/OpenSource/OpenInChromeController.m b/External/google-plus-ios-sdk/OpenSource/OpenInChromeController.m new file mode 100644 index 00000000..30b18b5e --- /dev/null +++ b/External/google-plus-ios-sdk/OpenSource/OpenInChromeController.m @@ -0,0 +1,135 @@ +// Copyright 2012, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#import + +#import "OpenInChromeController.h" + +static NSString * const kGoogleChromeHTTPScheme = @"googlechrome:"; +static NSString * const kGoogleChromeHTTPSScheme = @"googlechromes:"; +static NSString * const kGoogleChromeCallbackScheme = + @"googlechrome-x-callback:"; + +static NSString * encodeByAddingPercentEscapes(NSString *input) { + NSString *encodedValue = + (NSString *)CFURLCreateStringByAddingPercentEscapes( + kCFAllocatorDefault, + (CFStringRef)input, + NULL, + (CFStringRef)@"!*'();:@&=+$,/?%#[]", + kCFStringEncodingUTF8); + return [encodedValue autorelease]; +} + +@implementation OpenInChromeController + ++ (OpenInChromeController *)sharedInstance { + static OpenInChromeController *sharedInstance; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + sharedInstance = [[self alloc] init]; + }); + return sharedInstance; +} + +- (BOOL)isChromeInstalled { + NSURL *simpleURL = [NSURL URLWithString:kGoogleChromeHTTPScheme]; + NSURL *callbackURL = [NSURL URLWithString:kGoogleChromeCallbackScheme]; + return [[UIApplication sharedApplication] canOpenURL:simpleURL] || + [[UIApplication sharedApplication] canOpenURL:callbackURL]; +} + +- (BOOL)openInChrome:(NSURL *)url { + return [self openInChrome:url withCallbackURL:nil createNewTab:NO]; +} + +- (BOOL)openInChrome:(NSURL *)url + withCallbackURL:(NSURL *)callbackURL + createNewTab:(BOOL)createNewTab { + NSURL *chromeSimpleURL = [NSURL URLWithString:kGoogleChromeHTTPScheme]; + NSURL *chromeCallbackURL = [NSURL URLWithString:kGoogleChromeCallbackScheme]; + if ([[UIApplication sharedApplication] canOpenURL:chromeCallbackURL]) { + NSString *appName = + [[NSBundle mainBundle] + objectForInfoDictionaryKey:@"CFBundleDisplayName"]; + + NSString *scheme = [url.scheme lowercaseString]; + + // Proceed only if scheme is http or https. + if ([scheme isEqualToString:@"http"] || + [scheme isEqualToString:@"https"]) { + + NSMutableString *chromeURLString = [NSMutableString string]; + [chromeURLString appendFormat: + @"%@//x-callback-url/open/?x-source=%@&url=%@", + kGoogleChromeCallbackScheme, + encodeByAddingPercentEscapes(appName), + encodeByAddingPercentEscapes([url absoluteString])]; + if (callbackURL) { + [chromeURLString appendFormat:@"&x-success=%@", + encodeByAddingPercentEscapes([callbackURL absoluteString])]; + } + if (createNewTab) { + [chromeURLString appendString:@"&create-new-tab"]; + } + + NSURL *chromeURL = [NSURL URLWithString:chromeURLString]; + + // Open the URL with Google Chrome. + return [[UIApplication sharedApplication] openURL:chromeURL]; + } + } else if ([[UIApplication sharedApplication] canOpenURL:chromeSimpleURL]) { + NSString *scheme = [url.scheme lowercaseString]; + + // Replace the URL Scheme with the Chrome equivalent. + NSString *chromeScheme = nil; + if ([scheme isEqualToString:@"http"]) { + chromeScheme = kGoogleChromeHTTPScheme; + } else if ([scheme isEqualToString:@"https"]) { + chromeScheme = kGoogleChromeHTTPSScheme; + } + + // Proceed only if a valid Google Chrome URI Scheme is available. + if (chromeScheme) { + NSString *absoluteString = [url absoluteString]; + NSRange rangeForScheme = [absoluteString rangeOfString:@":"]; + NSString *urlNoScheme = + [absoluteString substringFromIndex:rangeForScheme.location + 1]; + NSString *chromeURLString = + [chromeScheme stringByAppendingString:urlNoScheme]; + NSURL *chromeURL = [NSURL URLWithString:chromeURLString]; + + // Open the URL with Google Chrome. + return [[UIApplication sharedApplication] openURL:chromeURL]; + } + } + return NO; +} + +@end diff --git a/External/google-plus-ios-sdk/README b/External/google-plus-ios-sdk/README index d6aafb23..880c9229 100644 --- a/External/google-plus-ios-sdk/README +++ b/External/google-plus-ios-sdk/README @@ -1,6 +1,7 @@ -This Google+ iOS SDK allows users to sign in with Google+, share with Google+, -and write moments to Google+ history from third-party apps. The SDK contains the -following files: +This Google+ iOS SDK allows users to sign in and share with Google+ from +third-party apps. The SDK also provides Google+ APIs for the app to access +the list of people in user-selected circles and to read and write user's app +activities. The SDK contains the following files: README -- This file. @@ -22,19 +23,11 @@ OpenSource/ -- Google open source files used by the SDK. Add all files in this Also see comments for the subdirectory below. GTL/ -- Google open source files only used by the sample app. Include them into your project if you're going to use the same functionality, - e.g. Add Moments. + e.g. writing user's app activities. Resources/ -- Resources that can be used in your app. - For |GPPSignInButton|, the google_plus_sign_in*.png images + For |GPPSignInButton|, the gpp_sign_in_*.png images are required. - google_plus_share.png -- 82x24 Google+ share button image. - google_plus_share_large.png -- 112x32 Google+ share button image. - google_plus_share@2x.png -- 164x48 Google+ share button image. - google_plus_share_large@2x.png -- 224x64 Google+ share button image. - google_plus_sign_in.png -- 120x32 Google+ sign-in button image. - google_plus_sign_in_wide.png --220x32 Wide Google+ sign-in button image. - google_plus_sign_in@2x.png -- 240x64 Google+ sign-in button image. - google_plus_sign_in_wide@2x.png -- 440x64 Wide Google+ sign-in button image. SampleCode/ -- Sample code for your reference only. Do not include this in your project. diff --git a/External/google-plus-ios-sdk/Resources/af.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/af.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..305f87d3 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/af.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Meld aan"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Meld aan met Google"; diff --git a/External/google-plus-ios-sdk/Resources/am.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/am.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..a7748e7f --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/am.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "ይግቡ"; + +/* Long form sign-in button text */ +"Sign in with Google" = "በGoogle ይግቡ"; diff --git a/External/google-plus-ios-sdk/Resources/ar.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/ar.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..266ae223 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/ar.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "تسجيل الدخول"; + +/* Long form sign-in button text */ +"Sign in with Google" = "تسجيل الدخول باستخدام Google"; diff --git a/External/google-plus-ios-sdk/Resources/be.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/be.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..09710892 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/be.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Увайсцi"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Увайсці ў Google"; diff --git a/External/google-plus-ios-sdk/Resources/bg.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/bg.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..8a7edddc --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/bg.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Вход"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Вход с Google"; diff --git a/External/google-plus-ios-sdk/Resources/ca.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/ca.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..f4a3d04c --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/ca.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "In. sess."; + +/* Long form sign-in button text */ +"Sign in with Google" = "Inicia la sessió amb Google"; diff --git a/External/google-plus-ios-sdk/Resources/cs.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/cs.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..29e3ad44 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/cs.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Přihlásit se"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Přihlásit se k účtu Google"; diff --git a/External/google-plus-ios-sdk/Resources/da.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/da.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..336e602f --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/da.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Log ind"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Log ind med Google"; diff --git a/External/google-plus-ios-sdk/Resources/de.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/de.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..2ad7bd1c --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/de.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Anmelden"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Über Google anmelden"; diff --git a/External/google-plus-ios-sdk/Resources/de_AT.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/de_AT.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..2ad7bd1c --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/de_AT.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Anmelden"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Über Google anmelden"; diff --git a/External/google-plus-ios-sdk/Resources/de_CH.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/de_CH.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..2ad7bd1c --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/de_CH.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Anmelden"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Über Google anmelden"; diff --git a/External/google-plus-ios-sdk/Resources/el.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/el.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..7d1dbdd6 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/el.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Σύνδεση"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Συνδεθείτε στο Google"; diff --git a/External/google-plus-ios-sdk/Resources/en.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/en.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..ac7cbeed --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/en.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Sign in"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Sign in with Google"; diff --git a/External/google-plus-ios-sdk/Resources/en_GB.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/en_GB.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..ac7cbeed --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/en_GB.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Sign in"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Sign in with Google"; diff --git a/External/google-plus-ios-sdk/Resources/en_IE.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/en_IE.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..ac7cbeed --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/en_IE.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Sign in"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Sign in with Google"; diff --git a/External/google-plus-ios-sdk/Resources/en_IN.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/en_IN.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..ac7cbeed --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/en_IN.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Sign in"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Sign in with Google"; diff --git a/External/google-plus-ios-sdk/Resources/en_SG.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/en_SG.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..ac7cbeed --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/en_SG.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Sign in"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Sign in with Google"; diff --git a/External/google-plus-ios-sdk/Resources/en_ZA.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/en_ZA.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..ac7cbeed --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/en_ZA.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Sign in"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Sign in with Google"; diff --git a/External/google-plus-ios-sdk/Resources/es.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..b8cfdea2 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Iniciar sesión"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Iniciar sesión con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_419.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_419.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_419.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_AR.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_AR.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_AR.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_BO.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_BO.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_BO.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_CL.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_CL.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_CL.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_CO.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_CO.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_CO.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_CR.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_CR.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_CR.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_DO.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_DO.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_DO.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_EC.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_EC.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_EC.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_GT.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_GT.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_GT.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_HN.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_HN.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_HN.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_MX.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_MX.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_MX.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_NI.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_NI.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_NI.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_PA.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_PA.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_PA.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_PE.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_PE.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_PE.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_PR.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_PR.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_PR.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_PY.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_PY.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_PY.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_SV.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_SV.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_SV.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_US.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_US.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_US.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_UY.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_UY.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_UY.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/es_VE.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/es_VE.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..32e9604b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/es_VE.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Acceder"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Acceder con Google"; diff --git a/External/google-plus-ios-sdk/Resources/et.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/et.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..cfa7d74b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/et.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Logi sisse"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Logi sisse Google'iga"; diff --git a/External/google-plus-ios-sdk/Resources/fa.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/fa.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..0779216a --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/fa.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "ورود به سیستم"; + +/* Long form sign-in button text */ +"Sign in with Google" = "ورود به سیستم با Google‎"; diff --git a/External/google-plus-ios-sdk/Resources/fi.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/fi.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..b40f9e41 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/fi.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Kirjaudu"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Kirjaudu Google-tiliin"; diff --git a/External/google-plus-ios-sdk/Resources/fil.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/fil.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..e4851964 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/fil.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Sign in"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Mag-sign in sa Google"; diff --git a/External/google-plus-ios-sdk/Resources/fr.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/fr.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..c1863b97 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/fr.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Connexion"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Se connecter via Google"; diff --git a/External/google-plus-ios-sdk/Resources/fr_CH.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/fr_CH.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..c1863b97 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/fr_CH.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Connexion"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Se connecter via Google"; diff --git a/External/google-plus-ios-sdk/Resources/google_plus_share.png b/External/google-plus-ios-sdk/Resources/google_plus_share.png deleted file mode 100644 index 8bafd4cd..00000000 Binary files a/External/google-plus-ios-sdk/Resources/google_plus_share.png and /dev/null differ diff --git a/External/google-plus-ios-sdk/Resources/google_plus_share@2x.png b/External/google-plus-ios-sdk/Resources/google_plus_share@2x.png deleted file mode 100644 index 9cf3345e..00000000 Binary files a/External/google-plus-ios-sdk/Resources/google_plus_share@2x.png and /dev/null differ diff --git a/External/google-plus-ios-sdk/Resources/google_plus_share_large.png b/External/google-plus-ios-sdk/Resources/google_plus_share_large.png deleted file mode 100644 index 2ad6cfde..00000000 Binary files a/External/google-plus-ios-sdk/Resources/google_plus_share_large.png and /dev/null differ diff --git a/External/google-plus-ios-sdk/Resources/google_plus_share_large@2x.png b/External/google-plus-ios-sdk/Resources/google_plus_share_large@2x.png deleted file mode 100644 index 10546b27..00000000 Binary files a/External/google-plus-ios-sdk/Resources/google_plus_share_large@2x.png and /dev/null differ diff --git a/External/google-plus-ios-sdk/Resources/google_plus_sign_in.png b/External/google-plus-ios-sdk/Resources/google_plus_sign_in.png deleted file mode 100644 index b2996c8a..00000000 Binary files a/External/google-plus-ios-sdk/Resources/google_plus_sign_in.png and /dev/null differ diff --git a/External/google-plus-ios-sdk/Resources/google_plus_sign_in@2x.png b/External/google-plus-ios-sdk/Resources/google_plus_sign_in@2x.png deleted file mode 100644 index 6d62343e..00000000 Binary files a/External/google-plus-ios-sdk/Resources/google_plus_sign_in@2x.png and /dev/null differ diff --git a/External/google-plus-ios-sdk/Resources/google_plus_sign_in_wide.png b/External/google-plus-ios-sdk/Resources/google_plus_sign_in_wide.png deleted file mode 100644 index 40b02bd8..00000000 Binary files a/External/google-plus-ios-sdk/Resources/google_plus_sign_in_wide.png and /dev/null differ diff --git a/External/google-plus-ios-sdk/Resources/google_plus_sign_in_wide@2x.png b/External/google-plus-ios-sdk/Resources/google_plus_sign_in_wide@2x.png deleted file mode 100644 index b3a4e5c8..00000000 Binary files a/External/google-plus-ios-sdk/Resources/google_plus_sign_in_wide@2x.png and /dev/null differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_disabled.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_disabled.png new file mode 100644 index 00000000..30d03737 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_disabled.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_disabled@2x.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_disabled@2x.png new file mode 100644 index 00000000..87760880 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_disabled@2x.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_normal.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_normal.png new file mode 100644 index 00000000..273577be Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_normal.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_normal@2x.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_normal@2x.png new file mode 100644 index 00000000..7254d8c7 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_normal@2x.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_pressed.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_pressed.png new file mode 100644 index 00000000..57b6fbc1 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_pressed.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_pressed@2x.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_pressed@2x.png new file mode 100644 index 00000000..d0c4e6d2 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_button_pressed@2x.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_disabled.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_disabled.png new file mode 100644 index 00000000..a70dfee0 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_disabled.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_disabled@2x.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_disabled@2x.png new file mode 100644 index 00000000..124a19f2 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_disabled@2x.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_normal.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_normal.png new file mode 100644 index 00000000..3a72c0e3 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_normal.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_normal@2x.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_normal@2x.png new file mode 100644 index 00000000..30628599 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_normal@2x.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_pressed.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_pressed.png new file mode 100644 index 00000000..c5de5cff Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_pressed.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_pressed@2x.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_pressed@2x.png new file mode 100644 index 00000000..76f21817 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_dark_icon_pressed@2x.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_disabled.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_disabled.png new file mode 100644 index 00000000..a02e0354 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_disabled.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_disabled@2x.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_disabled@2x.png new file mode 100644 index 00000000..3123fe12 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_disabled@2x.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_normal.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_normal.png new file mode 100644 index 00000000..e36bdedb Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_normal.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_normal@2x.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_normal@2x.png new file mode 100644 index 00000000..fd760871 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_normal@2x.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_pressed.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_pressed.png new file mode 100644 index 00000000..5cc69560 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_pressed.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_pressed@2x.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_pressed@2x.png new file mode 100644 index 00000000..dc73c96b Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_button_pressed@2x.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_disabled.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_disabled.png new file mode 100644 index 00000000..4da3ab93 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_disabled.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_disabled@2x.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_disabled@2x.png new file mode 100644 index 00000000..462c84c3 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_disabled@2x.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_normal.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_normal.png new file mode 100644 index 00000000..b5c8f9a9 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_normal.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_normal@2x.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_normal@2x.png new file mode 100644 index 00000000..87a82718 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_normal@2x.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_pressed.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_pressed.png new file mode 100644 index 00000000..249441c5 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_pressed.png differ diff --git a/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_pressed@2x.png b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_pressed@2x.png new file mode 100644 index 00000000..3ad8e9a9 Binary files /dev/null and b/External/google-plus-ios-sdk/Resources/gpp_sign_in_light_icon_pressed@2x.png differ diff --git a/External/google-plus-ios-sdk/Resources/gsw.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/gsw.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..2ad7bd1c --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/gsw.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Anmelden"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Über Google anmelden"; diff --git a/External/google-plus-ios-sdk/Resources/he.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/he.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..0b0d8bfa --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/he.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "היכנס"; + +/* Long form sign-in button text */ +"Sign in with Google" = "היכנס באמצעות Google"; diff --git a/External/google-plus-ios-sdk/Resources/hi.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/hi.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..615f8d1a --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/hi.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "साइन इन करें"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Google से साइन इन करें"; diff --git a/External/google-plus-ios-sdk/Resources/hr.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/hr.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..e0ddbba9 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/hr.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Prijava"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Prijava uslugom Google"; diff --git a/External/google-plus-ios-sdk/Resources/hu.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/hu.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..4ac31219 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/hu.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Belépés"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Google-bejelentkezés"; diff --git a/External/google-plus-ios-sdk/Resources/id.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/id.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..7454d61d --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/id.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Masuk"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Masuk dengan Google"; diff --git a/External/google-plus-ios-sdk/Resources/in.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/in.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..7454d61d --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/in.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Masuk"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Masuk dengan Google"; diff --git a/External/google-plus-ios-sdk/Resources/it.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/it.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..9a8c5adb --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/it.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Accedi"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Accedi con Google"; diff --git a/External/google-plus-ios-sdk/Resources/iw.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/iw.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..0b0d8bfa --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/iw.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "היכנס"; + +/* Long form sign-in button text */ +"Sign in with Google" = "היכנס באמצעות Google"; diff --git a/External/google-plus-ios-sdk/Resources/ja.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/ja.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..4abb7c73 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/ja.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "ログイン"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Googleでログイン"; diff --git a/External/google-plus-ios-sdk/Resources/ko.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/ko.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..f92b412a --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/ko.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "로그인"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Google 계정으로 로그인"; diff --git a/External/google-plus-ios-sdk/Resources/ln.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/ln.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..c1863b97 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/ln.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Connexion"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Se connecter via Google"; diff --git a/External/google-plus-ios-sdk/Resources/lt.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/lt.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..5af809d8 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/lt.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Prisij."; + +/* Long form sign-in button text */ +"Sign in with Google" = "Prisij. naud. „Google“"; diff --git a/External/google-plus-ios-sdk/Resources/lv.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/lv.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..afe04fa2 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/lv.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Pierakst."; + +/* Long form sign-in button text */ +"Sign in with Google" = "Pierakstīties Google"; diff --git a/External/google-plus-ios-sdk/Resources/mo.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/mo.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..88b632e8 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/mo.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Conectați"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Conectați-vă cu Google"; diff --git a/External/google-plus-ios-sdk/Resources/ms.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/ms.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..cf5d137b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/ms.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Log masuk"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Log masuk dengan Google"; diff --git a/External/google-plus-ios-sdk/Resources/nb.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/nb.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..5607cfb5 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/nb.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Logg på"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Logg på med Google"; diff --git a/External/google-plus-ios-sdk/Resources/nl.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/nl.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..73322837 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/nl.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Aanmelden"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Aanmelden met Google"; diff --git a/External/google-plus-ios-sdk/Resources/no.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/no.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..5607cfb5 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/no.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Logg på"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Logg på med Google"; diff --git a/External/google-plus-ios-sdk/Resources/pl.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/pl.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..4af38ce3 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/pl.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Zaloguj się"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Zaloguj się przez Google"; diff --git a/External/google-plus-ios-sdk/Resources/pt.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/pt.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..eafe542c --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/pt.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Login"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Fazer login com o Google"; diff --git a/External/google-plus-ios-sdk/Resources/pt_BR.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/pt_BR.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..eafe542c --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/pt_BR.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Login"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Fazer login com o Google"; diff --git a/External/google-plus-ios-sdk/Resources/pt_PT.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/pt_PT.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..2feb1278 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/pt_PT.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Inic. ses."; + +/* Long form sign-in button text */ +"Sign in with Google" = "Inic. sessão com o Google"; diff --git a/External/google-plus-ios-sdk/Resources/ro.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/ro.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..88b632e8 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/ro.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Conectați"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Conectați-vă cu Google"; diff --git a/External/google-plus-ios-sdk/Resources/ru.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/ru.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..82be16f2 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/ru.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Войти"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Войти в аккаунт Google"; diff --git a/External/google-plus-ios-sdk/Resources/sk.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/sk.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..e5e05f1a --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/sk.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Prihlásiť sa"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Prihlásiť sa do účtu Google"; diff --git a/External/google-plus-ios-sdk/Resources/sl.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/sl.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..ef953954 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/sl.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Prijava"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Prijavite se v Google"; diff --git a/External/google-plus-ios-sdk/Resources/sr.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/sr.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..15189ad1 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/sr.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Пријави ме"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Пријави ме преко Google-а"; diff --git a/External/google-plus-ios-sdk/Resources/sv.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/sv.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..83cf97a2 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/sv.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Logga in"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Logga in med Google"; diff --git a/External/google-plus-ios-sdk/Resources/sw.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/sw.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..91384343 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/sw.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Ingia"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Ingia ukitumia Google"; diff --git a/External/google-plus-ios-sdk/Resources/th.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/th.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..cf39dd0b --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/th.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "ลงชื่อใช้"; + +/* Long form sign-in button text */ +"Sign in with Google" = "ลงชื่อเข้าใช้ด้วย Google"; diff --git a/External/google-plus-ios-sdk/Resources/tl.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/tl.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..e4851964 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/tl.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Sign in"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Mag-sign in sa Google"; diff --git a/External/google-plus-ios-sdk/Resources/tr.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/tr.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..1d68b7df --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/tr.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Oturum aç"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Google'da oturum aç"; diff --git a/External/google-plus-ios-sdk/Resources/uk.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/uk.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..d7593526 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/uk.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Увійти"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Увійти в обл.запис Google"; diff --git a/External/google-plus-ios-sdk/Resources/vi.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/vi.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..6875c1ce --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/vi.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Đăng nhập"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Đăng nhập bằng Google"; diff --git a/External/google-plus-ios-sdk/Resources/zh.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/zh.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..59fd869a --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/zh.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "登录"; + +/* Long form sign-in button text */ +"Sign in with Google" = "使用 Google 帐户登录"; diff --git a/External/google-plus-ios-sdk/Resources/zh_CN.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/zh_CN.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..59fd869a --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/zh_CN.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "登录"; + +/* Long form sign-in button text */ +"Sign in with Google" = "使用 Google 帐户登录"; diff --git a/External/google-plus-ios-sdk/Resources/zh_HK.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/zh_HK.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..42889a04 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/zh_HK.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "登入"; + +/* Long form sign-in button text */ +"Sign in with Google" = "登入 Google"; diff --git a/External/google-plus-ios-sdk/Resources/zh_TW.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/zh_TW.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..dde1fdc2 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/zh_TW.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "登入"; + +/* Long form sign-in button text */ +"Sign in with Google" = "使用 Google 帳戶登入"; diff --git a/External/google-plus-ios-sdk/Resources/zu.lproj/GooglePlusPlatform.strings b/External/google-plus-ios-sdk/Resources/zu.lproj/GooglePlusPlatform.strings new file mode 100644 index 00000000..71a88362 --- /dev/null +++ b/External/google-plus-ios-sdk/Resources/zu.lproj/GooglePlusPlatform.strings @@ -0,0 +1,5 @@ +/* Sign-in button text */ +"Sign in" = "Ngena ngemvume"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Ngena ngemvume nge-Google"; diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSample.xcodeproj/project.pbxproj b/External/google-plus-ios-sdk/SampleCode/GooglePlusSample.xcodeproj/project.pbxproj index a9e8f15d..95aeba7e 100644 --- a/External/google-plus-ios-sdk/SampleCode/GooglePlusSample.xcodeproj/project.pbxproj +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSample.xcodeproj/project.pbxproj @@ -14,13 +14,132 @@ 00F70E99158007D90077799E /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00F70E98158007D90077799E /* Security.framework */; }; 00F70E9B158008040077799E /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00F70E9A158008040077799E /* SystemConfiguration.framework */; }; 0C52D6F8158BAB1F001510E6 /* button_background.png in Resources */ = {isa = PBXBuildFile; fileRef = 0C52D6F7158BAB1F001510E6 /* button_background.png */; }; + D907F66B1669679000EB5273 /* GTLPlusAcl.m in Sources */ = {isa = PBXBuildFile; fileRef = D907F65A1669679000EB5273 /* GTLPlusAcl.m */; }; + D907F66C1669679000EB5273 /* GTLPlusAclentryResource.m in Sources */ = {isa = PBXBuildFile; fileRef = D907F65C1669679000EB5273 /* GTLPlusAclentryResource.m */; }; + D907F66D1669679000EB5273 /* GTLPlusActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = D907F65E1669679000EB5273 /* GTLPlusActivity.m */; }; + D907F66E1669679000EB5273 /* GTLPlusActivityFeed.m in Sources */ = {isa = PBXBuildFile; fileRef = D907F6601669679000EB5273 /* GTLPlusActivityFeed.m */; }; + D907F66F1669679000EB5273 /* GTLPlusComment.m in Sources */ = {isa = PBXBuildFile; fileRef = D907F6621669679000EB5273 /* GTLPlusComment.m */; }; + D907F6701669679000EB5273 /* GTLPlusCommentFeed.m in Sources */ = {isa = PBXBuildFile; fileRef = D907F6641669679000EB5273 /* GTLPlusCommentFeed.m */; }; + D907F6711669679000EB5273 /* GTLPlusMomentsFeed.m in Sources */ = {isa = PBXBuildFile; fileRef = D907F6661669679000EB5273 /* GTLPlusMomentsFeed.m */; }; + D907F6721669679000EB5273 /* GTLPlusPeopleFeed.m in Sources */ = {isa = PBXBuildFile; fileRef = D907F6681669679000EB5273 /* GTLPlusPeopleFeed.m */; }; + D907F6731669679000EB5273 /* GTLPlusPerson.m in Sources */ = {isa = PBXBuildFile; fileRef = D907F66A1669679000EB5273 /* GTLPlusPerson.m */; }; + D907F676166967D400EB5273 /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D907F675166967D400EB5273 /* Icon@2x.png */; }; + D945ED39166AE4950051858C /* GooglePlusSampleListMomentsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D945ED34166AE4950051858C /* GooglePlusSampleListMomentsViewController.m */; }; + D945ED3A166AE4950051858C /* GooglePlusSampleListMomentsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D945ED35166AE4950051858C /* GooglePlusSampleListMomentsViewController.xib */; }; + D945ED3B166AE4950051858C /* GooglePlusSampleListPeopleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D945ED37166AE4950051858C /* GooglePlusSampleListPeopleViewController.m */; }; + D945ED3C166AE4950051858C /* GooglePlusSampleListPeopleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D945ED38166AE4950051858C /* GooglePlusSampleListPeopleViewController.xib */; }; + D95C5B2616A08EE100EEF884 /* OpenInChromeController.m in Sources */ = {isa = PBXBuildFile; fileRef = D95C5B2516A08EE100EEF884 /* OpenInChromeController.m */; }; + D970AD4E16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC3816916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD4F16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC3B16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD5016916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC3E16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD5116916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC4116916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD5216916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC4416916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD5316916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC4716916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD5416916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC4A16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD5516916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC4D16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD5616916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC5016916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD5716916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC5316916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD5816916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC5616916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD5916916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC5916916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD5A16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC5C16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD5B16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC5F16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD5C16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC6216916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD5D16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC6516916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD5E16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC6816916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD5F16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC6B16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD6016916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC6E16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD6116916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC7116916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD6216916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC7416916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD6316916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC7716916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD6416916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC7A16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD6516916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC7D16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD6616916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC8016916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD6716916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC8316916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD6816916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC8616916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD6916916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC8916916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD6A16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC8C16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD6B16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC8F16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD6C16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC9216916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD6D16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC9516916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD6E16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC9816916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD6F16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC9B16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD7016916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AC9E16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD7116916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACA116916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD7216916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACA416916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD7316916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACA716916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD7416916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACAA16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD7516916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACAD16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD7616916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACB016916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD7716916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACB316916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD7816916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACB616916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD7916916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACB916916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD7A16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACBC16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD7B16916BBF00C7DD57 /* gpp_sign_in_dark_button_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACBE16916BBF00C7DD57 /* gpp_sign_in_dark_button_disabled.png */; }; + D970AD7C16916BBF00C7DD57 /* gpp_sign_in_dark_button_disabled@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACBF16916BBF00C7DD57 /* gpp_sign_in_dark_button_disabled@2x.png */; }; + D970AD7D16916BBF00C7DD57 /* gpp_sign_in_dark_button_normal.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACC016916BBF00C7DD57 /* gpp_sign_in_dark_button_normal.png */; }; + D970AD7E16916BBF00C7DD57 /* gpp_sign_in_dark_button_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACC116916BBF00C7DD57 /* gpp_sign_in_dark_button_normal@2x.png */; }; + D970AD7F16916BBF00C7DD57 /* gpp_sign_in_dark_button_pressed.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACC216916BBF00C7DD57 /* gpp_sign_in_dark_button_pressed.png */; }; + D970AD8016916BBF00C7DD57 /* gpp_sign_in_dark_button_pressed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACC316916BBF00C7DD57 /* gpp_sign_in_dark_button_pressed@2x.png */; }; + D970AD8116916BBF00C7DD57 /* gpp_sign_in_dark_icon_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACC416916BBF00C7DD57 /* gpp_sign_in_dark_icon_disabled.png */; }; + D970AD8216916BBF00C7DD57 /* gpp_sign_in_dark_icon_disabled@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACC516916BBF00C7DD57 /* gpp_sign_in_dark_icon_disabled@2x.png */; }; + D970AD8316916BBF00C7DD57 /* gpp_sign_in_dark_icon_normal.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACC616916BBF00C7DD57 /* gpp_sign_in_dark_icon_normal.png */; }; + D970AD8416916BBF00C7DD57 /* gpp_sign_in_dark_icon_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACC716916BBF00C7DD57 /* gpp_sign_in_dark_icon_normal@2x.png */; }; + D970AD8516916BBF00C7DD57 /* gpp_sign_in_dark_icon_pressed.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACC816916BBF00C7DD57 /* gpp_sign_in_dark_icon_pressed.png */; }; + D970AD8616916BBF00C7DD57 /* gpp_sign_in_dark_icon_pressed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACC916916BBF00C7DD57 /* gpp_sign_in_dark_icon_pressed@2x.png */; }; + D970AD8716916BBF00C7DD57 /* gpp_sign_in_light_button_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACCA16916BBF00C7DD57 /* gpp_sign_in_light_button_disabled.png */; }; + D970AD8816916BBF00C7DD57 /* gpp_sign_in_light_button_disabled@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACCB16916BBF00C7DD57 /* gpp_sign_in_light_button_disabled@2x.png */; }; + D970AD8916916BBF00C7DD57 /* gpp_sign_in_light_button_normal.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACCC16916BBF00C7DD57 /* gpp_sign_in_light_button_normal.png */; }; + D970AD8A16916BBF00C7DD57 /* gpp_sign_in_light_button_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACCD16916BBF00C7DD57 /* gpp_sign_in_light_button_normal@2x.png */; }; + D970AD8B16916BBF00C7DD57 /* gpp_sign_in_light_button_pressed.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACCE16916BBF00C7DD57 /* gpp_sign_in_light_button_pressed.png */; }; + D970AD8C16916BBF00C7DD57 /* gpp_sign_in_light_button_pressed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACCF16916BBF00C7DD57 /* gpp_sign_in_light_button_pressed@2x.png */; }; + D970AD8D16916BBF00C7DD57 /* gpp_sign_in_light_icon_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACD016916BBF00C7DD57 /* gpp_sign_in_light_icon_disabled.png */; }; + D970AD8E16916BBF00C7DD57 /* gpp_sign_in_light_icon_disabled@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACD116916BBF00C7DD57 /* gpp_sign_in_light_icon_disabled@2x.png */; }; + D970AD8F16916BBF00C7DD57 /* gpp_sign_in_light_icon_normal.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACD216916BBF00C7DD57 /* gpp_sign_in_light_icon_normal.png */; }; + D970AD9016916BBF00C7DD57 /* gpp_sign_in_light_icon_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACD316916BBF00C7DD57 /* gpp_sign_in_light_icon_normal@2x.png */; }; + D970AD9116916BBF00C7DD57 /* gpp_sign_in_light_icon_pressed.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACD416916BBF00C7DD57 /* gpp_sign_in_light_icon_pressed.png */; }; + D970AD9216916BBF00C7DD57 /* gpp_sign_in_light_icon_pressed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D970ACD516916BBF00C7DD57 /* gpp_sign_in_light_icon_pressed@2x.png */; }; + D970AD9316916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACD716916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD9416916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACDA16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD9516916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACDD16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD9616916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACE016916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD9716916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACE316916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD9816916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACE616916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD9916916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACE916916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD9A16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACEC16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD9B16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACEF16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD9C16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACF216916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD9D16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACF516916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD9E16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACF816916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970AD9F16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACFB16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADA016916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970ACFE16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADA116916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD0116916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADA216916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD0416916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADA316916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD0716916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADA416916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD0A16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADA516916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD0D16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADA616916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD1016916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADA716916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD1316916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADA816916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD1616916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADA916916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD1916916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADAA16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD1C16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADAB16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD1F16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADAC16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD2216916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADAD16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD2516916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADAE16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD2816916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADAF16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD2B16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADB016916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD2E16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADB116916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD3116916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADB216916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD3416916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADB316916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD3716916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADB416916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD3A16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADB516916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD3D16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADB616916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD4016916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADB716916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD4316916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADB816916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD4616916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADB916916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD4916916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; + D970ADBA16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */ = {isa = PBXBuildFile; fileRef = D970AD4C16916BBF00C7DD57 /* GooglePlusPlatform.strings */; }; D973B402158ABC1F0083A4B5 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D973B401158ABC1F0083A4B5 /* MessageUI.framework */; }; - D98254A815990D8D0060CA47 /* Icon_2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D98254A615990D8D0060CA47 /* Icon_2x.png */; }; D98254A915990D8D0060CA47 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = D98254A715990D8D0060CA47 /* Icon.png */; }; - D9EE743D158A8BD400EC1D05 /* google_plus_share_large.png in Resources */ = {isa = PBXBuildFile; fileRef = D9EE7435158A8BD400EC1D05 /* google_plus_share_large.png */; }; - D9EE743E158A8BD400EC1D05 /* google_plus_share_large@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D9EE7436158A8BD400EC1D05 /* google_plus_share_large@2x.png */; }; - D9EE743F158A8BD400EC1D05 /* google_plus_share.png in Resources */ = {isa = PBXBuildFile; fileRef = D9EE7437158A8BD400EC1D05 /* google_plus_share.png */; }; - D9EE7440158A8BD400EC1D05 /* google_plus_share@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D9EE7438158A8BD400EC1D05 /* google_plus_share@2x.png */; }; D9EE748D158A8C0E00EC1D05 /* GTLBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = D9EE7449158A8C0E00EC1D05 /* GTLBase64.m */; }; D9EE748E158A8C0E00EC1D05 /* GTLBatchQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = D9EE744B158A8C0E00EC1D05 /* GTLBatchQuery.m */; }; D9EE748F158A8C0E00EC1D05 /* GTLBatchResult.m in Sources */ = {isa = PBXBuildFile; fileRef = D9EE744D158A8C0E00EC1D05 /* GTLBatchResult.m */; }; @@ -63,10 +182,6 @@ D9EE74C9158A8E0500EC1D05 /* GooglePlusSampleSignInViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D9EE74BF158A8E0500EC1D05 /* GooglePlusSampleSignInViewController.m */; }; D9EE74CA158A8E0500EC1D05 /* GooglePlusSampleSignInViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D9EE74C0158A8E0500EC1D05 /* GooglePlusSampleSignInViewController.xib */; }; D9EE74CD158A8E2900EC1D05 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D9EE74CB158A8E2900EC1D05 /* InfoPlist.strings */; }; - D9EE74E4158A9A7D00EC1D05 /* google_plus_sign_in_wide.png in Resources */ = {isa = PBXBuildFile; fileRef = D9EE74E0158A9A7D00EC1D05 /* google_plus_sign_in_wide.png */; }; - D9EE74E5158A9A7D00EC1D05 /* google_plus_sign_in_wide@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D9EE74E1158A9A7D00EC1D05 /* google_plus_sign_in_wide@2x.png */; }; - D9EE74E6158A9A7D00EC1D05 /* google_plus_sign_in.png in Resources */ = {isa = PBXBuildFile; fileRef = D9EE74E2158A9A7D00EC1D05 /* google_plus_sign_in.png */; }; - D9EE74E7158A9A7D00EC1D05 /* google_plus_sign_in@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D9EE74E3158A9A7D00EC1D05 /* google_plus_sign_in@2x.png */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -79,16 +194,148 @@ 00F70E9A158008040077799E /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; 0C52D6F7158BAB1F001510E6 /* button_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = button_background.png; path = Resources/button_background.png; sourceTree = SOURCE_ROOT; }; 294FD685163B67F500A9D5CA /* GPPDeepLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GPPDeepLink.h; path = ../lib/GPPDeepLink.h; sourceTree = ""; }; + D907F6591669679000EB5273 /* GTLPlusAcl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusAcl.h; sourceTree = ""; }; + D907F65A1669679000EB5273 /* GTLPlusAcl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusAcl.m; sourceTree = ""; }; + D907F65B1669679000EB5273 /* GTLPlusAclentryResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusAclentryResource.h; sourceTree = ""; }; + D907F65C1669679000EB5273 /* GTLPlusAclentryResource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusAclentryResource.m; sourceTree = ""; }; + D907F65D1669679000EB5273 /* GTLPlusActivity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusActivity.h; sourceTree = ""; }; + D907F65E1669679000EB5273 /* GTLPlusActivity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusActivity.m; sourceTree = ""; }; + D907F65F1669679000EB5273 /* GTLPlusActivityFeed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusActivityFeed.h; sourceTree = ""; }; + D907F6601669679000EB5273 /* GTLPlusActivityFeed.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusActivityFeed.m; sourceTree = ""; }; + D907F6611669679000EB5273 /* GTLPlusComment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusComment.h; sourceTree = ""; }; + D907F6621669679000EB5273 /* GTLPlusComment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusComment.m; sourceTree = ""; }; + D907F6631669679000EB5273 /* GTLPlusCommentFeed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusCommentFeed.h; sourceTree = ""; }; + D907F6641669679000EB5273 /* GTLPlusCommentFeed.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusCommentFeed.m; sourceTree = ""; }; + D907F6651669679000EB5273 /* GTLPlusMomentsFeed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusMomentsFeed.h; sourceTree = ""; }; + D907F6661669679000EB5273 /* GTLPlusMomentsFeed.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusMomentsFeed.m; sourceTree = ""; }; + D907F6671669679000EB5273 /* GTLPlusPeopleFeed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusPeopleFeed.h; sourceTree = ""; }; + D907F6681669679000EB5273 /* GTLPlusPeopleFeed.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusPeopleFeed.m; sourceTree = ""; }; + D907F6691669679000EB5273 /* GTLPlusPerson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusPerson.h; sourceTree = ""; }; + D907F66A1669679000EB5273 /* GTLPlusPerson.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusPerson.m; sourceTree = ""; }; + D907F675166967D400EB5273 /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon@2x.png"; path = "Resources/Icon@2x.png"; sourceTree = SOURCE_ROOT; }; + D945ED33166AE4950051858C /* GooglePlusSampleListMomentsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GooglePlusSampleListMomentsViewController.h; sourceTree = SOURCE_ROOT; }; + D945ED34166AE4950051858C /* GooglePlusSampleListMomentsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GooglePlusSampleListMomentsViewController.m; sourceTree = SOURCE_ROOT; }; + D945ED35166AE4950051858C /* GooglePlusSampleListMomentsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GooglePlusSampleListMomentsViewController.xib; sourceTree = SOURCE_ROOT; }; + D945ED36166AE4950051858C /* GooglePlusSampleListPeopleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GooglePlusSampleListPeopleViewController.h; sourceTree = SOURCE_ROOT; }; + D945ED37166AE4950051858C /* GooglePlusSampleListPeopleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GooglePlusSampleListPeopleViewController.m; sourceTree = SOURCE_ROOT; }; + D945ED38166AE4950051858C /* GooglePlusSampleListPeopleViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GooglePlusSampleListPeopleViewController.xib; sourceTree = SOURCE_ROOT; }; + D95C5B2416A08EE100EEF884 /* OpenInChromeController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpenInChromeController.h; sourceTree = ""; }; + D95C5B2516A08EE100EEF884 /* OpenInChromeController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OpenInChromeController.m; sourceTree = ""; }; + D970AC3916916BBF00C7DD57 /* af */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = af; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC3C16916BBF00C7DD57 /* am */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = am; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC3F16916BBF00C7DD57 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC4216916BBF00C7DD57 /* be */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = be; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC4516916BBF00C7DD57 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC4816916BBF00C7DD57 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC4B16916BBF00C7DD57 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC4E16916BBF00C7DD57 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC5116916BBF00C7DD57 /* de_AT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de_AT; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC5416916BBF00C7DD57 /* de_CH */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de_CH; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC5716916BBF00C7DD57 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC5A16916BBF00C7DD57 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC5D16916BBF00C7DD57 /* en_GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en_GB; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC6016916BBF00C7DD57 /* en_IE */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en_IE; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC6316916BBF00C7DD57 /* en_IN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en_IN; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC6616916BBF00C7DD57 /* en_SG */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en_SG; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC6916916BBF00C7DD57 /* en_ZA */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en_ZA; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC6C16916BBF00C7DD57 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC6F16916BBF00C7DD57 /* es_419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_419; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC7216916BBF00C7DD57 /* es_AR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_AR; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC7516916BBF00C7DD57 /* es_BO */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_BO; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC7816916BBF00C7DD57 /* es_CL */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_CL; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC7B16916BBF00C7DD57 /* es_CO */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_CO; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC7E16916BBF00C7DD57 /* es_CR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_CR; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC8116916BBF00C7DD57 /* es_DO */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_DO; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC8416916BBF00C7DD57 /* es_EC */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_EC; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC8716916BBF00C7DD57 /* es_GT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_GT; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC8A16916BBF00C7DD57 /* es_HN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_HN; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC8D16916BBF00C7DD57 /* es_MX */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_MX; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC9016916BBF00C7DD57 /* es_NI */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_NI; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC9316916BBF00C7DD57 /* es_PA */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_PA; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC9616916BBF00C7DD57 /* es_PE */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_PE; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC9916916BBF00C7DD57 /* es_PR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_PR; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC9C16916BBF00C7DD57 /* es_PY */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_PY; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AC9F16916BBF00C7DD57 /* es_SV */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_SV; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACA216916BBF00C7DD57 /* es_US */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_US; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACA516916BBF00C7DD57 /* es_UY */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_UY; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACA816916BBF00C7DD57 /* es_VE */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es_VE; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACAB16916BBF00C7DD57 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACAE16916BBF00C7DD57 /* et */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = et; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACB116916BBF00C7DD57 /* fa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fa; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACB416916BBF00C7DD57 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACB716916BBF00C7DD57 /* fil */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fil; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACBA16916BBF00C7DD57 /* fr_CH */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr_CH; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACBD16916BBF00C7DD57 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACBE16916BBF00C7DD57 /* gpp_sign_in_dark_button_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = gpp_sign_in_dark_button_disabled.png; path = ../Resources/gpp_sign_in_dark_button_disabled.png; sourceTree = ""; }; + D970ACBF16916BBF00C7DD57 /* gpp_sign_in_dark_button_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "gpp_sign_in_dark_button_disabled@2x.png"; path = "../Resources/gpp_sign_in_dark_button_disabled@2x.png"; sourceTree = ""; }; + D970ACC016916BBF00C7DD57 /* gpp_sign_in_dark_button_normal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = gpp_sign_in_dark_button_normal.png; path = ../Resources/gpp_sign_in_dark_button_normal.png; sourceTree = ""; }; + D970ACC116916BBF00C7DD57 /* gpp_sign_in_dark_button_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "gpp_sign_in_dark_button_normal@2x.png"; path = "../Resources/gpp_sign_in_dark_button_normal@2x.png"; sourceTree = ""; }; + D970ACC216916BBF00C7DD57 /* gpp_sign_in_dark_button_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = gpp_sign_in_dark_button_pressed.png; path = ../Resources/gpp_sign_in_dark_button_pressed.png; sourceTree = ""; }; + D970ACC316916BBF00C7DD57 /* gpp_sign_in_dark_button_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "gpp_sign_in_dark_button_pressed@2x.png"; path = "../Resources/gpp_sign_in_dark_button_pressed@2x.png"; sourceTree = ""; }; + D970ACC416916BBF00C7DD57 /* gpp_sign_in_dark_icon_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = gpp_sign_in_dark_icon_disabled.png; path = ../Resources/gpp_sign_in_dark_icon_disabled.png; sourceTree = ""; }; + D970ACC516916BBF00C7DD57 /* gpp_sign_in_dark_icon_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "gpp_sign_in_dark_icon_disabled@2x.png"; path = "../Resources/gpp_sign_in_dark_icon_disabled@2x.png"; sourceTree = ""; }; + D970ACC616916BBF00C7DD57 /* gpp_sign_in_dark_icon_normal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = gpp_sign_in_dark_icon_normal.png; path = ../Resources/gpp_sign_in_dark_icon_normal.png; sourceTree = ""; }; + D970ACC716916BBF00C7DD57 /* gpp_sign_in_dark_icon_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "gpp_sign_in_dark_icon_normal@2x.png"; path = "../Resources/gpp_sign_in_dark_icon_normal@2x.png"; sourceTree = ""; }; + D970ACC816916BBF00C7DD57 /* gpp_sign_in_dark_icon_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = gpp_sign_in_dark_icon_pressed.png; path = ../Resources/gpp_sign_in_dark_icon_pressed.png; sourceTree = ""; }; + D970ACC916916BBF00C7DD57 /* gpp_sign_in_dark_icon_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "gpp_sign_in_dark_icon_pressed@2x.png"; path = "../Resources/gpp_sign_in_dark_icon_pressed@2x.png"; sourceTree = ""; }; + D970ACCA16916BBF00C7DD57 /* gpp_sign_in_light_button_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = gpp_sign_in_light_button_disabled.png; path = ../Resources/gpp_sign_in_light_button_disabled.png; sourceTree = ""; }; + D970ACCB16916BBF00C7DD57 /* gpp_sign_in_light_button_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "gpp_sign_in_light_button_disabled@2x.png"; path = "../Resources/gpp_sign_in_light_button_disabled@2x.png"; sourceTree = ""; }; + D970ACCC16916BBF00C7DD57 /* gpp_sign_in_light_button_normal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = gpp_sign_in_light_button_normal.png; path = ../Resources/gpp_sign_in_light_button_normal.png; sourceTree = ""; }; + D970ACCD16916BBF00C7DD57 /* gpp_sign_in_light_button_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "gpp_sign_in_light_button_normal@2x.png"; path = "../Resources/gpp_sign_in_light_button_normal@2x.png"; sourceTree = ""; }; + D970ACCE16916BBF00C7DD57 /* gpp_sign_in_light_button_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = gpp_sign_in_light_button_pressed.png; path = ../Resources/gpp_sign_in_light_button_pressed.png; sourceTree = ""; }; + D970ACCF16916BBF00C7DD57 /* gpp_sign_in_light_button_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "gpp_sign_in_light_button_pressed@2x.png"; path = "../Resources/gpp_sign_in_light_button_pressed@2x.png"; sourceTree = ""; }; + D970ACD016916BBF00C7DD57 /* gpp_sign_in_light_icon_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = gpp_sign_in_light_icon_disabled.png; path = ../Resources/gpp_sign_in_light_icon_disabled.png; sourceTree = ""; }; + D970ACD116916BBF00C7DD57 /* gpp_sign_in_light_icon_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "gpp_sign_in_light_icon_disabled@2x.png"; path = "../Resources/gpp_sign_in_light_icon_disabled@2x.png"; sourceTree = ""; }; + D970ACD216916BBF00C7DD57 /* gpp_sign_in_light_icon_normal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = gpp_sign_in_light_icon_normal.png; path = ../Resources/gpp_sign_in_light_icon_normal.png; sourceTree = ""; }; + D970ACD316916BBF00C7DD57 /* gpp_sign_in_light_icon_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "gpp_sign_in_light_icon_normal@2x.png"; path = "../Resources/gpp_sign_in_light_icon_normal@2x.png"; sourceTree = ""; }; + D970ACD416916BBF00C7DD57 /* gpp_sign_in_light_icon_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = gpp_sign_in_light_icon_pressed.png; path = ../Resources/gpp_sign_in_light_icon_pressed.png; sourceTree = ""; }; + D970ACD516916BBF00C7DD57 /* gpp_sign_in_light_icon_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "gpp_sign_in_light_icon_pressed@2x.png"; path = "../Resources/gpp_sign_in_light_icon_pressed@2x.png"; sourceTree = ""; }; + D970ACD816916BBF00C7DD57 /* gsw */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = gsw; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACDB16916BBF00C7DD57 /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACDE16916BBF00C7DD57 /* hi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hi; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACE116916BBF00C7DD57 /* hr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hr; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACE416916BBF00C7DD57 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACE716916BBF00C7DD57 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACEA16916BBF00C7DD57 /* in */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = in; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACED16916BBF00C7DD57 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACF016916BBF00C7DD57 /* iw */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = iw; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACF316916BBF00C7DD57 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACF616916BBF00C7DD57 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACF916916BBF00C7DD57 /* ln */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ln; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACFC16916BBF00C7DD57 /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lt; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970ACFF16916BBF00C7DD57 /* lv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lv; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD0216916BBF00C7DD57 /* mo */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = mo; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD0516916BBF00C7DD57 /* ms */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ms; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD0816916BBF00C7DD57 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD0B16916BBF00C7DD57 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD0E16916BBF00C7DD57 /* no */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = no; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD1116916BBF00C7DD57 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD1416916BBF00C7DD57 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt_BR; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD1716916BBF00C7DD57 /* pt_PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt_PT; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD1A16916BBF00C7DD57 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD1D16916BBF00C7DD57 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD2016916BBF00C7DD57 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD2316916BBF00C7DD57 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD2616916BBF00C7DD57 /* sl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sl; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD2916916BBF00C7DD57 /* sr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sr; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD2C16916BBF00C7DD57 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD2F16916BBF00C7DD57 /* sw */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sw; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD3216916BBF00C7DD57 /* th */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = th; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD3516916BBF00C7DD57 /* tl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tl; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD3816916BBF00C7DD57 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD3B16916BBF00C7DD57 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD3E16916BBF00C7DD57 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD4116916BBF00C7DD57 /* zh_CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_CN; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD4416916BBF00C7DD57 /* zh_HK */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_HK; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD4716916BBF00C7DD57 /* zh_TW */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_TW; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD4A16916BBF00C7DD57 /* zh */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh; path = GooglePlusPlatform.strings; sourceTree = ""; }; + D970AD4D16916BBF00C7DD57 /* zu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zu; path = GooglePlusPlatform.strings; sourceTree = ""; }; D973B401158ABC1F0083A4B5 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; - D98254A615990D8D0060CA47 /* Icon_2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Icon_2x.png; path = Resources/Icon_2x.png; sourceTree = SOURCE_ROOT; }; D98254A715990D8D0060CA47 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Icon.png; path = Resources/Icon.png; sourceTree = SOURCE_ROOT; }; + D9EE414B16C0B96E00AC228E /* GPPURLHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GPPURLHandler.h; path = ../lib/GPPURLHandler.h; sourceTree = ""; }; D9EE7431158A8BAE00EC1D05 /* GPPShare.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GPPShare.h; path = ../lib/GPPShare.h; sourceTree = ""; }; D9EE7432158A8BAE00EC1D05 /* GPPSignIn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GPPSignIn.h; path = ../lib/GPPSignIn.h; sourceTree = ""; }; D9EE7433158A8BAE00EC1D05 /* GPPSignInButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GPPSignInButton.h; path = ../lib/GPPSignInButton.h; sourceTree = ""; }; - D9EE7435158A8BD400EC1D05 /* google_plus_share_large.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = google_plus_share_large.png; path = ../Resources/google_plus_share_large.png; sourceTree = ""; }; - D9EE7436158A8BD400EC1D05 /* google_plus_share_large@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "google_plus_share_large@2x.png"; path = "../Resources/google_plus_share_large@2x.png"; sourceTree = ""; }; - D9EE7437158A8BD400EC1D05 /* google_plus_share.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = google_plus_share.png; path = ../Resources/google_plus_share.png; sourceTree = ""; }; - D9EE7438158A8BD400EC1D05 /* google_plus_share@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "google_plus_share@2x.png"; path = "../Resources/google_plus_share@2x.png"; sourceTree = ""; }; D9EE7448158A8C0E00EC1D05 /* GTLBase64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLBase64.h; sourceTree = ""; }; D9EE7449158A8C0E00EC1D05 /* GTLBase64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLBase64.m; sourceTree = ""; }; D9EE744A158A8C0E00EC1D05 /* GTLBatchQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLBatchQuery.h; sourceTree = ""; }; @@ -174,10 +421,6 @@ D9EE74BF158A8E0500EC1D05 /* GooglePlusSampleSignInViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GooglePlusSampleSignInViewController.m; sourceTree = SOURCE_ROOT; }; D9EE74C0158A8E0500EC1D05 /* GooglePlusSampleSignInViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GooglePlusSampleSignInViewController.xib; sourceTree = SOURCE_ROOT; }; D9EE74CC158A8E2900EC1D05 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = SOURCE_ROOT; }; - D9EE74E0158A9A7D00EC1D05 /* google_plus_sign_in_wide.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = google_plus_sign_in_wide.png; path = ../Resources/google_plus_sign_in_wide.png; sourceTree = ""; }; - D9EE74E1158A9A7D00EC1D05 /* google_plus_sign_in_wide@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "google_plus_sign_in_wide@2x.png"; path = "../Resources/google_plus_sign_in_wide@2x.png"; sourceTree = ""; }; - D9EE74E2158A9A7D00EC1D05 /* google_plus_sign_in.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = google_plus_sign_in.png; path = ../Resources/google_plus_sign_in.png; sourceTree = ""; }; - D9EE74E3158A9A7D00EC1D05 /* google_plus_sign_in@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "google_plus_sign_in@2x.png"; path = "../Resources/google_plus_sign_in@2x.png"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -235,6 +478,12 @@ children = ( D9EE74B3158A8E0500EC1D05 /* GooglePlusSampleAppDelegate.h */, D9EE74B4158A8E0500EC1D05 /* GooglePlusSampleAppDelegate.m */, + D945ED33166AE4950051858C /* GooglePlusSampleListMomentsViewController.h */, + D945ED34166AE4950051858C /* GooglePlusSampleListMomentsViewController.m */, + D945ED35166AE4950051858C /* GooglePlusSampleListMomentsViewController.xib */, + D945ED36166AE4950051858C /* GooglePlusSampleListPeopleViewController.h */, + D945ED37166AE4950051858C /* GooglePlusSampleListPeopleViewController.m */, + D945ED38166AE4950051858C /* GooglePlusSampleListPeopleViewController.xib */, D9EE74B5158A8E0500EC1D05 /* GooglePlusSampleMasterViewController.h */, D9EE74B6158A8E0500EC1D05 /* GooglePlusSampleMasterViewController.m */, D9EE74B7158A8E0500EC1D05 /* GooglePlusSampleMasterViewController.xib */, @@ -264,10 +513,775 @@ name = "Supporting Files"; sourceTree = ""; }; + D970AC3716916BBF00C7DD57 /* af.lproj */ = { + isa = PBXGroup; + children = ( + D970AC3816916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = af.lproj; + path = ../Resources/af.lproj; + sourceTree = ""; + }; + D970AC3A16916BBF00C7DD57 /* am.lproj */ = { + isa = PBXGroup; + children = ( + D970AC3B16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = am.lproj; + path = ../Resources/am.lproj; + sourceTree = ""; + }; + D970AC3D16916BBF00C7DD57 /* ar.lproj */ = { + isa = PBXGroup; + children = ( + D970AC3E16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = ar.lproj; + path = ../Resources/ar.lproj; + sourceTree = ""; + }; + D970AC4016916BBF00C7DD57 /* be.lproj */ = { + isa = PBXGroup; + children = ( + D970AC4116916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = be.lproj; + path = ../Resources/be.lproj; + sourceTree = ""; + }; + D970AC4316916BBF00C7DD57 /* bg.lproj */ = { + isa = PBXGroup; + children = ( + D970AC4416916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = bg.lproj; + path = ../Resources/bg.lproj; + sourceTree = ""; + }; + D970AC4616916BBF00C7DD57 /* ca.lproj */ = { + isa = PBXGroup; + children = ( + D970AC4716916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = ca.lproj; + path = ../Resources/ca.lproj; + sourceTree = ""; + }; + D970AC4916916BBF00C7DD57 /* cs.lproj */ = { + isa = PBXGroup; + children = ( + D970AC4A16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = cs.lproj; + path = ../Resources/cs.lproj; + sourceTree = ""; + }; + D970AC4C16916BBF00C7DD57 /* da.lproj */ = { + isa = PBXGroup; + children = ( + D970AC4D16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = da.lproj; + path = ../Resources/da.lproj; + sourceTree = ""; + }; + D970AC4F16916BBF00C7DD57 /* de_AT.lproj */ = { + isa = PBXGroup; + children = ( + D970AC5016916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = de_AT.lproj; + path = ../Resources/de_AT.lproj; + sourceTree = ""; + }; + D970AC5216916BBF00C7DD57 /* de_CH.lproj */ = { + isa = PBXGroup; + children = ( + D970AC5316916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = de_CH.lproj; + path = ../Resources/de_CH.lproj; + sourceTree = ""; + }; + D970AC5516916BBF00C7DD57 /* de.lproj */ = { + isa = PBXGroup; + children = ( + D970AC5616916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = de.lproj; + path = ../Resources/de.lproj; + sourceTree = ""; + }; + D970AC5816916BBF00C7DD57 /* el.lproj */ = { + isa = PBXGroup; + children = ( + D970AC5916916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = el.lproj; + path = ../Resources/el.lproj; + sourceTree = ""; + }; + D970AC5B16916BBF00C7DD57 /* en_GB.lproj */ = { + isa = PBXGroup; + children = ( + D970AC5C16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = en_GB.lproj; + path = ../Resources/en_GB.lproj; + sourceTree = ""; + }; + D970AC5E16916BBF00C7DD57 /* en_IE.lproj */ = { + isa = PBXGroup; + children = ( + D970AC5F16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = en_IE.lproj; + path = ../Resources/en_IE.lproj; + sourceTree = ""; + }; + D970AC6116916BBF00C7DD57 /* en_IN.lproj */ = { + isa = PBXGroup; + children = ( + D970AC6216916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = en_IN.lproj; + path = ../Resources/en_IN.lproj; + sourceTree = ""; + }; + D970AC6416916BBF00C7DD57 /* en_SG.lproj */ = { + isa = PBXGroup; + children = ( + D970AC6516916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = en_SG.lproj; + path = ../Resources/en_SG.lproj; + sourceTree = ""; + }; + D970AC6716916BBF00C7DD57 /* en_ZA.lproj */ = { + isa = PBXGroup; + children = ( + D970AC6816916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = en_ZA.lproj; + path = ../Resources/en_ZA.lproj; + sourceTree = ""; + }; + D970AC6A16916BBF00C7DD57 /* en.lproj */ = { + isa = PBXGroup; + children = ( + D970AC6B16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = en.lproj; + path = ../Resources/en.lproj; + sourceTree = ""; + }; + D970AC6D16916BBF00C7DD57 /* es_419.lproj */ = { + isa = PBXGroup; + children = ( + D970AC6E16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_419.lproj; + path = ../Resources/es_419.lproj; + sourceTree = ""; + }; + D970AC7016916BBF00C7DD57 /* es_AR.lproj */ = { + isa = PBXGroup; + children = ( + D970AC7116916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_AR.lproj; + path = ../Resources/es_AR.lproj; + sourceTree = ""; + }; + D970AC7316916BBF00C7DD57 /* es_BO.lproj */ = { + isa = PBXGroup; + children = ( + D970AC7416916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_BO.lproj; + path = ../Resources/es_BO.lproj; + sourceTree = ""; + }; + D970AC7616916BBF00C7DD57 /* es_CL.lproj */ = { + isa = PBXGroup; + children = ( + D970AC7716916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_CL.lproj; + path = ../Resources/es_CL.lproj; + sourceTree = ""; + }; + D970AC7916916BBF00C7DD57 /* es_CO.lproj */ = { + isa = PBXGroup; + children = ( + D970AC7A16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_CO.lproj; + path = ../Resources/es_CO.lproj; + sourceTree = ""; + }; + D970AC7C16916BBF00C7DD57 /* es_CR.lproj */ = { + isa = PBXGroup; + children = ( + D970AC7D16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_CR.lproj; + path = ../Resources/es_CR.lproj; + sourceTree = ""; + }; + D970AC7F16916BBF00C7DD57 /* es_DO.lproj */ = { + isa = PBXGroup; + children = ( + D970AC8016916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_DO.lproj; + path = ../Resources/es_DO.lproj; + sourceTree = ""; + }; + D970AC8216916BBF00C7DD57 /* es_EC.lproj */ = { + isa = PBXGroup; + children = ( + D970AC8316916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_EC.lproj; + path = ../Resources/es_EC.lproj; + sourceTree = ""; + }; + D970AC8516916BBF00C7DD57 /* es_GT.lproj */ = { + isa = PBXGroup; + children = ( + D970AC8616916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_GT.lproj; + path = ../Resources/es_GT.lproj; + sourceTree = ""; + }; + D970AC8816916BBF00C7DD57 /* es_HN.lproj */ = { + isa = PBXGroup; + children = ( + D970AC8916916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_HN.lproj; + path = ../Resources/es_HN.lproj; + sourceTree = ""; + }; + D970AC8B16916BBF00C7DD57 /* es_MX.lproj */ = { + isa = PBXGroup; + children = ( + D970AC8C16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_MX.lproj; + path = ../Resources/es_MX.lproj; + sourceTree = ""; + }; + D970AC8E16916BBF00C7DD57 /* es_NI.lproj */ = { + isa = PBXGroup; + children = ( + D970AC8F16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_NI.lproj; + path = ../Resources/es_NI.lproj; + sourceTree = ""; + }; + D970AC9116916BBF00C7DD57 /* es_PA.lproj */ = { + isa = PBXGroup; + children = ( + D970AC9216916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_PA.lproj; + path = ../Resources/es_PA.lproj; + sourceTree = ""; + }; + D970AC9416916BBF00C7DD57 /* es_PE.lproj */ = { + isa = PBXGroup; + children = ( + D970AC9516916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_PE.lproj; + path = ../Resources/es_PE.lproj; + sourceTree = ""; + }; + D970AC9716916BBF00C7DD57 /* es_PR.lproj */ = { + isa = PBXGroup; + children = ( + D970AC9816916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_PR.lproj; + path = ../Resources/es_PR.lproj; + sourceTree = ""; + }; + D970AC9A16916BBF00C7DD57 /* es_PY.lproj */ = { + isa = PBXGroup; + children = ( + D970AC9B16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_PY.lproj; + path = ../Resources/es_PY.lproj; + sourceTree = ""; + }; + D970AC9D16916BBF00C7DD57 /* es_SV.lproj */ = { + isa = PBXGroup; + children = ( + D970AC9E16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_SV.lproj; + path = ../Resources/es_SV.lproj; + sourceTree = ""; + }; + D970ACA016916BBF00C7DD57 /* es_US.lproj */ = { + isa = PBXGroup; + children = ( + D970ACA116916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_US.lproj; + path = ../Resources/es_US.lproj; + sourceTree = ""; + }; + D970ACA316916BBF00C7DD57 /* es_UY.lproj */ = { + isa = PBXGroup; + children = ( + D970ACA416916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_UY.lproj; + path = ../Resources/es_UY.lproj; + sourceTree = ""; + }; + D970ACA616916BBF00C7DD57 /* es_VE.lproj */ = { + isa = PBXGroup; + children = ( + D970ACA716916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es_VE.lproj; + path = ../Resources/es_VE.lproj; + sourceTree = ""; + }; + D970ACA916916BBF00C7DD57 /* es.lproj */ = { + isa = PBXGroup; + children = ( + D970ACAA16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = es.lproj; + path = ../Resources/es.lproj; + sourceTree = ""; + }; + D970ACAC16916BBF00C7DD57 /* et.lproj */ = { + isa = PBXGroup; + children = ( + D970ACAD16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = et.lproj; + path = ../Resources/et.lproj; + sourceTree = ""; + }; + D970ACAF16916BBF00C7DD57 /* fa.lproj */ = { + isa = PBXGroup; + children = ( + D970ACB016916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = fa.lproj; + path = ../Resources/fa.lproj; + sourceTree = ""; + }; + D970ACB216916BBF00C7DD57 /* fi.lproj */ = { + isa = PBXGroup; + children = ( + D970ACB316916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = fi.lproj; + path = ../Resources/fi.lproj; + sourceTree = ""; + }; + D970ACB516916BBF00C7DD57 /* fil.lproj */ = { + isa = PBXGroup; + children = ( + D970ACB616916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = fil.lproj; + path = ../Resources/fil.lproj; + sourceTree = ""; + }; + D970ACB816916BBF00C7DD57 /* fr_CH.lproj */ = { + isa = PBXGroup; + children = ( + D970ACB916916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = fr_CH.lproj; + path = ../Resources/fr_CH.lproj; + sourceTree = ""; + }; + D970ACBB16916BBF00C7DD57 /* fr.lproj */ = { + isa = PBXGroup; + children = ( + D970ACBC16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = fr.lproj; + path = ../Resources/fr.lproj; + sourceTree = ""; + }; + D970ACD616916BBF00C7DD57 /* gsw.lproj */ = { + isa = PBXGroup; + children = ( + D970ACD716916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = gsw.lproj; + path = ../Resources/gsw.lproj; + sourceTree = ""; + }; + D970ACD916916BBF00C7DD57 /* he.lproj */ = { + isa = PBXGroup; + children = ( + D970ACDA16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = he.lproj; + path = ../Resources/he.lproj; + sourceTree = ""; + }; + D970ACDC16916BBF00C7DD57 /* hi.lproj */ = { + isa = PBXGroup; + children = ( + D970ACDD16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = hi.lproj; + path = ../Resources/hi.lproj; + sourceTree = ""; + }; + D970ACDF16916BBF00C7DD57 /* hr.lproj */ = { + isa = PBXGroup; + children = ( + D970ACE016916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = hr.lproj; + path = ../Resources/hr.lproj; + sourceTree = ""; + }; + D970ACE216916BBF00C7DD57 /* hu.lproj */ = { + isa = PBXGroup; + children = ( + D970ACE316916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = hu.lproj; + path = ../Resources/hu.lproj; + sourceTree = ""; + }; + D970ACE516916BBF00C7DD57 /* id.lproj */ = { + isa = PBXGroup; + children = ( + D970ACE616916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = id.lproj; + path = ../Resources/id.lproj; + sourceTree = ""; + }; + D970ACE816916BBF00C7DD57 /* in.lproj */ = { + isa = PBXGroup; + children = ( + D970ACE916916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = in.lproj; + path = ../Resources/in.lproj; + sourceTree = ""; + }; + D970ACEB16916BBF00C7DD57 /* it.lproj */ = { + isa = PBXGroup; + children = ( + D970ACEC16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = it.lproj; + path = ../Resources/it.lproj; + sourceTree = ""; + }; + D970ACEE16916BBF00C7DD57 /* iw.lproj */ = { + isa = PBXGroup; + children = ( + D970ACEF16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = iw.lproj; + path = ../Resources/iw.lproj; + sourceTree = ""; + }; + D970ACF116916BBF00C7DD57 /* ja.lproj */ = { + isa = PBXGroup; + children = ( + D970ACF216916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = ja.lproj; + path = ../Resources/ja.lproj; + sourceTree = ""; + }; + D970ACF416916BBF00C7DD57 /* ko.lproj */ = { + isa = PBXGroup; + children = ( + D970ACF516916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = ko.lproj; + path = ../Resources/ko.lproj; + sourceTree = ""; + }; + D970ACF716916BBF00C7DD57 /* ln.lproj */ = { + isa = PBXGroup; + children = ( + D970ACF816916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = ln.lproj; + path = ../Resources/ln.lproj; + sourceTree = ""; + }; + D970ACFA16916BBF00C7DD57 /* lt.lproj */ = { + isa = PBXGroup; + children = ( + D970ACFB16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = lt.lproj; + path = ../Resources/lt.lproj; + sourceTree = ""; + }; + D970ACFD16916BBF00C7DD57 /* lv.lproj */ = { + isa = PBXGroup; + children = ( + D970ACFE16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = lv.lproj; + path = ../Resources/lv.lproj; + sourceTree = ""; + }; + D970AD0016916BBF00C7DD57 /* mo.lproj */ = { + isa = PBXGroup; + children = ( + D970AD0116916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = mo.lproj; + path = ../Resources/mo.lproj; + sourceTree = ""; + }; + D970AD0316916BBF00C7DD57 /* ms.lproj */ = { + isa = PBXGroup; + children = ( + D970AD0416916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = ms.lproj; + path = ../Resources/ms.lproj; + sourceTree = ""; + }; + D970AD0616916BBF00C7DD57 /* nb.lproj */ = { + isa = PBXGroup; + children = ( + D970AD0716916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = nb.lproj; + path = ../Resources/nb.lproj; + sourceTree = ""; + }; + D970AD0916916BBF00C7DD57 /* nl.lproj */ = { + isa = PBXGroup; + children = ( + D970AD0A16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = nl.lproj; + path = ../Resources/nl.lproj; + sourceTree = ""; + }; + D970AD0C16916BBF00C7DD57 /* no.lproj */ = { + isa = PBXGroup; + children = ( + D970AD0D16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = no.lproj; + path = ../Resources/no.lproj; + sourceTree = ""; + }; + D970AD0F16916BBF00C7DD57 /* pl.lproj */ = { + isa = PBXGroup; + children = ( + D970AD1016916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = pl.lproj; + path = ../Resources/pl.lproj; + sourceTree = ""; + }; + D970AD1216916BBF00C7DD57 /* pt_BR.lproj */ = { + isa = PBXGroup; + children = ( + D970AD1316916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = pt_BR.lproj; + path = ../Resources/pt_BR.lproj; + sourceTree = ""; + }; + D970AD1516916BBF00C7DD57 /* pt_PT.lproj */ = { + isa = PBXGroup; + children = ( + D970AD1616916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = pt_PT.lproj; + path = ../Resources/pt_PT.lproj; + sourceTree = ""; + }; + D970AD1816916BBF00C7DD57 /* pt.lproj */ = { + isa = PBXGroup; + children = ( + D970AD1916916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = pt.lproj; + path = ../Resources/pt.lproj; + sourceTree = ""; + }; + D970AD1B16916BBF00C7DD57 /* ro.lproj */ = { + isa = PBXGroup; + children = ( + D970AD1C16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = ro.lproj; + path = ../Resources/ro.lproj; + sourceTree = ""; + }; + D970AD1E16916BBF00C7DD57 /* ru.lproj */ = { + isa = PBXGroup; + children = ( + D970AD1F16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = ru.lproj; + path = ../Resources/ru.lproj; + sourceTree = ""; + }; + D970AD2116916BBF00C7DD57 /* sk.lproj */ = { + isa = PBXGroup; + children = ( + D970AD2216916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = sk.lproj; + path = ../Resources/sk.lproj; + sourceTree = ""; + }; + D970AD2416916BBF00C7DD57 /* sl.lproj */ = { + isa = PBXGroup; + children = ( + D970AD2516916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = sl.lproj; + path = ../Resources/sl.lproj; + sourceTree = ""; + }; + D970AD2716916BBF00C7DD57 /* sr.lproj */ = { + isa = PBXGroup; + children = ( + D970AD2816916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = sr.lproj; + path = ../Resources/sr.lproj; + sourceTree = ""; + }; + D970AD2A16916BBF00C7DD57 /* sv.lproj */ = { + isa = PBXGroup; + children = ( + D970AD2B16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = sv.lproj; + path = ../Resources/sv.lproj; + sourceTree = ""; + }; + D970AD2D16916BBF00C7DD57 /* sw.lproj */ = { + isa = PBXGroup; + children = ( + D970AD2E16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = sw.lproj; + path = ../Resources/sw.lproj; + sourceTree = ""; + }; + D970AD3016916BBF00C7DD57 /* th.lproj */ = { + isa = PBXGroup; + children = ( + D970AD3116916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = th.lproj; + path = ../Resources/th.lproj; + sourceTree = ""; + }; + D970AD3316916BBF00C7DD57 /* tl.lproj */ = { + isa = PBXGroup; + children = ( + D970AD3416916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = tl.lproj; + path = ../Resources/tl.lproj; + sourceTree = ""; + }; + D970AD3616916BBF00C7DD57 /* tr.lproj */ = { + isa = PBXGroup; + children = ( + D970AD3716916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = tr.lproj; + path = ../Resources/tr.lproj; + sourceTree = ""; + }; + D970AD3916916BBF00C7DD57 /* uk.lproj */ = { + isa = PBXGroup; + children = ( + D970AD3A16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = uk.lproj; + path = ../Resources/uk.lproj; + sourceTree = ""; + }; + D970AD3C16916BBF00C7DD57 /* vi.lproj */ = { + isa = PBXGroup; + children = ( + D970AD3D16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = vi.lproj; + path = ../Resources/vi.lproj; + sourceTree = ""; + }; + D970AD3F16916BBF00C7DD57 /* zh_CN.lproj */ = { + isa = PBXGroup; + children = ( + D970AD4016916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = zh_CN.lproj; + path = ../Resources/zh_CN.lproj; + sourceTree = ""; + }; + D970AD4216916BBF00C7DD57 /* zh_HK.lproj */ = { + isa = PBXGroup; + children = ( + D970AD4316916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = zh_HK.lproj; + path = ../Resources/zh_HK.lproj; + sourceTree = ""; + }; + D970AD4516916BBF00C7DD57 /* zh_TW.lproj */ = { + isa = PBXGroup; + children = ( + D970AD4616916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = zh_TW.lproj; + path = ../Resources/zh_TW.lproj; + sourceTree = ""; + }; + D970AD4816916BBF00C7DD57 /* zh.lproj */ = { + isa = PBXGroup; + children = ( + D970AD4916916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = zh.lproj; + path = ../Resources/zh.lproj; + sourceTree = ""; + }; + D970AD4B16916BBF00C7DD57 /* zu.lproj */ = { + isa = PBXGroup; + children = ( + D970AD4C16916BBF00C7DD57 /* GooglePlusPlatform.strings */, + ); + name = zu.lproj; + path = ../Resources/zu.lproj; + sourceTree = ""; + }; D98254AB15990DBC0060CA47 /* Resources */ = { isa = PBXGroup; children = ( - D98254A615990D8D0060CA47 /* Icon_2x.png */, + D907F675166967D400EB5273 /* Icon@2x.png */, D98254A715990D8D0060CA47 /* Icon.png */, 0C52D6F7158BAB1F001510E6 /* button_background.png */, ); @@ -281,6 +1295,7 @@ 294FD685163B67F500A9D5CA /* GPPDeepLink.h */, D9EE7432158A8BAE00EC1D05 /* GPPSignIn.h */, D9EE7433158A8BAE00EC1D05 /* GPPSignInButton.h */, + D9EE414B16C0B96E00AC228E /* GPPURLHandler.h */, D9EE74AD158A8D1E00EC1D05 /* libGooglePlus.a */, D9EE74AE158A8D1E00EC1D05 /* libGooglePlusUniversal.a */, D9EE7445158A8BDB00EC1D05 /* Resources */, @@ -291,14 +1306,115 @@ D9EE7445158A8BDB00EC1D05 /* Resources */ = { isa = PBXGroup; children = ( - D9EE74E0158A9A7D00EC1D05 /* google_plus_sign_in_wide.png */, - D9EE74E1158A9A7D00EC1D05 /* google_plus_sign_in_wide@2x.png */, - D9EE74E2158A9A7D00EC1D05 /* google_plus_sign_in.png */, - D9EE74E3158A9A7D00EC1D05 /* google_plus_sign_in@2x.png */, - D9EE7435158A8BD400EC1D05 /* google_plus_share_large.png */, - D9EE7436158A8BD400EC1D05 /* google_plus_share_large@2x.png */, - D9EE7437158A8BD400EC1D05 /* google_plus_share.png */, - D9EE7438158A8BD400EC1D05 /* google_plus_share@2x.png */, + D970ACBE16916BBF00C7DD57 /* gpp_sign_in_dark_button_disabled.png */, + D970ACBF16916BBF00C7DD57 /* gpp_sign_in_dark_button_disabled@2x.png */, + D970ACC016916BBF00C7DD57 /* gpp_sign_in_dark_button_normal.png */, + D970ACC116916BBF00C7DD57 /* gpp_sign_in_dark_button_normal@2x.png */, + D970ACC216916BBF00C7DD57 /* gpp_sign_in_dark_button_pressed.png */, + D970ACC316916BBF00C7DD57 /* gpp_sign_in_dark_button_pressed@2x.png */, + D970ACC416916BBF00C7DD57 /* gpp_sign_in_dark_icon_disabled.png */, + D970ACC516916BBF00C7DD57 /* gpp_sign_in_dark_icon_disabled@2x.png */, + D970ACC616916BBF00C7DD57 /* gpp_sign_in_dark_icon_normal.png */, + D970ACC716916BBF00C7DD57 /* gpp_sign_in_dark_icon_normal@2x.png */, + D970ACC816916BBF00C7DD57 /* gpp_sign_in_dark_icon_pressed.png */, + D970ACC916916BBF00C7DD57 /* gpp_sign_in_dark_icon_pressed@2x.png */, + D970ACCA16916BBF00C7DD57 /* gpp_sign_in_light_button_disabled.png */, + D970ACCB16916BBF00C7DD57 /* gpp_sign_in_light_button_disabled@2x.png */, + D970ACCC16916BBF00C7DD57 /* gpp_sign_in_light_button_normal.png */, + D970ACCD16916BBF00C7DD57 /* gpp_sign_in_light_button_normal@2x.png */, + D970ACCE16916BBF00C7DD57 /* gpp_sign_in_light_button_pressed.png */, + D970ACCF16916BBF00C7DD57 /* gpp_sign_in_light_button_pressed@2x.png */, + D970ACD016916BBF00C7DD57 /* gpp_sign_in_light_icon_disabled.png */, + D970ACD116916BBF00C7DD57 /* gpp_sign_in_light_icon_disabled@2x.png */, + D970ACD216916BBF00C7DD57 /* gpp_sign_in_light_icon_normal.png */, + D970ACD316916BBF00C7DD57 /* gpp_sign_in_light_icon_normal@2x.png */, + D970ACD416916BBF00C7DD57 /* gpp_sign_in_light_icon_pressed.png */, + D970ACD516916BBF00C7DD57 /* gpp_sign_in_light_icon_pressed@2x.png */, + D970AC3716916BBF00C7DD57 /* af.lproj */, + D970AC3A16916BBF00C7DD57 /* am.lproj */, + D970AC3D16916BBF00C7DD57 /* ar.lproj */, + D970AC4016916BBF00C7DD57 /* be.lproj */, + D970AC4316916BBF00C7DD57 /* bg.lproj */, + D970AC4616916BBF00C7DD57 /* ca.lproj */, + D970AC4916916BBF00C7DD57 /* cs.lproj */, + D970AC4C16916BBF00C7DD57 /* da.lproj */, + D970AC4F16916BBF00C7DD57 /* de_AT.lproj */, + D970AC5216916BBF00C7DD57 /* de_CH.lproj */, + D970AC5516916BBF00C7DD57 /* de.lproj */, + D970AC5816916BBF00C7DD57 /* el.lproj */, + D970AC5B16916BBF00C7DD57 /* en_GB.lproj */, + D970AC5E16916BBF00C7DD57 /* en_IE.lproj */, + D970AC6116916BBF00C7DD57 /* en_IN.lproj */, + D970AC6416916BBF00C7DD57 /* en_SG.lproj */, + D970AC6716916BBF00C7DD57 /* en_ZA.lproj */, + D970AC6A16916BBF00C7DD57 /* en.lproj */, + D970AC6D16916BBF00C7DD57 /* es_419.lproj */, + D970AC7016916BBF00C7DD57 /* es_AR.lproj */, + D970AC7316916BBF00C7DD57 /* es_BO.lproj */, + D970AC7616916BBF00C7DD57 /* es_CL.lproj */, + D970AC7916916BBF00C7DD57 /* es_CO.lproj */, + D970AC7C16916BBF00C7DD57 /* es_CR.lproj */, + D970AC7F16916BBF00C7DD57 /* es_DO.lproj */, + D970AC8216916BBF00C7DD57 /* es_EC.lproj */, + D970AC8516916BBF00C7DD57 /* es_GT.lproj */, + D970AC8816916BBF00C7DD57 /* es_HN.lproj */, + D970AC8B16916BBF00C7DD57 /* es_MX.lproj */, + D970AC8E16916BBF00C7DD57 /* es_NI.lproj */, + D970AC9116916BBF00C7DD57 /* es_PA.lproj */, + D970AC9416916BBF00C7DD57 /* es_PE.lproj */, + D970AC9716916BBF00C7DD57 /* es_PR.lproj */, + D970AC9A16916BBF00C7DD57 /* es_PY.lproj */, + D970AC9D16916BBF00C7DD57 /* es_SV.lproj */, + D970ACA016916BBF00C7DD57 /* es_US.lproj */, + D970ACA316916BBF00C7DD57 /* es_UY.lproj */, + D970ACA616916BBF00C7DD57 /* es_VE.lproj */, + D970ACA916916BBF00C7DD57 /* es.lproj */, + D970ACAC16916BBF00C7DD57 /* et.lproj */, + D970ACAF16916BBF00C7DD57 /* fa.lproj */, + D970ACB216916BBF00C7DD57 /* fi.lproj */, + D970ACB516916BBF00C7DD57 /* fil.lproj */, + D970ACB816916BBF00C7DD57 /* fr_CH.lproj */, + D970ACBB16916BBF00C7DD57 /* fr.lproj */, + D970ACD616916BBF00C7DD57 /* gsw.lproj */, + D970ACD916916BBF00C7DD57 /* he.lproj */, + D970ACDC16916BBF00C7DD57 /* hi.lproj */, + D970ACDF16916BBF00C7DD57 /* hr.lproj */, + D970ACE216916BBF00C7DD57 /* hu.lproj */, + D970ACE516916BBF00C7DD57 /* id.lproj */, + D970ACE816916BBF00C7DD57 /* in.lproj */, + D970ACEB16916BBF00C7DD57 /* it.lproj */, + D970ACEE16916BBF00C7DD57 /* iw.lproj */, + D970ACF116916BBF00C7DD57 /* ja.lproj */, + D970ACF416916BBF00C7DD57 /* ko.lproj */, + D970ACF716916BBF00C7DD57 /* ln.lproj */, + D970ACFA16916BBF00C7DD57 /* lt.lproj */, + D970ACFD16916BBF00C7DD57 /* lv.lproj */, + D970AD0016916BBF00C7DD57 /* mo.lproj */, + D970AD0316916BBF00C7DD57 /* ms.lproj */, + D970AD0616916BBF00C7DD57 /* nb.lproj */, + D970AD0916916BBF00C7DD57 /* nl.lproj */, + D970AD0C16916BBF00C7DD57 /* no.lproj */, + D970AD0F16916BBF00C7DD57 /* pl.lproj */, + D970AD1216916BBF00C7DD57 /* pt_BR.lproj */, + D970AD1516916BBF00C7DD57 /* pt_PT.lproj */, + D970AD1816916BBF00C7DD57 /* pt.lproj */, + D970AD1B16916BBF00C7DD57 /* ro.lproj */, + D970AD1E16916BBF00C7DD57 /* ru.lproj */, + D970AD2116916BBF00C7DD57 /* sk.lproj */, + D970AD2416916BBF00C7DD57 /* sl.lproj */, + D970AD2716916BBF00C7DD57 /* sr.lproj */, + D970AD2A16916BBF00C7DD57 /* sv.lproj */, + D970AD2D16916BBF00C7DD57 /* sw.lproj */, + D970AD3016916BBF00C7DD57 /* th.lproj */, + D970AD3316916BBF00C7DD57 /* tl.lproj */, + D970AD3616916BBF00C7DD57 /* tr.lproj */, + D970AD3916916BBF00C7DD57 /* uk.lproj */, + D970AD3C16916BBF00C7DD57 /* vi.lproj */, + D970AD3F16916BBF00C7DD57 /* zh_CN.lproj */, + D970AD4216916BBF00C7DD57 /* zh_HK.lproj */, + D970AD4516916BBF00C7DD57 /* zh_TW.lproj */, + D970AD4816916BBF00C7DD57 /* zh.lproj */, + D970AD4B16916BBF00C7DD57 /* zu.lproj */, ); name = Resources; sourceTree = ""; @@ -334,6 +1450,8 @@ D9EE748A158A8C0E00EC1D05 /* GTMOAuth2ViewTouch.xib */, D9EE748B158A8C0E00EC1D05 /* GTMObjC2Runtime.h */, D9EE748C158A8C0E00EC1D05 /* GTMObjC2Runtime.m */, + D95C5B2416A08EE100EEF884 /* OpenInChromeController.h */, + D95C5B2516A08EE100EEF884 /* OpenInChromeController.m */, ); name = GoogleOpenSource; path = ../OpenSource; @@ -379,12 +1497,30 @@ isa = PBXGroup; children = ( D9EE745A158A8C0E00EC1D05 /* GTLPlus.h */, + D907F6591669679000EB5273 /* GTLPlusAcl.h */, + D907F65A1669679000EB5273 /* GTLPlusAcl.m */, + D907F65B1669679000EB5273 /* GTLPlusAclentryResource.h */, + D907F65C1669679000EB5273 /* GTLPlusAclentryResource.m */, + D907F65D1669679000EB5273 /* GTLPlusActivity.h */, + D907F65E1669679000EB5273 /* GTLPlusActivity.m */, + D907F65F1669679000EB5273 /* GTLPlusActivityFeed.h */, + D907F6601669679000EB5273 /* GTLPlusActivityFeed.m */, + D907F6611669679000EB5273 /* GTLPlusComment.h */, + D907F6621669679000EB5273 /* GTLPlusComment.m */, + D907F6631669679000EB5273 /* GTLPlusCommentFeed.h */, + D907F6641669679000EB5273 /* GTLPlusCommentFeed.m */, D9EE745B158A8C0E00EC1D05 /* GTLPlusConstants.h */, D9EE745C158A8C0E00EC1D05 /* GTLPlusConstants.m */, D9EE745D158A8C0E00EC1D05 /* GTLPlusItemScope.h */, D9EE745E158A8C0E00EC1D05 /* GTLPlusItemScope.m */, D9EE745F158A8C0E00EC1D05 /* GTLPlusMoment.h */, D9EE7460158A8C0E00EC1D05 /* GTLPlusMoment.m */, + D907F6651669679000EB5273 /* GTLPlusMomentsFeed.h */, + D907F6661669679000EB5273 /* GTLPlusMomentsFeed.m */, + D907F6671669679000EB5273 /* GTLPlusPeopleFeed.h */, + D907F6681669679000EB5273 /* GTLPlusPeopleFeed.m */, + D907F6691669679000EB5273 /* GTLPlusPerson.h */, + D907F66A1669679000EB5273 /* GTLPlusPerson.m */, D9EE7463158A8C0E00EC1D05 /* GTLQueryPlus.h */, D9EE7464158A8C0E00EC1D05 /* GTLQueryPlus.m */, D9EE7465158A8C0E00EC1D05 /* GTLServicePlus.h */, @@ -428,6 +1564,90 @@ hasScannedForEncodings = 0; knownRegions = ( en, + af, + am, + ar, + be, + bg, + ca, + cs, + da, + de_AT, + de_CH, + de, + el, + en_GB, + en_IE, + en_IN, + en_SG, + en_ZA, + es_419, + es_AR, + es_BO, + es_CL, + es_CO, + es_CR, + es_DO, + es_EC, + es_GT, + es_HN, + es_MX, + es_NI, + es_PA, + es_PE, + es_PR, + es_PY, + es_SV, + es_US, + es_UY, + es_VE, + es, + et, + fa, + fi, + fil, + fr_CH, + fr, + gsw, + he, + hi, + hr, + hu, + id, + in, + it, + iw, + ja, + ko, + ln, + lt, + lv, + mo, + ms, + nb, + nl, + no, + pl, + pt_BR, + pt_PT, + pt, + ro, + ru, + sk, + sl, + sr, + sv, + sw, + th, + tl, + tr, + uk, + vi, + zh_CN, + zh_HK, + zh_TW, + zh, + zu, ); mainGroup = 0043C78F1580045B000DF02E; productRefGroup = 0043C79B1580045B000DF02E /* Products */; @@ -444,14 +1664,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - D9EE743D158A8BD400EC1D05 /* google_plus_share_large.png in Resources */, - D9EE743E158A8BD400EC1D05 /* google_plus_share_large@2x.png in Resources */, - D9EE743F158A8BD400EC1D05 /* google_plus_share.png in Resources */, - D9EE7440158A8BD400EC1D05 /* google_plus_share@2x.png in Resources */, - D9EE74E4158A9A7D00EC1D05 /* google_plus_sign_in_wide.png in Resources */, - D9EE74E5158A9A7D00EC1D05 /* google_plus_sign_in_wide@2x.png in Resources */, - D9EE74E6158A9A7D00EC1D05 /* google_plus_sign_in.png in Resources */, - D9EE74E7158A9A7D00EC1D05 /* google_plus_sign_in@2x.png in Resources */, D9EE74AB158A8C0E00EC1D05 /* GTMOAuth2ViewTouch.xib in Resources */, D9EE74C4158A8E0500EC1D05 /* GooglePlusSampleMasterViewController.xib in Resources */, D9EE74C6158A8E0500EC1D05 /* GooglePlusSampleMomentsViewController.xib in Resources */, @@ -459,8 +1671,119 @@ D9EE74CA158A8E0500EC1D05 /* GooglePlusSampleSignInViewController.xib in Resources */, D9EE74CD158A8E2900EC1D05 /* InfoPlist.strings in Resources */, 0C52D6F8158BAB1F001510E6 /* button_background.png in Resources */, - D98254A815990D8D0060CA47 /* Icon_2x.png in Resources */, D98254A915990D8D0060CA47 /* Icon.png in Resources */, + D907F676166967D400EB5273 /* Icon@2x.png in Resources */, + D945ED3A166AE4950051858C /* GooglePlusSampleListMomentsViewController.xib in Resources */, + D945ED3C166AE4950051858C /* GooglePlusSampleListPeopleViewController.xib in Resources */, + D970AD4E16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD4F16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD5016916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD5116916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD5216916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD5316916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD5416916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD5516916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD5616916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD5716916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD5816916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD5916916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD5A16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD5B16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD5C16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD5D16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD5E16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD5F16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD6016916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD6116916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD6216916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD6316916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD6416916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD6516916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD6616916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD6716916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD6816916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD6916916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD6A16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD6B16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD6C16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD6D16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD6E16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD6F16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD7016916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD7116916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD7216916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD7316916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD7416916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD7516916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD7616916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD7716916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD7816916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD7916916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD7A16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD7B16916BBF00C7DD57 /* gpp_sign_in_dark_button_disabled.png in Resources */, + D970AD7C16916BBF00C7DD57 /* gpp_sign_in_dark_button_disabled@2x.png in Resources */, + D970AD7D16916BBF00C7DD57 /* gpp_sign_in_dark_button_normal.png in Resources */, + D970AD7E16916BBF00C7DD57 /* gpp_sign_in_dark_button_normal@2x.png in Resources */, + D970AD7F16916BBF00C7DD57 /* gpp_sign_in_dark_button_pressed.png in Resources */, + D970AD8016916BBF00C7DD57 /* gpp_sign_in_dark_button_pressed@2x.png in Resources */, + D970AD8116916BBF00C7DD57 /* gpp_sign_in_dark_icon_disabled.png in Resources */, + D970AD8216916BBF00C7DD57 /* gpp_sign_in_dark_icon_disabled@2x.png in Resources */, + D970AD8316916BBF00C7DD57 /* gpp_sign_in_dark_icon_normal.png in Resources */, + D970AD8416916BBF00C7DD57 /* gpp_sign_in_dark_icon_normal@2x.png in Resources */, + D970AD8516916BBF00C7DD57 /* gpp_sign_in_dark_icon_pressed.png in Resources */, + D970AD8616916BBF00C7DD57 /* gpp_sign_in_dark_icon_pressed@2x.png in Resources */, + D970AD8716916BBF00C7DD57 /* gpp_sign_in_light_button_disabled.png in Resources */, + D970AD8816916BBF00C7DD57 /* gpp_sign_in_light_button_disabled@2x.png in Resources */, + D970AD8916916BBF00C7DD57 /* gpp_sign_in_light_button_normal.png in Resources */, + D970AD8A16916BBF00C7DD57 /* gpp_sign_in_light_button_normal@2x.png in Resources */, + D970AD8B16916BBF00C7DD57 /* gpp_sign_in_light_button_pressed.png in Resources */, + D970AD8C16916BBF00C7DD57 /* gpp_sign_in_light_button_pressed@2x.png in Resources */, + D970AD8D16916BBF00C7DD57 /* gpp_sign_in_light_icon_disabled.png in Resources */, + D970AD8E16916BBF00C7DD57 /* gpp_sign_in_light_icon_disabled@2x.png in Resources */, + D970AD8F16916BBF00C7DD57 /* gpp_sign_in_light_icon_normal.png in Resources */, + D970AD9016916BBF00C7DD57 /* gpp_sign_in_light_icon_normal@2x.png in Resources */, + D970AD9116916BBF00C7DD57 /* gpp_sign_in_light_icon_pressed.png in Resources */, + D970AD9216916BBF00C7DD57 /* gpp_sign_in_light_icon_pressed@2x.png in Resources */, + D970AD9316916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD9416916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD9516916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD9616916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD9716916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD9816916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD9916916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD9A16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD9B16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD9C16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD9D16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD9E16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970AD9F16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADA016916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADA116916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADA216916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADA316916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADA416916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADA516916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADA616916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADA716916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADA816916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADA916916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADAA16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADAB16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADAC16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADAD16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADAE16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADAF16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADB016916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADB116916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADB216916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADB316916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADB416916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADB516916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADB616916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADB716916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADB816916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADB916916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, + D970ADBA16916BBF00C7DD57 /* GooglePlusPlatform.strings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -507,12 +1830,704 @@ D9EE74C5158A8E0500EC1D05 /* GooglePlusSampleMomentsViewController.m in Sources */, D9EE74C7158A8E0500EC1D05 /* GooglePlusSampleShareViewController.m in Sources */, D9EE74C9158A8E0500EC1D05 /* GooglePlusSampleSignInViewController.m in Sources */, + D907F66B1669679000EB5273 /* GTLPlusAcl.m in Sources */, + D907F66C1669679000EB5273 /* GTLPlusAclentryResource.m in Sources */, + D907F66D1669679000EB5273 /* GTLPlusActivity.m in Sources */, + D907F66E1669679000EB5273 /* GTLPlusActivityFeed.m in Sources */, + D907F66F1669679000EB5273 /* GTLPlusComment.m in Sources */, + D907F6701669679000EB5273 /* GTLPlusCommentFeed.m in Sources */, + D907F6711669679000EB5273 /* GTLPlusMomentsFeed.m in Sources */, + D907F6721669679000EB5273 /* GTLPlusPeopleFeed.m in Sources */, + D907F6731669679000EB5273 /* GTLPlusPerson.m in Sources */, + D945ED39166AE4950051858C /* GooglePlusSampleListMomentsViewController.m in Sources */, + D945ED3B166AE4950051858C /* GooglePlusSampleListPeopleViewController.m in Sources */, + D95C5B2616A08EE100EEF884 /* OpenInChromeController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ + D970AC3816916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC3916916BBF00C7DD57 /* af */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC3B16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC3C16916BBF00C7DD57 /* am */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC3E16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC3F16916BBF00C7DD57 /* ar */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC4116916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC4216916BBF00C7DD57 /* be */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC4416916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC4516916BBF00C7DD57 /* bg */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC4716916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC4816916BBF00C7DD57 /* ca */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC4A16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC4B16916BBF00C7DD57 /* cs */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC4D16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC4E16916BBF00C7DD57 /* da */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC5016916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC5116916BBF00C7DD57 /* de_AT */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC5316916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC5416916BBF00C7DD57 /* de_CH */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC5616916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC5716916BBF00C7DD57 /* de */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC5916916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC5A16916BBF00C7DD57 /* el */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC5C16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC5D16916BBF00C7DD57 /* en_GB */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC5F16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC6016916BBF00C7DD57 /* en_IE */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC6216916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC6316916BBF00C7DD57 /* en_IN */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC6516916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC6616916BBF00C7DD57 /* en_SG */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC6816916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC6916916BBF00C7DD57 /* en_ZA */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC6B16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC6C16916BBF00C7DD57 /* en */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC6E16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC6F16916BBF00C7DD57 /* es_419 */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC7116916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC7216916BBF00C7DD57 /* es_AR */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC7416916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC7516916BBF00C7DD57 /* es_BO */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC7716916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC7816916BBF00C7DD57 /* es_CL */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC7A16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC7B16916BBF00C7DD57 /* es_CO */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC7D16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC7E16916BBF00C7DD57 /* es_CR */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC8016916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC8116916BBF00C7DD57 /* es_DO */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC8316916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC8416916BBF00C7DD57 /* es_EC */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC8616916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC8716916BBF00C7DD57 /* es_GT */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC8916916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC8A16916BBF00C7DD57 /* es_HN */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC8C16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC8D16916BBF00C7DD57 /* es_MX */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC8F16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC9016916BBF00C7DD57 /* es_NI */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC9216916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC9316916BBF00C7DD57 /* es_PA */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC9516916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC9616916BBF00C7DD57 /* es_PE */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC9816916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC9916916BBF00C7DD57 /* es_PR */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC9B16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC9C16916BBF00C7DD57 /* es_PY */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AC9E16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AC9F16916BBF00C7DD57 /* es_SV */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACA116916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACA216916BBF00C7DD57 /* es_US */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACA416916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACA516916BBF00C7DD57 /* es_UY */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACA716916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACA816916BBF00C7DD57 /* es_VE */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACAA16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACAB16916BBF00C7DD57 /* es */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACAD16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACAE16916BBF00C7DD57 /* et */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACB016916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACB116916BBF00C7DD57 /* fa */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACB316916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACB416916BBF00C7DD57 /* fi */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACB616916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACB716916BBF00C7DD57 /* fil */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACB916916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACBA16916BBF00C7DD57 /* fr_CH */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACBC16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACBD16916BBF00C7DD57 /* fr */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACD716916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACD816916BBF00C7DD57 /* gsw */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACDA16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACDB16916BBF00C7DD57 /* he */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACDD16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACDE16916BBF00C7DD57 /* hi */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACE016916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACE116916BBF00C7DD57 /* hr */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACE316916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACE416916BBF00C7DD57 /* hu */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACE616916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACE716916BBF00C7DD57 /* id */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACE916916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACEA16916BBF00C7DD57 /* in */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACEC16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACED16916BBF00C7DD57 /* it */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACEF16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACF016916BBF00C7DD57 /* iw */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACF216916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACF316916BBF00C7DD57 /* ja */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACF516916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACF616916BBF00C7DD57 /* ko */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACF816916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACF916916BBF00C7DD57 /* ln */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACFB16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACFC16916BBF00C7DD57 /* lt */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970ACFE16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970ACFF16916BBF00C7DD57 /* lv */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD0116916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD0216916BBF00C7DD57 /* mo */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD0416916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD0516916BBF00C7DD57 /* ms */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD0716916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD0816916BBF00C7DD57 /* nb */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD0A16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD0B16916BBF00C7DD57 /* nl */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD0D16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD0E16916BBF00C7DD57 /* no */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD1016916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD1116916BBF00C7DD57 /* pl */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD1316916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD1416916BBF00C7DD57 /* pt_BR */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD1616916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD1716916BBF00C7DD57 /* pt_PT */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD1916916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD1A16916BBF00C7DD57 /* pt */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD1C16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD1D16916BBF00C7DD57 /* ro */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD1F16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD2016916BBF00C7DD57 /* ru */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD2216916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD2316916BBF00C7DD57 /* sk */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD2516916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD2616916BBF00C7DD57 /* sl */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD2816916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD2916916BBF00C7DD57 /* sr */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD2B16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD2C16916BBF00C7DD57 /* sv */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD2E16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD2F16916BBF00C7DD57 /* sw */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD3116916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD3216916BBF00C7DD57 /* th */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD3416916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD3516916BBF00C7DD57 /* tl */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD3716916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD3816916BBF00C7DD57 /* tr */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD3A16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD3B16916BBF00C7DD57 /* uk */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD3D16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD3E16916BBF00C7DD57 /* vi */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD4016916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD4116916BBF00C7DD57 /* zh_CN */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD4316916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD4416916BBF00C7DD57 /* zh_HK */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD4616916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD4716916BBF00C7DD57 /* zh_TW */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD4916916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD4A16916BBF00C7DD57 /* zh */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; + D970AD4C16916BBF00C7DD57 /* GooglePlusPlatform.strings */ = { + isa = PBXVariantGroup; + children = ( + D970AD4D16916BBF00C7DD57 /* zu */, + ); + name = GooglePlusPlatform.strings; + sourceTree = ""; + }; D9EE74CB158A8E2900EC1D05 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( @@ -544,10 +2559,7 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 5.0; - OTHER_LDFLAGS = ( - "-all_load", - "-ObjC", - ); + OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -567,10 +2579,7 @@ GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 5.0; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; - OTHER_LDFLAGS = ( - "-all_load", - "-ObjC", - ); + OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; @@ -588,10 +2597,7 @@ "\"$(SRCROOT)\"", "\"$(SRCROOT)/../lib\"", ); - OTHER_LDFLAGS = ( - "-all_load", - "-ObjC", - ); + OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -608,10 +2614,7 @@ "\"$(SRCROOT)\"", "\"$(SRCROOT)/../lib\"", ); - OTHER_LDFLAGS = ( - "-all_load", - "-ObjC", - ); + OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSample.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/External/google-plus-ios-sdk/SampleCode/GooglePlusSample.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 87d7bd1d..00000000 --- a/External/google-plus-ios-sdk/SampleCode/GooglePlusSample.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleAppDelegate.h b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleAppDelegate.h index 6bde1282..28703dd6 100644 --- a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleAppDelegate.h +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleAppDelegate.h @@ -18,27 +18,16 @@ #import -@class GPPShare; -@class GPPSignInButton; +#import "GPPDeepLink.h" + @class GTMOAuth2Authentication; -@interface GooglePlusSampleAppDelegate : UIResponder +@interface GooglePlusSampleAppDelegate : UIResponder< + UIApplicationDelegate, GPPDeepLinkDelegate> // The sample app's |UIWindow|. @property (retain, nonatomic) UIWindow *window; // The navigation controller. @property (retain, nonatomic) UINavigationController *navigationController; -// The Google+ sign-in button to handle the URL redirect. -@property (retain, nonatomic) GPPSignInButton *signInButton; -// The OAuth 2.0 authentication used in the application. -@property (retain, nonatomic) GTMOAuth2Authentication *auth; -// The Google+ share object to handle the URL redirect. -@property (retain, nonatomic) GPPShare *share; -// Whether or not to use Google+ history's -// https://www.googleapis.com/auth/plus.moments.write scope. -@property (assign, nonatomic) BOOL plusMomentsWriteScope; - -// The OAuth 2.0 client ID to be used for Google+ sign-in, share, and moments. -+ (NSString *)clientID; @end diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleAppDelegate.m b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleAppDelegate.m index e79023b5..6eba6c53 100644 --- a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleAppDelegate.m +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleAppDelegate.m @@ -19,42 +19,31 @@ #import "GooglePlusSampleAppDelegate.h" #import "GooglePlusSampleMasterViewController.h" -#import "GPPDeepLink.h" #import "GPPSignIn.h" -#import "GPPSignInButton.h" +#import "GPPURLHandler.h" @implementation GooglePlusSampleAppDelegate @synthesize window = window_; @synthesize navigationController = navigationController_; -@synthesize signInButton = signInButton_; -@synthesize auth = auth_; -@synthesize share = share_; -@synthesize plusMomentsWriteScope = plusMomentsWriteScope_; // DO NOT USE THIS CLIENT ID. IT WILL NOT WORK FOR YOUR APP. // Please use the client ID created for you by Google. static NSString * const kClientID = - @"122385832599-2mcvobo565un3ab7d6d06m6fjemocto9.apps.googleusercontent.com"; - -+ (NSString *)clientID { - return kClientID; -} + @"452265719636.apps.googleusercontent.com"; #pragma mark Object life-cycle. - (void)dealloc { [window_ release]; [navigationController_ release]; - [signInButton_ release]; - [auth_ release]; - [share_ release]; [super dealloc]; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - plusMomentsWriteScope_ = YES; + // Set app's client ID for |GPPSignIn| and |GPPShare|. + [GPPSignIn sharedInstance].clientID = kClientID; self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; @@ -69,16 +58,8 @@ static NSString * const kClientID = [self.window makeKeyAndVisible]; // Read Google+ deep-link data. - GPPDeepLink *deepLink = [GPPDeepLink readDeepLinkAfterInstall]; - if (deepLink) { - UIAlertView *alert = [[[UIAlertView alloc] - initWithTitle:@"Read Deep-link Data" - message:[deepLink deepLinkID] - delegate:nil - cancelButtonTitle:@"OK" - otherButtonTitles:nil] autorelease]; - [alert show]; - } + [GPPDeepLink setDelegate:self]; + [GPPDeepLink readDeepLinkAfterInstall]; return YES; } @@ -86,34 +67,22 @@ static NSString * const kClientID = openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { - // Handle Google+ share dialog URL. - if ([share_ handleURL:url - sourceApplication:sourceApplication - annotation:annotation]) { - return YES; - } + return [GPPURLHandler handleURL:url + sourceApplication:sourceApplication + annotation:annotation]; +} - // Handle Google+ sign-in button URL. - if ([signInButton_ handleURL:url - sourceApplication:sourceApplication - annotation:annotation]) { - return YES; - } +#pragma mark - GPPDeepLinkDelegate - // Handle Google+ deep-link data URL. - GPPDeepLink *deepLink = [GPPDeepLink handleURL:url - sourceApplication:sourceApplication - annotation:annotation]; - if (deepLink) { - UIAlertView *alert = [[[UIAlertView alloc] - initWithTitle:@"Handle Deep-link Data" - message:[deepLink deepLinkID] - delegate:nil - cancelButtonTitle:@"OK" - otherButtonTitles:nil] autorelease]; - [alert show]; - } - return NO; +- (void)didReceiveDeepLink:(GPPDeepLink *)deepLink { + // An example to handle the deep link data. + UIAlertView *alert = [[[UIAlertView alloc] + initWithTitle:@"Deep-link Data" + message:[deepLink deepLinkID] + delegate:nil + cancelButtonTitle:@"OK" + otherButtonTitles:nil] autorelease]; + [alert show]; } @end diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListMomentsViewController.h b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListMomentsViewController.h new file mode 100644 index 00000000..6349390c --- /dev/null +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListMomentsViewController.h @@ -0,0 +1,48 @@ +// +// GooglePlusSampleListMomentsViewController.h +// +// Copyright 2012 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#import + +@class GTLPlusMoment; + +@interface GooglePlusSampleListMomentsViewController : UIViewController< + UITableViewDelegate, + UITableViewDataSource> { + // A map from activities to verbs used for display. + NSDictionary *verbMap_; + // An array of |GTLPlusMoment|, as the data source. + NSMutableArray *momentsData_; + // Currently selected moment in the |momentsData_| array. + GTLPlusMoment *selectedMoment_; +} + +// The table that displays the list of moments for the user. +@property (retain, nonatomic) IBOutlet UITableView *momentsTable; +// A label to display the status of selected moment, or general status. +@property (retain, nonatomic) IBOutlet UILabel *momentStatus; +// A label to display the target of selected moment. +@property (retain, nonatomic) IBOutlet UILabel *momentTarget; +// A label to display the time of selected moment. +@property (retain, nonatomic) IBOutlet UILabel *momentTime; +// A button to remove selected moment. +@property (retain, nonatomic) IBOutlet UIButton *momentRemoval; + +// Called when the remove button is pressed. +- (IBAction)removeMoment:(id)sender; + +@end diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListMomentsViewController.m b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListMomentsViewController.m new file mode 100644 index 00000000..58d48929 --- /dev/null +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListMomentsViewController.m @@ -0,0 +1,229 @@ +// +// GooglePlusSampleListMomentsViewController.m +// +// Copyright 2012 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#import "GooglePlusSampleListMomentsViewController.h" + +#import "GPPSignIn.h" +#import "GTLPlus.h" +#import "GTMLogger.h" +#import "GTMOAuth2Authentication.h" + +@interface GooglePlusSampleListMomentsViewController () +- (void)clearSelectedMoment; +- (void)refreshData; +- (NSString *)textForMoment:(GTLPlusMoment *)moment; +@end + +#pragma mark - View lifecycle + +@implementation GooglePlusSampleListMomentsViewController + +@synthesize momentsTable = momentsTable_; +@synthesize momentStatus = momentStatus_; +@synthesize momentTarget = momentTarget_; +@synthesize momentTime = momentTime_; +@synthesize momentRemoval = momentsRemoval_; + +#pragma mark - Object lifecycle + +- (id)initWithNibName:(NSString *)nibNameOrNil + bundle:(NSBundle *)nibBundleOrNil { + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + verbMap_ = [[NSDictionary dictionaryWithObjectsAndKeys: + @"Added", @"http://schemas.google.com/AddActivity", + @"Bought", @"http://schemas.google.com/BuyActivity", + @"Checked in", @"http://schemas.google.com/CheckInActivity", + @"Commented on", @"http://schemas.google.com/CommentActivity", + @"Created", @"http://schemas.google.com/CreateActivity", + @"Listened to", @"http://schemas.google.com/ListenActivity", + @"Made a reservation at", @"http://schemas.google.com/ReserveActivity", + @"Reviewed", @"http://schemas.google.com/ReviewActivity", + nil] retain]; + } + return self; +} + +- (void)dealloc { + [verbMap_ release]; + [momentsData_ release]; + [selectedMoment_ release]; + [momentsTable_ release]; + [momentStatus_ release]; + [momentTarget_ release]; + [momentTime_ release]; + [super dealloc]; +} + +#pragma mark - View lifecycle + +- (void)viewDidLoad { + [super viewDidLoad]; + [self refreshData]; +} + +#pragma mark - UITableViewDelegate/UITableViewDataSource + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView + numberOfRowsInSection:(NSInteger)section { + return momentsData_.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView + cellForRowAtIndexPath:(NSIndexPath *)indexPath { + static NSString * const kCellIdentifier = @"Cell"; + UITableViewCell *cell = + [tableView dequeueReusableCellWithIdentifier:kCellIdentifier]; + if (cell == nil) { + cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault + reuseIdentifier:kCellIdentifier] + autorelease]; + cell.accessoryType = UITableViewCellAccessoryNone; + } + + // Configure the cell. + GTLPlusMoment *moment = momentsData_[indexPath.row]; + cell.textLabel.text = [self textForMoment:moment]; + return cell; +} + +- (void)tableView:(UITableView *)tableView + didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + GTLPlusMoment *moment = momentsData_[indexPath.row]; + [selectedMoment_ autorelease]; + selectedMoment_ = [moment retain]; + momentStatus_.text = [NSString stringWithFormat:@"Target for \"%@\":", + [self textForMoment:moment]]; + momentTarget_.text = moment.target.url; + momentTime_.text = [NSString stringWithFormat:@"Start time: %@", + [NSDateFormatter localizedStringFromDate:moment.startDate.date + dateStyle:kCFDateFormatterMediumStyle + timeStyle:kCFDateFormatterMediumStyle]]; + momentsRemoval_.hidden = NO; +} + +- (void)tableView:(UITableView *)tableView + didDeselectRowAtIndexPath:(NSIndexPath *)indexPath { + [self clearSelectedMoment]; +} + +#pragma mark - IBActions + +- (IBAction)removeMoment:(id)sender { + if (!selectedMoment_) { + return; + } + + // Here is an example of removing a moment from Google+: + // 1. Create a |GTLServicePlus| instance to send a request to Google+. + GTLServicePlus* plusService = [[[GTLServicePlus alloc] init] autorelease]; + plusService.retryEnabled = YES; + + // 2. Set a valid |GTMOAuth2Authentication| object as the authorizer. + GTMOAuth2Authentication *auth = [GPPSignIn sharedInstance].authentication; + [plusService setAuthorizer:auth]; + + // 3. Create a |GTLQuery| object to remove the moment. + GTLQueryPlus *query = [GTLQueryPlus + queryForMomentsRemoveWithIdentifier:selectedMoment_.identifier]; + [plusService executeQuery:query + completionHandler:^(GTLServiceTicket *ticket, + id object, + NSError *error) { + if (error) { + momentStatus_.text = + [NSString stringWithFormat:@"Error: %@", error]; + GTMLoggerError(@"Status: Error: %@", error); + } else { + [momentsData_ removeObject:selectedMoment_]; + [self clearSelectedMoment]; + [momentsTable_ reloadData]; + } + }]; +} + +#pragma mark - Helper methods + +- (void)clearSelectedMoment { + [selectedMoment_ autorelease]; + selectedMoment_ = nil; + momentStatus_.text = @""; + momentTarget_.text = @""; + momentTime_.text = @""; + momentsRemoval_.hidden = YES; +} + +- (void)refreshData { + GTMOAuth2Authentication *auth = [GPPSignIn sharedInstance].authentication; + if (!auth) { + // To authenticate, use Google+ sign-in button. + momentStatus_.text = @"Status: Not authenticated"; + return; + } + // Clear old moments data. + [momentsData_ autorelease]; + momentsData_ = nil; + [momentsTable_ reloadData]; + [self clearSelectedMoment]; + momentStatus_.text = @"Status: Loading"; + + // Here is an example of reading list of moments from Google+: + // 1. Create a |GTLServicePlus| instance to send a request to Google+. + GTLServicePlus* plusService = [[[GTLServicePlus alloc] init] autorelease]; + plusService.retryEnabled = YES; + + // 2. Set a valid |GTMOAuth2Authentication| object as the authorizer. + [plusService setAuthorizer:auth]; + + // 3. Create a |GTLQuery| object to list moments. + GTLQueryPlus *query = + [GTLQueryPlus queryForMomentsListWithUserId:@"me" + collection:kGTLPlusCollectionVault]; + [plusService executeQuery:query + completionHandler:^(GTLServiceTicket *ticket, + id object, + NSError *error) { + if (error) { + momentStatus_.text = + [NSString stringWithFormat:@"Error: %@", error]; + GTMLoggerError(@"Status: Error: %@", error); + } else { + GTLPlusMomentsFeed *moments = (GTLPlusMomentsFeed *)object; + momentsData_ = + [[NSMutableArray arrayWithArray:moments.items] retain]; + momentStatus_.text = [NSString stringWithFormat: + @"Status: Loaded %d moment(s)", momentsData_.count]; + [momentsTable_ reloadData]; + } + }]; +} + +- (NSString *)textForMoment:(GTLPlusMoment *)moment { + NSString *verb = [verbMap_ objectForKey:moment.type]; + if (!verb) { + // Fallback for verbs we don't recognize. + verb = [moment.type lastPathComponent]; + } + return [NSString stringWithFormat:@"%@ %@", verb, moment.target.name]; +} + +@end diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListMomentsViewController.xib b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListMomentsViewController.xib new file mode 100644 index 00000000..44105817 --- /dev/null +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListMomentsViewController.xib @@ -0,0 +1,429 @@ + + + + 1552 + 12C60 + 3084 + 1187.34 + 625.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUIButton + IBUILabel + IBUITableView + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 292 + {{15, 240}, {285, 42}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + + + 1 + MCAwIDAAA + darkTextColor + + + 0 + 2 + + 1 + 17 + + + Helvetica + 17 + 16 + + NO + 285 + + + + 292 + {{15, 359}, {89, 44}} + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + 1 + Remove + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + + + + 274 + {{20, 20}, {320, 238}} + + + + _NS:9 + + YES + IBCocoaTouchFramework + YES + 1 + 0 + YES + 44 + 22 + 22 + + + {{-20, -20}, {360, 258}} + + + + _NS:10 + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + 292 + {{15, 284}, {285, 42}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + + + + 0 + 2 + + + NO + 285 + + + + 292 + {{15, 330}, {285, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + + + + 0 + + + NO + + + {{0, 20}, {320, 460}} + + + + + 3 + MQA + + + + IBCocoaTouchFramework + + + + + + + view + + + + 3 + + + + momentRemoval + + + + 61 + + + + momentsTable + + + + 33 + + + + momentStatus + + + + 76 + + + + momentTarget + + + + 101 + + + + momentTime + + + + 107 + + + + delegate + + + + 35 + + + + dataSource + + + + 34 + + + + removeMoment: + + + 7 + + 62 + + + + + + 0 + + + + + + 1 + + + + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 14 + + + + + + 56 + + + + + + 66 + + + + + + + + 4 + + + + + + 93 + + + + + + 103 + + + + + + + + GooglePlusSampleListMomentsViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 151 + + + + + GooglePlusSampleListMomentsViewController + UIViewController + + removeMoment: + id + + + removeMoment: + + removeMoment: + id + + + + UIButton + UILabel + UILabel + UILabel + UITableView + + + + momentRemoval + UIButton + + + momentStatus + UILabel + + + momentTarget + UILabel + + + momentTime + UILabel + + + momentsTable + UITableView + + + + IBProjectSource + ./Classes/GooglePlusSampleListMomentsViewController.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + 2083 + + diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListPeopleViewController.h b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListPeopleViewController.h new file mode 100644 index 00000000..2cd99d80 --- /dev/null +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListPeopleViewController.h @@ -0,0 +1,38 @@ +// +// GooglePlusSamplePeopleListViewController.h +// +// Copyright 2012 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#import + +// A view controller for listing people that are visible to this sample app. +// The open-source GTLPlus libraries are required. +@interface GooglePlusSampleListPeopleViewController : UIViewController< + UITableViewDelegate, + UITableViewDataSource> + +// A label to display the result of the listing people action. +@property (retain, nonatomic) IBOutlet UILabel *peopleStatus; +// The table that displays a list of people that is visible to this sample app. +@property (retain, nonatomic) IBOutlet UITableView *peopleTable; + +// A list of people that is visible to this sample app. +@property (retain, nonatomic) NSArray *peopleList; +// A list of people profile images that we will prefetch that is +// visible to this sample app. +@property (retain, nonatomic) NSMutableArray *peopleImageList; + +@end diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListPeopleViewController.m b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListPeopleViewController.m new file mode 100644 index 00000000..c6436ec2 --- /dev/null +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListPeopleViewController.m @@ -0,0 +1,190 @@ +// +// GooglePlusSampleListPeopleViewController.m +// +// Copyright 2012 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#import "GooglePlusSampleListPeopleViewController.h" + +#import "GPPSignIn.h" +#import "GTLPlus.h" +#import "GTMLogger.h" +#import "GTMOAuth2Authentication.h" + +@interface GooglePlusSampleListPeopleViewController() +- (void)listPeople:(NSString *)collection; +- (void)reportAuthStatus; +- (void)fetchPeopleImages; +@end + +@implementation GooglePlusSampleListPeopleViewController + +@synthesize peopleTable = peopleTable_; +@synthesize peopleList = peopleList_; +@synthesize peopleStatus = peopleStatus_; +@synthesize peopleImageList = peopleImageList_; + +#pragma mark - Object lifecycle + +- (void)dealloc { + [peopleStatus_ release]; + [super dealloc]; +} + +#pragma mark - View lifecycle + +- (void)viewDidLoad { + // Report whether the user is authenticated with + // https://www.googleapis.com/auth/plus.login scope. + [self reportAuthStatus]; + // Send Google+ request to get list of people that is visible to this app. + [self listPeople:kGTLPlusCollectionVisible]; + [super viewDidLoad]; +} + +- (void)viewDidUnload { + [peopleImageList_ release]; + [peopleList_ release]; + [peopleStatus_ release]; + [super viewDidUnload]; +} + +#pragma mark - UITableViewDelegate/UITableViewDataSource + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView + numberOfRowsInSection:(NSInteger)section { + return peopleList_.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView + cellForRowAtIndexPath:(NSIndexPath *)indexPath { + static NSString *const kCellIdentifier = @"Cell"; + UITableViewCell *cell = + [tableView dequeueReusableCellWithIdentifier:kCellIdentifier]; + if (cell == nil) { + cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault + reuseIdentifier:kCellIdentifier] + autorelease]; + cell.accessoryType = UITableViewCellAccessoryNone; + } + + // Configure the cell by extracting a person's name and image from the list + // of people. + if (indexPath.row < peopleList_.count) { + GTLPlusPerson *person = peopleList_[indexPath.row]; + NSString *name = person.displayName; + cell.textLabel.text = name; + + if (indexPath.row < [peopleImageList_ count] && + ![[peopleImageList_ objectAtIndex:indexPath.row] + isEqual:[NSNull null]]) { + cell.imageView.image = + [[[UIImage alloc] + initWithData:[peopleImageList_ objectAtIndex:indexPath.row]] + autorelease]; + } else { + cell.imageView.image = nil; + } + } + + return cell; +} + +#pragma mark - Helper methods + +- (void)listPeople:(NSString *)collection { + GTMOAuth2Authentication *auth = [GPPSignIn sharedInstance].authentication; + if (!auth) { + // To authenticate, use Google+ sign-in button. + peopleStatus_.text = @"Status: Not authenticated"; + return; + } + + // 1. Create a |GTLServicePlus| instance to send a request to Google+. + GTLServicePlus* plusService = [[[GTLServicePlus alloc] init] autorelease]; + plusService.retryEnabled = YES; + + // 2. Set a valid |GTMOAuth2Authentication| object as the authorizer. + [plusService setAuthorizer:auth]; + + // 3. Create a |GTLQuery| object to list people that are visible to this + // sample app. + GTLQueryPlus *query = + [GTLQueryPlus queryForPeopleListWithUserId:@"me" + collection:collection]; + [plusService executeQuery:query + completionHandler:^(GTLServiceTicket *ticket, + GTLPlusPeopleFeed *peopleFeed, + NSError *error) { + if (error) { + GTMLoggerError(@"Error: %@", error); + peopleStatus_.text = + [NSString stringWithFormat:@"Status: Error: %@", error]; + } else { + // Get an array of people from |GTLPlusPeopleFeed| and reload + // the table view. + peopleList_ = [peopleFeed.items retain]; + [peopleTable_ reloadData]; + + // Render the status of the Google+ request. + NSNumber *count = peopleFeed.totalItems; + if (count.intValue == 1) { + peopleStatus_.text = [NSString stringWithFormat: + @"Status: Listed 1 person"]; + } else { + peopleStatus_.text = [NSString stringWithFormat: + @"Status: Listed %@ people", count]; + } + [self fetchPeopleImages]; + } + }]; +} + +- (void)fetchPeopleImages { + NSInteger index = 0; + peopleImageList_ = + [[NSMutableArray alloc] initWithCapacity:[peopleList_ count]]; + for (GTLPlusPerson *person in peopleList_) { + NSString *imageURLString = person.image.url; + if (imageURLString) { + NSURL *imageURL = [NSURL URLWithString:imageURLString]; + NSData *imageData = [NSData dataWithContentsOfURL:imageURL]; + [peopleImageList_ setObject:imageData atIndexedSubscript:index]; + } else { + [peopleImageList_ setObject:[NSNull null] atIndexedSubscript:index]; + } + ++index; + } +} + +- (void)reportAuthStatus { + if (![GPPSignIn sharedInstance].authentication) { + return; + } + + if ([[GPPSignIn sharedInstance].scopes containsObject: + kGTLAuthScopePlusLogin]) { + peopleStatus_.text = @"Status: Authenticated with plus.login scope"; + } else { + // To authenticate, use Google+ sign-in button. + peopleStatus_.text = @"Status: Not authenticated with plus.login scope"; + } +} + +@end diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListPeopleViewController.xib b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListPeopleViewController.xib new file mode 100644 index 00000000..ded8c680 --- /dev/null +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleListPeopleViewController.xib @@ -0,0 +1,300 @@ + + + + 1552 + 12C60 + 3084 + 1187.34 + 625.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUILabel + IBUITableView + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 292 + {{6, 11}, {253, 21}} + + + + _NS:9 + {250, 250} + NO + YES + 7 + NO + IBCocoaTouchFramework + People visible to this sample app: + + 1 + MCAwIDAAA + darkTextColor + + + 0 + + 1 + 17 + + + Helvetica + 17 + 16 + + NO + + + + 292 + {{6, 329}, {285, 67}} + + + + _NS:9 + NO + YES + NO + IBCocoaTouchFramework + Status: + + + 0 + 2 + + + NO + 285 + + + + 292 + + + + 274 + {{20, 20}, {320, 263}} + + + + _NS:9 + + 3 + MQA + + YES + IBCocoaTouchFramework + YES + 1 + 0 + YES + 44 + 22 + 22 + + + {{-20, 40}, {360, 303}} + + + + _NS:10 + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + {{0, 64}, {320, 416}} + + + + + 3 + MQA + + + + + NO + + IBCocoaTouchFramework + + + + + + + peopleStatus + + + + 55 + + + + view + + + + 56 + + + + peopleTable + + + + 54 + + + + delegate + + + + 32 + + + + dataSource + + + + 31 + + + + + + 0 + + + + + + 1 + + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 10 + + + + + 34 + + + + + + 129 + + + + + + + + 3 + + + + + + + + GooglePlusSampleListPeopleViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 157 + + + + + GooglePlusSampleListPeopleViewController + UIViewController + + UILabel + UITableView + + + + peopleStatus + UILabel + + + peopleTable + UITableView + + + + IBProjectSource + ./Classes/GooglePlusSampleListPeopleViewController.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + 2083 + + diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleMasterViewController.m b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleMasterViewController.m index 1c34ee65..c3466eb0 100644 --- a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleMasterViewController.m +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleMasterViewController.m @@ -18,25 +18,23 @@ #import "GooglePlusSampleMasterViewController.h" -#import "GooglePlusSampleAppDelegate.h" -#import "GooglePlusSampleShareViewController.h" -#import "GooglePlusSampleSignInViewController.h" -#import "GooglePlusSampleMomentsViewController.h" +#import "GPPSignIn.h" -static const int kNumViewControllers = 3; +static const int kNumViewControllers = 5; static NSString * const kMenuOptions[kNumViewControllers] = { - @"Sign In", @"Share", @"Moments" }; + @"Sign in", @"Share", @"List people", @"Write moments", + @"List & remove moments" }; static NSString * const kUnselectableMenuOptions[kNumViewControllers] = { - @"", @"", @"Sign in to use moments" }; + nil, nil, @"Sign in to list people", @"Sign in to write moments", + @"Sign in to list/remove moments" }; static NSString * const kNibNames[kNumViewControllers] = { @"GooglePlusSampleSignInViewController", @"GooglePlusSampleShareViewController", - @"GooglePlusSampleMomentsViewController" }; -static const int kMomentsIndex = 2; + @"GooglePlusSampleListPeopleViewController", + @"GooglePlusSampleMomentsViewController", + @"GooglePlusSampleListMomentsViewController" }; -@interface GooglePlusSampleMasterViewController () { - NSIndexPath *momentsIndexPath_; -} +@interface GooglePlusSampleMasterViewController () - (BOOL)isSelectable:(NSIndexPath *)indexPath; @end @@ -58,7 +56,6 @@ static const int kMomentsIndex = 2; } - (void)dealloc { - [momentsIndexPath_ release]; [super dealloc]; } @@ -75,11 +72,7 @@ static const int kMomentsIndex = 2; - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - if (momentsIndexPath_) { - [self.tableView - reloadRowsAtIndexPaths:[NSArray arrayWithObject:momentsIndexPath_] - withRowAnimation:UITableViewRowAnimationFade]; - } + [self.tableView reloadData]; } #pragma mark - UITableViewDelegate/UITableViewDataSource @@ -132,14 +125,9 @@ static const int kMomentsIndex = 2; #pragma mark - Helper methods - (BOOL)isSelectable:(NSIndexPath *)indexPath { - if (indexPath.row == kMomentsIndex) { - if (!momentsIndexPath_) { - momentsIndexPath_ = [indexPath retain]; - } - // To use Google+ History API, you need to sign in. - GooglePlusSampleAppDelegate *appDelegate = (GooglePlusSampleAppDelegate *) - [[UIApplication sharedApplication] delegate]; - return appDelegate.auth && appDelegate.plusMomentsWriteScope; + if (kUnselectableMenuOptions[indexPath.row]) { + // To use Google+ moments, you need to sign in. + return [GPPSignIn sharedInstance].authentication != nil; } return YES; } diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleMomentsViewController.h b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleMomentsViewController.h index 2e0ad98d..71f33d0e 100644 --- a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleMomentsViewController.h +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleMomentsViewController.h @@ -20,9 +20,9 @@ @class GTLServicePlus; -// A view controller for writing different kinds of moments to Google+ history. +// A view controller for writing different kinds of moments to Google+. // The open-source GTLPlus libraries are required. For more details, see -// https://developers.google.com/+/history/ . +// https://developers.google.com/+/features/app-activities . @interface GooglePlusSampleMomentsViewController : UIViewController< UITableViewDelegate, UITableViewDataSource, @@ -30,8 +30,12 @@ BOOL keyboardVisible_; } +// A label to prompt the selection of a moment. +@property (retain, nonatomic) IBOutlet UILabel *selectionLabel; // The table that displays the different kinds of moments available. @property (retain, nonatomic) IBOutlet UITableView *momentsTable; +// The view for the bootom controls. +@property (retain, nonatomic) IBOutlet UIView *bottomControls; // The target URL to associate with this moment. @property (retain, nonatomic) IBOutlet UITextField *momentURL; // A label to display the result of writing a moment. diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleMomentsViewController.m b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleMomentsViewController.m index 64d3e0fd..e32201b8 100644 --- a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleMomentsViewController.m +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleMomentsViewController.m @@ -19,13 +19,8 @@ #import "GooglePlusSampleMomentsViewController.h" #import -#import "GooglePlusSampleAppDelegate.h" +#import "GPPSignIn.h" #import "GTLPlus.h" -#import "GTLPlusConstants.h" -#import "GTLPlusItemScope.h" -#import "GTLPlusMoment.h" -#import "GTLQueryPlus.h" -#import "GTLServicePlus.h" #import "GTMLogger.h" #import "GTMOAuth2Authentication.h" @@ -39,13 +34,15 @@ @implementation GooglePlusSampleMomentsViewController +@synthesize selectionLabel = selectionLabel_; @synthesize momentsTable = momentsTable_; +@synthesize bottomControls = bottomControls_; @synthesize momentURL = momentURL_; @synthesize momentStatus = momentStatus_; @synthesize addButton = addButton_; // The different kinds of moments. -static const int kNumMomentTypes = 9; +static const int kNumMomentTypes = 8; static NSString * const kMomentTypes[kNumMomentTypes] = { @"AddActivity", @"BuyActivity", @@ -54,8 +51,7 @@ static NSString * const kMomentTypes[kNumMomentTypes] = { @"CreateActivity", @"ListenActivity", @"ReserveActivity", - @"ReviewActivity", - @"ViewActivity" }; + @"ReviewActivity" }; static NSString * const kMomentURLs[kNumMomentTypes] = { @"thing", @"a-book", @@ -64,8 +60,7 @@ static NSString * const kMomentURLs[kNumMomentTypes] = { @"photo", @"song", @"restaurant", - @"widget", - @"video" }; + @"widget" }; static NSString * const kMomentURLFormat = @"https://developers.google.com/+/plugins/snippet/examples/%@"; @@ -81,7 +76,9 @@ static NSString * const kMomentURLFormat = removeObserver:self name:UIKeyboardWillHideNotification object:nil]; + [selectionLabel_ release]; [momentsTable_ release]; + [bottomControls_ release]; [momentURL_ release]; [momentStatus_ release]; [addButton_ release]; @@ -121,6 +118,23 @@ static NSString * const kMomentURLFormat = selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; + + // Scale the table view vertically down to its contents if necessary. + [momentsTable_ reloadData]; + CGRect frame = momentsTable_.frame; + if (frame.size.height > momentsTable_.contentSize.height) { + CGFloat shift = frame.size.height - momentsTable_.contentSize.height; + frame.size.height = momentsTable_.contentSize.height; + momentsTable_.frame = frame; + + // Also update the prompt by removing the "scroll for more" part. + selectionLabel_.text = @"Select an activity"; + + // And move the bottom view up for the same shift amount. + frame = bottomControls_.frame; + frame.origin.y -= shift; + bottomControls_.frame = frame; + } } - (void)viewWillDisappear:(BOOL)animated { @@ -140,24 +154,23 @@ static NSString * const kMomentURLFormat = #pragma mark - IBActions - (IBAction)momentButton:(id)sender { - GooglePlusSampleAppDelegate *appDelegate = (GooglePlusSampleAppDelegate *) - [[UIApplication sharedApplication] delegate]; - if (!appDelegate.auth) { + GTMOAuth2Authentication *auth = [GPPSignIn sharedInstance].authentication; + if (!auth) { // To authenticate, use Google+ sign-in button. momentStatus_.text = @"Status: Not authenticated"; return; } - // Here is an example of writing a moment to Google+ history: + // Here is an example of writing a moment to Google+: // 1. Create a |GTLServicePlus| instance to send a request to Google+. GTLServicePlus* plusService = [[[GTLServicePlus alloc] init] autorelease]; plusService.retryEnabled = YES; // 2. Set a valid |GTMOAuth2Authentication| object as the authorizer. - [plusService setAuthorizer:appDelegate.auth]; + [plusService setAuthorizer:auth]; // 3. Create a |GTLPlusMoment| object with required fields. For reference, see - // https://developers.google.com/+/history/ . + // https://developers.google.com/+/features/app-activities . int selectedRow = [[momentsTable_ indexPathForSelectedRow] row]; NSString *selectedMoment = kMomentTypes[selectedRow]; @@ -194,7 +207,7 @@ static NSString * const kMomentURLFormat = [NSString stringWithFormat:@"Status: Error: %@", error]; } else { momentStatus_.text = [NSString stringWithFormat: - @"Status: Saved to Google+ history (%@)", + @"Status: Saved to Google+ (%@)", selectedMoment]; } }]; @@ -264,7 +277,7 @@ static NSString * const kMomentURLFormat = result.text = @"I can't wait to use it on my site :)"; return result; } else if ([selectedMoment isEqualToString:@"ReserveActivity"]) { - result.type = @"http://schema.org/Reservation"; + result.type = @"http://schemas.google.com/Reservation"; result.startDate = @"2012-06-28T19:00:00-08:00"; result.attendeeCount = [[[NSNumber alloc] initWithInt:3] autorelease]; return result; @@ -316,18 +329,12 @@ static NSString * const kMomentURLFormat = } - (void)reportAuthStatus { - NSString *authStatus = @""; - GooglePlusSampleAppDelegate *appDelegate = (GooglePlusSampleAppDelegate *) - [[UIApplication sharedApplication] delegate]; - - if (appDelegate.auth) { - authStatus = @"Status: Authenticated"; + if ([GPPSignIn sharedInstance].authentication) { + momentStatus_.text = @"Status: Authenticated"; } else { // To authenticate, use Google+ sign-in button. - authStatus = @"Status: Not authenticated"; + momentStatus_.text = @"Status: Not authenticated"; } - - momentStatus_.text = authStatus; } @end diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleMomentsViewController.xib b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleMomentsViewController.xib index 791b6beb..fd7b5f59 100644 --- a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleMomentsViewController.xib +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleMomentsViewController.xib @@ -1,22 +1,22 @@ - 1280 - 10K549 - 1938 - 1038.36 - 461.00 + 1552 + 12C60 + 3084 + 1187.34 + 625.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 + 2083 - IBUITextField - IBUITableView - IBUIButton - IBUIView - IBUILabel IBProxyObject + IBUIButton + IBUILabel + IBUITableView + IBUITextField + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -35,7 +35,7 @@ IBCocoaTouchFramework - + 274 @@ -43,7 +43,6 @@ 290 {{10, 5}, {296, 21}} - NO YES @@ -54,6 +53,7 @@ 1 MCAwIDAAA + darkTextColor 1 @@ -73,7 +73,6 @@ 274 {{0, 32}, {320, 132}} - 3 @@ -98,7 +97,6 @@ 266 {{11, 20}, {296, 21}} - NO YES @@ -118,7 +116,6 @@ 266 {{11, 51}, {291, 31}} - NO YES @@ -153,7 +150,6 @@ 264 {{12, 113}, {142, 37}} - NO IBCocoaTouchFramework @@ -191,8 +187,6 @@ 266 {{11, 180}, {290, 21}} - - NO YES 7 @@ -209,15 +203,12 @@ {{0, 172}, {320, 244}} - IBCocoaTouchFramework {{0, 64}, {320, 416}} - - 3 @@ -274,6 +265,22 @@ 30 + + + selectionLabel + + + + 32 + + + + bottomControls + + + + 34 + dataSource @@ -400,7 +407,7 @@ - 31 + 34 @@ -420,15 +427,21 @@ UIButton + UIView UILabel UITextField UITableView + UILabel addButton UIButton + + bottomView + UIView + momentStatus UILabel @@ -441,6 +454,10 @@ momentsTable UITableView + + selectionLabel + UILabel + IBProjectSource @@ -457,6 +474,6 @@ button_background.png {1, 1} - 933 + 2083 diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleShareViewController.h b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleShareViewController.h index 0ead54ba..4245abd0 100644 --- a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleShareViewController.h +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleShareViewController.h @@ -28,15 +28,18 @@ GPPShareDelegate, UITextFieldDelegate, UIActionSheetDelegate, + UIPickerViewDataSource, + UIPickerViewDelegate, MFMailComposeViewControllerDelegate> { - // The Google+ share object to manage the share dialog. - GPPShare *share_; // Whether the keyboard is visible or not. BOOL keyboardVisible_; // The text field being edited. UITextField *activeField_; } +@property (retain, nonatomic) NSArray *callToActions; +@property (copy, nonatomic) NSString *selectedCallToAction; +@property (retain, nonatomic) UIPickerView *callToActionPickerView; // The text to prefill the user comment in the share dialog. @property (retain, nonatomic) IBOutlet UITextField *sharePrefillText; // The URL resource to share in the share dialog. @@ -45,36 +48,39 @@ @property (retain, nonatomic) IBOutlet UILabel *shareStatus; // A toolbar to share via Google+ or email. @property (retain, nonatomic) IBOutlet UIToolbar *shareToolbar; -// A switch to toggle Google+ share with deep linking. -@property (retain, nonatomic) IBOutlet UISwitch *attachDeepLinkSwitch; -// The deep-link ID to be attached with the Google+ share to qualify as +// A switch to toggle Google+ share with content deep linking. +@property (retain, nonatomic) IBOutlet UISwitch *addContentDeepLinkSwitch; +// The content deep-link ID to be attached with the Google+ share to qualify as // a deep-link share. -@property (retain, nonatomic) IBOutlet UITextField *deepLinkID; +@property (retain, nonatomic) IBOutlet UITextField *contentDeepLinkID; // The share's title. -@property (retain, nonatomic) IBOutlet UITextField *deepLinkTitle; +@property (retain, nonatomic) IBOutlet UITextField *contentDeepLinkTitle; // The share's description. -@property (retain, nonatomic) IBOutlet UITextField *deepLinkDescription; +@property (retain, nonatomic) IBOutlet UITextField *contentDeepLinkDescription; // The share's thumbnail URL. -@property (retain, nonatomic) IBOutlet UITextField *deepLinkThumbnailURL; +@property (retain, nonatomic) IBOutlet UITextField *contentDeepLinkThumbnailURL; // The share view. @property (retain, nonatomic) IBOutlet UIScrollView *shareScrollView; @property (retain, nonatomic) IBOutlet UIView *shareView; // Labels for Google+ share sample. -@property (retain, nonatomic) IBOutlet UILabel *attachDeepLinkDataLabel; +@property (retain, nonatomic) IBOutlet UILabel *addContentDeepLinkLabel; @property (retain, nonatomic) IBOutlet UILabel *urlToShareLabel; @property (retain, nonatomic) IBOutlet UILabel *prefillTextLabel; -@property (retain, nonatomic) IBOutlet UILabel *deepLinkIDLabel; -@property (retain, nonatomic) IBOutlet UILabel *deepLinkTitleLabel; -@property (retain, nonatomic) IBOutlet UILabel *deepLinkDescriptionLabel; -@property (retain, nonatomic) IBOutlet UILabel *deepLinkThumbnailURLLabel; +@property (retain, nonatomic) IBOutlet UILabel *contentDeepLinkIDLabel; +@property (retain, nonatomic) IBOutlet UILabel *contentDeepLinkTitleLabel; +@property (retain, nonatomic) IBOutlet UILabel *contentDeepLinkDescriptionLabel; +@property (retain, nonatomic) IBOutlet UILabel *contentDeepLinkThumbnailURLLabel; @property (retain, nonatomic) IBOutlet UIButton *shareButton; -@property (retain, nonatomic) IBOutlet UISwitch *urlForDeepLinkMetadataSwitch; -@property (retain, nonatomic) IBOutlet UILabel *urlForDeepLinkMetadataLabel; +@property (retain, nonatomic) IBOutlet UISwitch *urlForContentDeepLinkMetadataSwitch; +@property (retain, nonatomic) IBOutlet UILabel *urlForContentDeepLinkMetadataLabel; +// The switch for adding call-to-action button. +@property (retain, nonatomic) IBOutlet UISwitch *addCallToActionButtonSwitch; +@property (retain, nonatomic) IBOutlet UILabel *addCallToActionButtonLabel; -// Called when the switch for deep-link data is toggled. -- (IBAction)deepLinkSwitchToggle:(id)sender; +// Called when the switch for content deep link is toggled. +- (IBAction)contentDeepLinkSwitchToggle:(id)sender; // Called when the switch for metadata from URL preview is toggled. -- (IBAction)urlForDeepLinkMetadataSwitchToggle:(id)sender; +- (IBAction)urlForContentDeepLinkMetadataSwitchToggle:(id)sender; // Called when the share button is pressed. - (IBAction)shareButton:(id)sender; // Called when the toolbar share button is pressed. diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleShareViewController.m b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleShareViewController.m index ab2f4782..c004d24d 100644 --- a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleShareViewController.m +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleShareViewController.m @@ -18,7 +18,10 @@ #import "GooglePlusSampleShareViewController.h" -#import "GooglePlusSampleAppDelegate.h" +#import +#import "GPPSignIn.h" +#import "GTLPlusConstants.h" +#import "GTMOAuth2Authentication.h" @interface GooglePlusSampleShareViewController() - (void)animateKeyboard:(NSNotification *)notification @@ -30,51 +33,64 @@ @implementation GooglePlusSampleShareViewController -@synthesize attachDeepLinkSwitch = attachDeepLinkSwitch_; -@synthesize deepLinkDescription = deepLinkDescription_; -@synthesize deepLinkID = deepLinkID_; -@synthesize deepLinkTitle = deepLinkTitle_; -@synthesize deepLinkThumbnailURL = deepLinkThumbnailURL_; +@synthesize callToActions = callToActions_; +@synthesize selectedCallToAction = selectedCallToAction_; +@synthesize callToActionPickerView = callToActionPickerView_; +@synthesize addContentDeepLinkSwitch = addContentDeepLinkSwitch_; +@synthesize contentDeepLinkDescription = contentDeepLinkDescription_; +@synthesize contentDeepLinkID = contentDeepLinkID_; +@synthesize contentDeepLinkTitle = contentDeepLinkTitle_; +@synthesize contentDeepLinkThumbnailURL = contentDeepLinkThumbnailURL_; @synthesize sharePrefillText = sharePrefillText_; @synthesize shareURL = shareURL_; @synthesize shareStatus = shareStatus_; @synthesize shareToolbar = shareToolbar_; @synthesize shareScrollView = shareScrollView_; @synthesize shareView = shareView_; -@synthesize attachDeepLinkDataLabel = attachDeepLinkDataLabel_; +@synthesize addContentDeepLinkLabel = addContentDeepLinkLabel_; @synthesize urlToShareLabel = urlToShareLabel_; @synthesize prefillTextLabel = prefillTextLabel_; -@synthesize deepLinkIDLabel = deepLinkIDLabel_; -@synthesize deepLinkTitleLabel = deepLinkTitleLabel_; -@synthesize deepLinkDescriptionLabel = deepLinkDescriptionLabel_; -@synthesize deepLinkThumbnailURLLabel = deepLinkThumbnailURLLabel_; +@synthesize contentDeepLinkIDLabel = contentDeepLinkIDLabel_; +@synthesize contentDeepLinkTitleLabel = contentDeepLinkTitleLabel_; +@synthesize contentDeepLinkDescriptionLabel = + contentDeepLinkDescriptionLabel_; +@synthesize contentDeepLinkThumbnailURLLabel = + contentDeepLinkThumbnailURLLabel_; @synthesize shareButton = shareButton_; -@synthesize urlForDeepLinkMetadataSwitch = urlForDeepLinkMetadataSwitch_; -@synthesize urlForDeepLinkMetadataLabel = urlForDeepLinkMetadataLabel_; +@synthesize urlForContentDeepLinkMetadataSwitch = + urlForContentDeepLinkMetadataSwitch_; +@synthesize urlForContentDeepLinkMetadataLabel = + urlForContentDeepLinkMetadataLabel_; +@synthesize addCallToActionButtonSwitch = addCallToActionButtonSwitch_; +@synthesize addCallToActionButtonLabel = addCallToActionButtonLabel_; - (void)dealloc { - [attachDeepLinkSwitch_ release]; - [deepLinkID_ release]; - [deepLinkTitle_ release]; - [deepLinkDescription_ release]; - [deepLinkThumbnailURL_ release]; + [callToActions_ release]; + [selectedCallToAction_ release]; + [callToActionPickerView_ release]; + [addContentDeepLinkSwitch_ release]; + [contentDeepLinkID_ release]; + [contentDeepLinkTitle_ release]; + [contentDeepLinkDescription_ release]; + [contentDeepLinkThumbnailURL_ release]; [sharePrefillText_ release]; [shareURL_ release]; [shareStatus_ release]; - [share_ release]; [shareToolbar_ release]; [shareScrollView_ release]; [shareView_ release]; - [attachDeepLinkDataLabel_ release]; + [addContentDeepLinkLabel_ release]; [urlToShareLabel_ release]; [prefillTextLabel_ release]; - [deepLinkIDLabel_ release]; - [deepLinkTitleLabel_ release]; - [deepLinkDescriptionLabel_ release]; - [deepLinkThumbnailURLLabel_ release]; + [contentDeepLinkIDLabel_ release]; + [contentDeepLinkTitleLabel_ release]; + [contentDeepLinkDescriptionLabel_ release]; + [contentDeepLinkThumbnailURLLabel_ release]; [shareButton_ release]; - [urlForDeepLinkMetadataSwitch_ release]; - [urlForDeepLinkMetadataLabel_ release]; + [urlForContentDeepLinkMetadataSwitch_ release]; + [urlForContentDeepLinkMetadataLabel_ release]; + [addCallToActionButtonSwitch_ release]; + [addCallToActionButtonLabel_ release]; [super dealloc]; } @@ -82,14 +98,120 @@ - (void)viewDidLoad { // Set up Google+ share dialog. - GooglePlusSampleAppDelegate *appDelegate = (GooglePlusSampleAppDelegate *) - [[UIApplication sharedApplication] delegate]; - NSString *clientID = [GooglePlusSampleAppDelegate clientID]; - share_ = [[GPPShare alloc] initWithClientID:clientID]; - share_.delegate = self; - appDelegate.share = share_; + [GPPShare sharedInstance].delegate = self; - [attachDeepLinkSwitch_ setOn:NO]; + [addCallToActionButtonSwitch_ setOn:NO]; + [addContentDeepLinkSwitch_ setOn:NO]; + if (![GPPSignIn sharedInstance].authentication || + ![[GPPSignIn sharedInstance].scopes containsObject: + kGTLAuthScopePlusLogin]) { + addCallToActionButtonLabel_.text = @"Sign in for call-to-action"; + addCallToActionButtonSwitch_.enabled = NO; + } + addCallToActionButtonLabel_.adjustsFontSizeToFitWidth = YES; + + self.callToActions = [NSArray arrayWithObjects: + @"ACCEPT", + @"ACCEPT_GIFT", + @"ADD", + @"ANSWER", + @"ADD_TO_CALENDAR", + @"APPLY", + @"ASK", + @"ATTACK", + @"BEAT", + @"BID", + @"BOOK", + @"BOOKMARK", + @"BROWSE", + @"BUY", + @"CAPTURE", + @"CHALLENGE", + @"CHANGE", + @"CHECKIN", + @"CLICK_HERE", + @"CLICK_ME", + @"COLLECT", + @"COMMENT", + @"COMPARE", + @"COMPLAIN", + @"CONFIRM", + @"CONNECT", + @"CONTRIBUTE", + @"COOK", + @"CREATE", + @"DEFEND", + @"DINE", + @"DISCOVER", + @"DISCUSS", + @"DONATE", + @"DOWNLOAD", + @"EARN", + @"EAT", + @"EXPLAIN", + @"FOLLOW", + @"GET", + @"GIFT", + @"GIVE", + @"GO", + @"HELP", + @"IDENTIFY", + @"INSTALL_APP", + @"INTRODUCE", + @"INVITE", + @"JOIN", + @"JOIN_ME", + @"LEARN", + @"LEARN_MORE", + @"LISTEN", + @"LOVE", + @"MAKE", + @"MATCH", + @"OFFER", + @"OPEN", + @"OPEN_APP", + @"OWN", + @"PAY", + @"PIN", + @"PLAN", + @"PLAY", + @"RATE", + @"READ", + @"RECOMMEND", + @"RECORD", + @"REDEEM", + @"REPLY", + @"RESERVE", + @"REVIEW", + @"RSVP", + @"SAVE", + @"SAVE_OFFER", + @"SELL", + @"SEND", + @"SHARE_X", + @"SIGN_IN", + @"SIGN_UP", + @"START", + @"ST0P", + @"TEST", + @"UPVOTE", + @"VIEW", + @"VIEW_ITEM", + @"VIEW_PROFILE", + @"VISIT", + @"VOTE", + @"WANT", + @"WATCH", + @"WRITE", + nil + ]; + self.selectedCallToAction = [callToActions_ objectAtIndex:0]; + self.callToActionPickerView = [[[UIPickerView alloc] init] autorelease]; + callToActionPickerView_.delegate = self; + callToActionPickerView_.dataSource = self; + [addCallToActionButtonSwitch_ addTarget:self + action:@selector(addCallToActionSwitched) + forControlEvents:UIControlEventValueChanged]; [self layout]; [self populateTextFields]; @@ -97,12 +219,7 @@ } - (void)viewDidUnload { - GooglePlusSampleAppDelegate *appDelegate = (GooglePlusSampleAppDelegate *) - [[UIApplication sharedApplication] delegate]; - appDelegate.share = nil; - share_.delegate = nil; - [share_ release]; - share_ = nil; + [GPPShare sharedInstance].delegate = nil; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification @@ -112,29 +229,32 @@ name:UIKeyboardWillHideNotification object:nil]; - [self setAttachDeepLinkSwitch:nil]; - [self setDeepLinkID:nil]; - [self setDeepLinkTitle:nil]; - [self setDeepLinkDescription:nil]; - [self setDeepLinkThumbnailURL:nil]; + [self setAddContentDeepLinkSwitch:nil]; + [self setContentDeepLinkID:nil]; + [self setContentDeepLinkTitle:nil]; + [self setContentDeepLinkDescription:nil]; + [self setContentDeepLinkThumbnailURL:nil]; [self setShareScrollView:nil]; [self setShareView:nil]; [self setShareToolbar:nil]; - [self setAttachDeepLinkDataLabel:nil]; + [self setAddContentDeepLinkLabel:nil]; [self setUrlToShareLabel:nil]; [self setPrefillTextLabel:nil]; - [self setDeepLinkIDLabel:nil]; - [self setDeepLinkTitleLabel:nil]; - [self setDeepLinkDescriptionLabel:nil]; - [self setDeepLinkThumbnailURLLabel:nil]; + [self setContentDeepLinkIDLabel:nil]; + [self setContentDeepLinkTitleLabel:nil]; + [self setContentDeepLinkDescriptionLabel:nil]; + [self setContentDeepLinkThumbnailURLLabel:nil]; [self setShareButton:nil]; - [self setUrlForDeepLinkMetadataSwitch:nil]; - [self setUrlForDeepLinkMetadataLabel:nil]; + [self setUrlForContentDeepLinkMetadataSwitch:nil]; + [self setUrlForContentDeepLinkMetadataLabel:nil]; + [self setAddCallToActionButtonSwitch:nil]; + [self setAddCallToActionButtonLabel:nil]; [super viewDidUnload]; } - (void)viewWillAppear:(BOOL)animated { - if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad){ + if ([[UIDevice currentDevice] userInterfaceIdiom] + == UIUserInterfaceIdiomPad) { shareScrollView_.frame = self.view.frame; } [super viewWillAppear:animated]; @@ -247,30 +367,40 @@ - (IBAction)shareButton:(id)sender { shareStatus_.text = @"Status: Sharing..."; - id shareBuilder = [share_ shareDialog]; + id shareBuilder = [[GPPShare sharedInstance] shareDialog]; NSString *inputURL = shareURL_.text; NSURL *urlToShare = [inputURL length] ? [NSURL URLWithString:inputURL] : nil; if (urlToShare) { - shareBuilder = [shareBuilder setURLToShare:urlToShare]; + [shareBuilder setURLToShare:urlToShare]; } - if ([deepLinkID_ text]) { - shareBuilder = [shareBuilder setContentDeepLinkID:[deepLinkID_ text]]; - NSString *title = [deepLinkTitle_ text]; - NSString *description = [deepLinkDescription_ text]; + if ([contentDeepLinkID_ text]) { + [shareBuilder setContentDeepLinkID:[contentDeepLinkID_ text]]; + NSString *title = [contentDeepLinkTitle_ text]; + NSString *description = [contentDeepLinkDescription_ text]; if (title && description) { - NSURL *thumbnailURL = [NSURL URLWithString:[deepLinkThumbnailURL_ text]]; - shareBuilder = [shareBuilder setTitle:title - description:description - thumbnailURL:thumbnailURL]; + NSURL *thumbnailURL = + [NSURL URLWithString:[contentDeepLinkThumbnailURL_ text]]; + [shareBuilder setTitle:title + description:description + thumbnailURL:thumbnailURL]; } } NSString *inputText = sharePrefillText_.text; NSString *text = [inputText length] ? inputText : nil; if (text) { - shareBuilder = [shareBuilder setPrefillText:text]; + [shareBuilder setPrefillText:text]; + } + + if ([addCallToActionButtonSwitch_ isOn]) { + // Please replace the URL below with your own call-to-action button URL. + NSURL *callToActionURL = [NSURL URLWithString: + @"http://developers.google.com/+/mobile/ios/"]; + [shareBuilder setCallToActionButtonWithLabel:selectedCallToAction_ + URL:callToActionURL + deepLinkID:@"call-to-action"]; } if (![shareBuilder open]) { @@ -289,54 +419,62 @@ [actionSheet showFromToolbar:shareToolbar_]; } -- (IBAction)urlForDeepLinkMetadataSwitchToggle:(id)sender { +- (IBAction)urlForContentDeepLinkMetadataSwitchToggle:(id)sender { [self layout]; [self populateTextFields]; } -- (IBAction)deepLinkSwitchToggle:(id)sender { - if (!attachDeepLinkSwitch_.on) { - [urlForDeepLinkMetadataSwitch_ setOn:YES]; +- (IBAction)contentDeepLinkSwitchToggle:(id)sender { + if (!addContentDeepLinkSwitch_.on) { + [urlForContentDeepLinkMetadataSwitch_ setOn:YES]; } [self layout]; [self populateTextFields]; } -#pragma mark - helper methods +#pragma mark - Helper methods -- (void) placeView:(UIView *)view x:(CGFloat)x y:(CGFloat)y { +- (void)placeView:(UIView *)view x:(CGFloat)x y:(CGFloat)y { CGSize frameSize = view.frame.size; view.frame = CGRectMake(x, y, frameSize.width, frameSize.height); } -- (void) layout { +- (void)layout { CGFloat originX = 20.0; - CGFloat originY = 20.0; - CGFloat yPadding = 20.0; + CGFloat originY = 10.0; + CGFloat yPadding = 10.0; CGFloat currentY = originY; CGFloat middleX = 150; - // Place the switch for attaching deep-link data. - [self placeView:attachDeepLinkDataLabel_ x:originX y:currentY]; - [self placeView:attachDeepLinkSwitch_ x:middleX + 50 y:currentY]; - CGSize frameSize = attachDeepLinkSwitch_.frame.size; + // Place the switch for adding call-to-action button. + [self placeView:addCallToActionButtonLabel_ x:originX y:currentY]; + [self placeView:addCallToActionButtonSwitch_ x:middleX * 1.5 y:currentY]; + CGSize frameSize = addCallToActionButtonSwitch_.frame.size; + currentY += frameSize.height + yPadding; + + // Place the switch for attaching content deep-link data. + [self placeView:addContentDeepLinkLabel_ x:originX y:currentY]; + [self placeView:addContentDeepLinkSwitch_ x:middleX * 1.5 y:currentY]; + frameSize = addContentDeepLinkSwitch_.frame.size; currentY += frameSize.height + yPadding; // Place the switch for preview URL. - if (attachDeepLinkSwitch_.on) { - [self placeView:urlForDeepLinkMetadataLabel_ x:originX y:currentY]; - [self placeView:urlForDeepLinkMetadataSwitch_ x:middleX + 50 y:currentY]; - frameSize = urlForDeepLinkMetadataSwitch_.frame.size; + if (addContentDeepLinkSwitch_.on) { + [self placeView:urlForContentDeepLinkMetadataLabel_ x:originX y:currentY]; + [self placeView:urlForContentDeepLinkMetadataSwitch_ + x:middleX * 1.5 + y:currentY]; + frameSize = urlForContentDeepLinkMetadataSwitch_.frame.size; currentY += frameSize.height + yPadding; - urlForDeepLinkMetadataSwitch_.hidden = NO; - urlForDeepLinkMetadataLabel_.hidden = NO; + urlForContentDeepLinkMetadataSwitch_.hidden = NO; + urlForContentDeepLinkMetadataLabel_.hidden = NO; } else { - urlForDeepLinkMetadataSwitch_.hidden = YES; - urlForDeepLinkMetadataLabel_.hidden = YES; + urlForContentDeepLinkMetadataSwitch_.hidden = YES; + urlForContentDeepLinkMetadataLabel_.hidden = YES; } // Place the field for URL to share. - if (urlForDeepLinkMetadataSwitch_.on) { + if (urlForContentDeepLinkMetadataSwitch_.on) { [self placeView:urlToShareLabel_ x:originX y:currentY]; frameSize = urlToShareLabel_.frame.size; currentY += frameSize.height + 0.5 * yPadding; @@ -360,62 +498,70 @@ currentY += frameSize.height + yPadding; // Place the content deep-link ID field. - if (attachDeepLinkSwitch_.on) { - [self placeView:deepLinkIDLabel_ x:originX y:currentY]; - frameSize = deepLinkIDLabel_.frame.size; + if (addContentDeepLinkSwitch_.on) { + [self placeView:contentDeepLinkIDLabel_ x:originX y:currentY]; + frameSize = contentDeepLinkIDLabel_.frame.size; currentY += frameSize.height + 0.5 * yPadding; - [self placeView:deepLinkID_ x:originX y:currentY]; - frameSize = deepLinkID_.frame.size; + [self placeView:contentDeepLinkID_ x:originX y:currentY]; + frameSize = contentDeepLinkID_.frame.size; currentY += frameSize.height + yPadding; - deepLinkIDLabel_.hidden = NO; - deepLinkID_.hidden = NO; + contentDeepLinkIDLabel_.hidden = NO; + contentDeepLinkID_.hidden = NO; } else { - deepLinkIDLabel_.hidden = YES; - deepLinkID_.hidden = YES; + contentDeepLinkIDLabel_.hidden = YES; + contentDeepLinkID_.hidden = YES; } // Place fields for content deep-link metadata. - if (attachDeepLinkSwitch_.on && !urlForDeepLinkMetadataSwitch_.on) { - [self placeView:deepLinkTitleLabel_ x:originX y:currentY]; - frameSize = deepLinkTitleLabel_.frame.size; + if (addContentDeepLinkSwitch_.on && + !urlForContentDeepLinkMetadataSwitch_.on) { + [self placeView:contentDeepLinkTitleLabel_ x:originX y:currentY]; + frameSize = contentDeepLinkTitleLabel_.frame.size; currentY += frameSize.height + 0.5 * yPadding; - [self placeView:deepLinkTitle_ x:originX y:currentY]; - frameSize = deepLinkTitle_.frame.size; + [self placeView:contentDeepLinkTitle_ x:originX y:currentY]; + frameSize = contentDeepLinkTitle_.frame.size; currentY += frameSize.height + yPadding; - [self placeView:deepLinkDescriptionLabel_ x:originX y:currentY]; - frameSize = deepLinkDescriptionLabel_.frame.size; + [self placeView:contentDeepLinkDescriptionLabel_ x:originX y:currentY]; + frameSize = contentDeepLinkDescriptionLabel_.frame.size; currentY += frameSize.height + 0.5 * yPadding; - [self placeView:deepLinkDescription_ x:originX y:currentY]; - frameSize = deepLinkDescription_.frame.size; + [self placeView:contentDeepLinkDescription_ x:originX y:currentY]; + frameSize = contentDeepLinkDescription_.frame.size; currentY += frameSize.height + yPadding; - [self placeView:deepLinkThumbnailURLLabel_ x:originX y:currentY]; - frameSize = deepLinkThumbnailURLLabel_.frame.size; + [self placeView:contentDeepLinkThumbnailURLLabel_ x:originX y:currentY]; + frameSize = contentDeepLinkThumbnailURLLabel_.frame.size; currentY += frameSize.height + 0.5 * yPadding; - [self placeView:deepLinkThumbnailURL_ x:originX y:currentY]; - frameSize = deepLinkThumbnailURL_.frame.size; + [self placeView:contentDeepLinkThumbnailURL_ x:originX y:currentY]; + frameSize = contentDeepLinkThumbnailURL_.frame.size; currentY += frameSize.height + yPadding; - deepLinkTitle_.hidden = NO; - deepLinkTitleLabel_.hidden = NO; - deepLinkDescriptionLabel_.hidden = NO; - deepLinkDescription_.hidden = NO; - deepLinkThumbnailURLLabel_.hidden = NO; - deepLinkThumbnailURL_.hidden = NO; + contentDeepLinkTitle_.hidden = NO; + contentDeepLinkTitleLabel_.hidden = NO; + contentDeepLinkDescriptionLabel_.hidden = NO; + contentDeepLinkDescription_.hidden = NO; + contentDeepLinkThumbnailURLLabel_.hidden = NO; + contentDeepLinkThumbnailURL_.hidden = NO; } else { - deepLinkTitle_.hidden = YES; - deepLinkTitleLabel_.hidden = YES; - deepLinkDescriptionLabel_.hidden = YES; - deepLinkDescription_.hidden = YES; - deepLinkThumbnailURLLabel_.hidden = YES; - deepLinkThumbnailURL_.hidden = YES; + contentDeepLinkTitle_.hidden = YES; + contentDeepLinkTitleLabel_.hidden = YES; + contentDeepLinkDescriptionLabel_.hidden = YES; + contentDeepLinkDescription_.hidden = YES; + contentDeepLinkThumbnailURLLabel_.hidden = YES; + contentDeepLinkThumbnailURL_.hidden = YES; } // Place the share button and status. - [self placeView:shareButton_ x:originX y:currentY]; + [[shareButton_ layer] setCornerRadius:5]; + [[shareButton_ layer] setMasksToBounds:YES]; + CGColorRef borderColor = [[UIColor colorWithWhite:203.0/255.0 + alpha:1.0] CGColor]; + [[shareButton_ layer] setBorderColor:borderColor]; + [[shareButton_ layer] setBorderWidth:1.0]; + + [self placeView:shareButton_ x:originX y:currentY + yPadding]; frameSize = shareButton_.frame.size; - currentY += frameSize.height + yPadding; + currentY += frameSize.height + yPadding * 2; [self placeView:shareStatus_ x:originX y:currentY]; frameSize = shareStatus_.frame.size; @@ -436,31 +582,32 @@ if (shareURL_.hidden) { shareURL_.text = @""; } else { - shareURL_.text = @"http://developers.google.com"; + shareURL_.text = @"http://developers.google.com/+/mobile/ios/"; } - if (deepLinkID_.hidden) { - deepLinkID_.text = @""; + if (contentDeepLinkID_.hidden) { + contentDeepLinkID_.text = @""; } else { - deepLinkID_.text = @"reviews/314159265358"; + contentDeepLinkID_.text = @"playlist/314159265358"; } - if (deepLinkTitle_.hidden) { - deepLinkTitle_.text = @""; + if (contentDeepLinkTitle_.hidden) { + contentDeepLinkTitle_.text = @""; } else { - deepLinkTitle_.text = @"Joe's Diner Review"; + contentDeepLinkTitle_.text = @"Joe's Pop Music Playlist"; } - if (deepLinkDescription_.hidden) { - deepLinkDescription_.text = @""; + if (contentDeepLinkDescription_.hidden) { + contentDeepLinkDescription_.text = @""; } else { - deepLinkDescription_.text = @"Check out my review of the awesome toast!"; + contentDeepLinkDescription_.text = + @"Check out this playlist of my favorite pop songs!"; } - if (deepLinkThumbnailURL_.hidden) { - deepLinkThumbnailURL_.text = @""; + if (contentDeepLinkThumbnailURL_.hidden) { + contentDeepLinkThumbnailURL_.text = @""; } else { - deepLinkThumbnailURL_.text = + contentDeepLinkThumbnailURL_.text = @"http://www.google.com/logos/2012/childrensday-2012-hp.jpg"; } } @@ -495,4 +642,62 @@ return; } +- (void)addCallToActionSwitched { + if (!addCallToActionButtonSwitch_.on) { + return; + } + [self.view addSubview:callToActionPickerView_]; +} + +#pragma mark - UIPickerViewDataSource + +- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { + return 1; +} + +- (NSInteger)pickerView:(UIPickerView *)pickerView + numberOfRowsInComponent:(NSInteger)component { + return callToActions_.count; +} + +#pragma mark - UIPickerViewDelegate + +- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row + forComponent:(NSInteger)component reusingView:(UIView *)view { + UITableViewCell *cell = (UITableViewCell *)view; + if (cell == nil) { + cell = [[[UITableViewCell alloc] + initWithStyle:UITableViewCellStyleDefault + reuseIdentifier:nil] autorelease]; + [cell setBackgroundColor:[UIColor clearColor]]; + [cell setBounds: CGRectMake(0, 0, cell.frame.size.width - 20 , 44)]; + UITapGestureRecognizer *singleTapGestureRecognizer = + [[[UITapGestureRecognizer alloc] + initWithTarget:self + action:@selector(toggleSelection:)] autorelease]; + singleTapGestureRecognizer.numberOfTapsRequired = 1; + [cell addGestureRecognizer:singleTapGestureRecognizer]; + } + NSString *callToAction = [callToActions_ objectAtIndex:row]; + if ([selectedCallToAction_ isEqualToString:callToAction]) { + cell.accessoryType = UITableViewCellAccessoryCheckmark; + } else { + cell.accessoryType = UITableViewCellAccessoryNone; + } + cell.textLabel.text = callToAction; + cell.textLabel.font = [UIFont systemFontOfSize:12]; + cell.tag = row; + return cell; +} + +- (void)toggleSelection:(UITapGestureRecognizer *)recognizer { + int row = recognizer.view.tag; + self.selectedCallToAction = [callToActions_ objectAtIndex:row]; + [callToActionPickerView_ removeFromSuperview]; + // Force refresh checked/unchecked marks. + [callToActionPickerView_ reloadAllComponents]; + addCallToActionButtonLabel_.text = + [NSString stringWithFormat:@"Call-to-Action: %@", selectedCallToAction_]; +} + @end diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleShareViewController.xib b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleShareViewController.xib index b9118564..a7b75b1c 100644 --- a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleShareViewController.xib +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleShareViewController.xib @@ -1,14 +1,14 @@ - 1296 + 1536 12C60 - 2549 + 2844 1187.34 625.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1498 + 1930 IBProxyObject @@ -43,7 +43,7 @@ - 268 + 292 @@ -56,7 +56,7 @@ YES IBCocoaTouchFramework 0 - http://developers.google.com/ + http://developers.google.com/+/mobile/ios/ 3 3 @@ -97,6 +97,7 @@ 1 MCAwIDAAA + darkTextColor 1 @@ -114,21 +115,22 @@ 292 - {{31, 255}, {112, 32}} + {{31, 261}, {112, 32}} - + NO IBCocoaTouchFramework 0 0 + Share 3 MQA 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + MC41MjE1Njg2NTYgMC4wNTU3MzQ0MTc0NyAwLjA4MTU0NTQ3OTkzAA 3 @@ -136,7 +138,7 @@ NSImage - google_plus_share_large.png + button_background.png 2 @@ -171,7 +173,7 @@ 290 - {{38, 306}, {268, 21}} + {{38, 312}, {268, 21}} @@ -191,10 +193,10 @@ 292 - {{194, 31}, {94, 27}} + {{208, 35}, {94, 27}} - + NO IBCocoaTouchFramework 0 @@ -204,7 +206,7 @@ 292 - {{20, 31}, {172, 21}} + {{20, 38}, {172, 21}} @@ -213,7 +215,7 @@ 7 NO IBCocoaTouchFramework - Attach deep-link data + Add content deep link 1 @@ -254,7 +256,7 @@ {{26, 247}, {280, 30}} - + _NS:9 NO YES @@ -282,7 +284,7 @@ {{26, 292}, {246, 21}} - + _NS:9 NO YES @@ -331,7 +333,7 @@ 7 NO IBCocoaTouchFramework - Description (required) + Description (optional) 0 @@ -394,7 +396,7 @@ {{26, 498}, {280, 30}} - + _NS:9 NO YES @@ -447,7 +449,7 @@ 292 - {{194, 66}, {94, 27}} + {{208, 66}, {94, 27}} @@ -461,10 +463,10 @@ 292 - {{20, 66}, {172, 21}} + {{20, 4530}, {172, 21}} - + _NS:9 NO YES @@ -479,11 +481,46 @@ NO + + + 292 + {{208, 4}, {94, 27}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + YES + + + + 292 + {{20, 4}, {184, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Add call-to-action button + + + 0 + + + NO + {320, 372} - + _NS:9 YES YES @@ -557,7 +594,7 @@ - deepLinkThumbnailURLLabel + contentDeepLinkThumbnailURLLabel @@ -565,7 +602,7 @@ - attachDeepLinkDataLabel + addContentDeepLinkLabel @@ -581,7 +618,7 @@ - deepLinkTitle + contentDeepLinkTitle @@ -597,7 +634,7 @@ - deepLinkDescriptionLabel + contentDeepLinkDescriptionLabel @@ -613,7 +650,7 @@ - deepLinkTitleLabel + contentDeepLinkTitleLabel @@ -621,7 +658,7 @@ - urlForDeepLinkMetadataLabel + urlForContentDeepLinkMetadataLabel @@ -629,7 +666,7 @@ - deepLinkThumbnailURL + contentDeepLinkThumbnailURL @@ -645,7 +682,7 @@ - deepLinkDescription + contentDeepLinkDescription @@ -661,7 +698,7 @@ - attachDeepLinkSwitch + addContentDeepLinkSwitch @@ -685,7 +722,7 @@ - deepLinkIDLabel + contentDeepLinkIDLabel @@ -693,7 +730,7 @@ - urlForDeepLinkMetadataSwitch + urlForContentDeepLinkMetadataSwitch @@ -701,12 +738,28 @@ - deepLinkID + contentDeepLinkID 48 + + + addCallToActionButtonLabel + + + + 68 + + + + addCallToActionButtonSwitch + + + + 69 + delegate @@ -742,7 +795,7 @@ - deepLinkSwitchToggle: + contentDeepLinkSwitchToggle: 13 @@ -783,7 +836,7 @@ - urlForDeepLinkMetadataSwitchToggle: + urlForContentDeepLinkMetadataSwitchToggle: 13 @@ -860,6 +913,8 @@ + + @@ -953,6 +1008,16 @@ + + 65 + + + + + 66 + + + @@ -982,6 +1047,8 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -990,7 +1057,7 @@ - 64 + 69 @@ -998,14 +1065,14 @@ GooglePlusSampleShareViewController UIViewController - id + id id id - id + id - - deepLinkSwitchToggle: + + contentDeepLinkSwitchToggle: id @@ -1016,22 +1083,24 @@ shareToolbar: id - - urlForDeepLinkMetadataSwitchToggle: + + urlForContentDeepLinkMetadataSwitchToggle: id - UILabel - UISwitch - UITextField - UILabel - UITextField - UILabel - UITextField - UILabel - UITextField - UILabel + UILabel + UISwitch + UILabel + UISwitch + UITextField + UILabel + UITextField + UILabel + UITextField + UILabel + UITextField + UILabel UILabel UIButton UITextField @@ -1040,49 +1109,57 @@ UIToolbar UITextField UIView - UILabel - UISwitch + UILabel + UISwitch UILabel - - attachDeepLinkDataLabel + + addCallToActionButtonLabel UILabel - - attachDeepLinkSwitch + + addCallToActionButtonSwitch UISwitch - - deepLinkDescription - UITextField - - - deepLinkDescriptionLabel + + addContentDeepLinkLabel UILabel - - deepLinkID + + addContentDeepLinkSwitch + UISwitch + + + contentDeepLinkDescription UITextField - - deepLinkIDLabel + + contentDeepLinkDescriptionLabel UILabel - - deepLinkThumbnailURL + + contentDeepLinkID UITextField - - deepLinkThumbnailURLLabel + + contentDeepLinkIDLabel UILabel - - deepLinkTitle + + contentDeepLinkThumbnailURL UITextField - - deepLinkTitleLabel + + contentDeepLinkThumbnailURLLabel + UILabel + + + contentDeepLinkTitle + UITextField + + + contentDeepLinkTitleLabel UILabel @@ -1117,12 +1194,12 @@ shareView UIView - - urlForDeepLinkMetadataLabel + + urlForContentDeepLinkMetadataLabel UILabel - - urlForDeepLinkMetadataSwitch + + urlForContentDeepLinkMetadataSwitch UISwitch @@ -1141,14 +1218,14 @@ IBCocoaTouchFramework com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - + YES 3 - google_plus_share_large.png - {112, 32} + button_background.png + {1, 1} - 1498 + 1930 diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleSignInViewController.h b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleSignInViewController.h index cd6a4c41..3420a998 100644 --- a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleSignInViewController.h +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleSignInViewController.h @@ -35,9 +35,8 @@ @property (retain, nonatomic) IBOutlet UILabel *signInDisplayName; // A button to sign out of this application. @property (retain, nonatomic) IBOutlet UIButton *signOutButton; -// A switch for whether to request for Google+ History's -// https://www.googleapis.com/auth/plus.moments.write scope. -@property (retain, nonatomic) IBOutlet UISwitch *plusMomentsWriteScope; +// A button to disconnect user from this application. +@property (retain, nonatomic) IBOutlet UIButton *disconnectButton; // A switch for whether to request // https://www.googleapis.com/auth/userinfo.email scope to get user's email // address after the sign-in action. @@ -45,9 +44,8 @@ // Called when the user presses the "Sign out" button. - (IBAction)signOut:(id)sender; -// Called when the user toggles Google+ History's -// https://www.googleapis.com/auth/plus.moments.write scope. -- (IBAction)plusMomentsWriteScopeToggle:(id)sender; +// Called when the user presses the "Disconnect" button. +- (IBAction)disconnect:(id)sender; // Called when the user toggles the // https://www.googleapis.com/auth/userinfo.email scope. - (IBAction)userinfoEmailScopeToggle:(id)sender; diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleSignInViewController.m b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleSignInViewController.m index 5d95cdcd..ba6a6b37 100644 --- a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleSignInViewController.m +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleSignInViewController.m @@ -19,22 +19,13 @@ #import "GooglePlusSampleSignInViewController.h" #import -#import "GooglePlusSampleAppDelegate.h" #import "GPPSignIn.h" #import "GPPSignInButton.h" #import "GTLPlus.h" -#import "GTLPlusConstants.h" -#import "GTLQueryPlus.h" -#import "GTLServicePlus.h" #import "GTMLogger.h" #import "GTMOAuth2Authentication.h" -@interface GooglePlusSampleSignInViewController () { - // Saved state of |userinfoEmailScope_.on|. - BOOL savedUserinfoEmailScopeState_; -} -- (GooglePlusSampleAppDelegate *)appDelegate; -- (void)setSignInScopes; +@interface GooglePlusSampleSignInViewController () - (void)enableSignInSettings:(BOOL)enable; - (void)reportAuthStatus; - (void)retrieveUserInfo; @@ -46,7 +37,7 @@ @synthesize signInAuthStatus = signInAuthStatus_; @synthesize signInDisplayName = signInDisplayName_; @synthesize signOutButton = signOutButton_; -@synthesize plusMomentsWriteScope = plusMomentsWriteScope_; +@synthesize disconnectButton = disconnectButton_; @synthesize userinfoEmailScope = userinfoEmailScope_; - (void)dealloc { @@ -54,44 +45,52 @@ [signInAuthStatus_ release]; [signInDisplayName_ release]; [signOutButton_ release]; + [userinfoEmailScope_ release]; [super dealloc]; } #pragma mark - View lifecycle - (void)viewDidLoad { - GooglePlusSampleAppDelegate *appDelegate = [self appDelegate]; - plusMomentsWriteScope_.on = appDelegate.plusMomentsWriteScope; - userinfoEmailScope_.on = savedUserinfoEmailScopeState_; + // Make sure the GPPSignInButton class is linked in because references from + // xib file doesn't count. + [GPPSignInButton class]; - // Set up sign-out button. - [[signOutButton_ layer] setCornerRadius:5]; - [[signOutButton_ layer] setMasksToBounds:YES]; - CGColorRef borderColor = [[UIColor colorWithWhite:203.0/255.0 - alpha:1.0] CGColor]; - [[signOutButton_ layer] setBorderColor:borderColor]; - [[signOutButton_ layer] setBorderWidth:1.0]; + GPPSignIn *signIn = [GPPSignIn sharedInstance]; + userinfoEmailScope_.on = + signIn.shouldFetchGoogleUserEmail; + + // Set up sign-out and disconnect buttons. + [self setUpButton:signOutButton_]; + [self setUpButton:disconnectButton_]; // Set up sample view of Google+ sign-in. - signInButton_.delegate = self; - signInButton_.shouldFetchGoogleUserEmail = userinfoEmailScope_.on; - signInButton_.clientID = [GooglePlusSampleAppDelegate clientID]; - [self setSignInScopes]; + // The client ID has been set in the app delegate. + signIn.delegate = self; + signIn.shouldFetchGoogleUserEmail = userinfoEmailScope_.on; + signIn.actions = [NSArray arrayWithObjects: + @"http://schemas.google.com/AddActivity", + @"http://schemas.google.com/BuyActivity", + @"http://schemas.google.com/CheckInActivity", + @"http://schemas.google.com/CommentActivity", + @"http://schemas.google.com/CreateActivity", + @"http://schemas.google.com/ListenActivity", + @"http://schemas.google.com/ReserveActivity", + @"http://schemas.google.com/ReviewActivity", + nil]; - appDelegate.signInButton = signInButton_; [self reportAuthStatus]; + [signIn trySilentAuthentication]; [super viewDidLoad]; } -- (void)viewWillDisappear:(BOOL)animated { - GooglePlusSampleAppDelegate *appDelegate = [self appDelegate]; - appDelegate.plusMomentsWriteScope = plusMomentsWriteScope_.on; - savedUserinfoEmailScopeState_ = userinfoEmailScope_.on; -} - - (void)viewDidUnload { - GooglePlusSampleAppDelegate *appDelegate = [self appDelegate]; - appDelegate.signInButton = nil; + [self setSignInButton:nil]; + [self setSignInAuthStatus:nil]; + [self setSignInDisplayName:nil]; + [self setSignOutButton:nil]; + [self setDisconnectButton:nil]; + [self setUserinfoEmailScope:nil]; [super viewDidUnload]; } @@ -104,37 +103,38 @@ [NSString stringWithFormat:@"Status: Authentication error: %@", error]; return; } - GooglePlusSampleAppDelegate *appDelegate = [self appDelegate]; - appDelegate.auth = auth; [self reportAuthStatus]; } +- (void)didDisconnectWithError:(NSError *)error { + if (error) { + signInAuthStatus_.text = + [NSString stringWithFormat:@"Status: Failed to disconnect: %@", error]; + } else { + signInAuthStatus_.text = + [NSString stringWithFormat:@"Status: Disconnected"]; + signInDisplayName_.text = @""; + [self enableSignInSettings:YES]; + } +} + #pragma mark - Helper methods -- (GooglePlusSampleAppDelegate *)appDelegate { - return (GooglePlusSampleAppDelegate *) - [[UIApplication sharedApplication] delegate]; -} - -- (void)setSignInScopes { - signInButton_.scope = plusMomentsWriteScope_.on ? - [NSArray arrayWithObjects: - @"https://www.googleapis.com/auth/plus.moments.write", - @"https://www.googleapis.com/auth/plus.me", - nil] : - [NSArray arrayWithObjects: - @"https://www.googleapis.com/auth/plus.me", - nil]; +- (void)setUpButton:(UIButton *)button { + [[button layer] setCornerRadius:5]; + [[button layer] setMasksToBounds:YES]; + CGColorRef borderColor = [[UIColor colorWithWhite:203.0/255.0 + alpha:1.0] CGColor]; + [[button layer] setBorderColor:borderColor]; + [[button layer] setBorderWidth:1.0]; } - (void)enableSignInSettings:(BOOL)enable { - plusMomentsWriteScope_.enabled = enable; - userinfoEmailScope_.enabled = enable && !plusMomentsWriteScope_.on; + userinfoEmailScope_.enabled = enable; } - (void)reportAuthStatus { - GooglePlusSampleAppDelegate *appDelegate = [self appDelegate]; - if (appDelegate.auth) { + if ([GPPSignIn sharedInstance].authentication) { signInAuthStatus_.text = @"Status: Authenticated"; [self retrieveUserInfo]; [self enableSignInSettings:NO]; @@ -146,36 +146,26 @@ } - (void)retrieveUserInfo { - GooglePlusSampleAppDelegate *appDelegate = [self appDelegate]; - if (appDelegate.auth.userEmail) { - signInDisplayName_.text = appDelegate.auth.userEmail; - } else { - signInDisplayName_.text = @""; - } + signInDisplayName_.text = [NSString stringWithFormat:@"Email: %@", + [GPPSignIn sharedInstance].authentication.userEmail]; } #pragma mark - IBActions - (IBAction)signOut:(id)sender { - [[signInButton_ googlePlusSignIn] signOut]; - - GooglePlusSampleAppDelegate *appDelegate = [self appDelegate]; - appDelegate.auth = nil; + [[GPPSignIn sharedInstance] signOut]; [self reportAuthStatus]; signInDisplayName_.text = @""; } -- (IBAction)plusMomentsWriteScopeToggle:(id)sender { - [self setSignInScopes]; - userinfoEmailScope_.enabled = !plusMomentsWriteScope_.on; - if (plusMomentsWriteScope_.on) { - userinfoEmailScope_.on = NO; - } +- (IBAction)disconnect:(id)sender { + [[GPPSignIn sharedInstance] disconnect]; } - (IBAction)userinfoEmailScopeToggle:(id)sender { - signInButton_.shouldFetchGoogleUserEmail = userinfoEmailScope_.on; + [GPPSignIn sharedInstance].shouldFetchGoogleUserEmail = + userinfoEmailScope_.on; } @end diff --git a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleSignInViewController.xib b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleSignInViewController.xib index d5f869d5..4ad6087a 100644 --- a/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleSignInViewController.xib +++ b/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleSignInViewController.xib @@ -1,14 +1,14 @@ - 1536 - 12C54 - 2843 + 1552 + 12C60 + 3084 1187.34 625.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1929 + 2083 IBProxyObject @@ -40,10 +40,10 @@ 292 - {{19, 218}, {119, 35}} + {{19, 171}, {117, 35}} - + NO IBCocoaTouchFramework 0 @@ -57,19 +57,19 @@ 1 MC42MzUyOTQxMTc2IDAuMzIxNTY4NjI3NSAwLjI1ODgyMzUyOTQAA - + 3 MC41AA - + NSImage button_background.png - + 2 15 - + Helvetica-Bold 15 16 @@ -78,7 +78,7 @@ 292 - {{18, 159}, {118, 32}} + {{18, 112}, {118, 32}} @@ -94,7 +94,7 @@ 290 - {{20, 288}, {280, 21}} + {{20, 241}, {280, 21}} @@ -125,10 +125,9 @@ 290 - {{20, 317}, {280, 21}} + {{20, 270}, {280, 65}} - NO YES 7 @@ -139,58 +138,25 @@ 1 13 + 2 + 280 - + 292 - {{191, 99}, {94, 27}} + {{18, 15}, {273, 21}} _NS:9 NO - IBCocoaTouchFramework - 0 - 0 - YES - - - - 292 - {{18, 20}, {273, 21}} - - - - _NS:9 - NO YES 7 NO IBCocoaTouchFramework - Scopes setting (sign out to change) - - - 0 - - - NO - - - - 292 - {{20, 99}, {177, 27}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - plus.moments.write + Sign-in setting (sign out to change) 0 @@ -201,7 +167,7 @@ 292 - {{19, 58}, {178, 27}} + {{18, 44}, {197, 27}} @@ -211,7 +177,7 @@ 7 NO IBCocoaTouchFramework - userinfo.email + get userinfo.email scope 0 @@ -222,9 +188,10 @@ 292 - {{191, 58}, {94, 27}} + {{208, 44}, {94, 27}} + _NS:9 NO IBCocoaTouchFramework @@ -232,11 +199,36 @@ 0 0 + + + 292 + {{181, 171}, {119, 35}} + + + + NO + IBCocoaTouchFramework + 0 + 0 + Disconnect + + 1 + MC42MzUyOTQxMTc2IDAuMzIxNTY4NjI3NSAwLjI1ODgyMzUyOTQAA + + + 1 + MC42MzUyOTQxMTc2IDAuMzIxNTY4NjI3NSAwLjI1ODgyMzUyOTQAA + + + + + + {{0, 20}, {320, 460}} - + 3 MQA @@ -288,14 +280,6 @@ 28 - - - plusMomentsWriteScope - - - - 35 - userinfoEmailScope @@ -304,6 +288,14 @@ 39 + + + disconnectButton + + + + 51 + signOut: @@ -313,15 +305,6 @@ 26 - - - plusMomentsWriteScopeToggle: - - - 13 - - 36 - userinfoEmailScopeToggle: @@ -331,6 +314,15 @@ 40 + + + disconnect: + + + 7 + + 50 + @@ -347,12 +339,11 @@ - - - + + @@ -388,8 +379,13 @@ - 29 - + 37 + + + + + 38 + @@ -398,18 +394,8 @@ - 34 - - - - - 37 - - - - - 38 - + 48 + @@ -422,11 +408,11 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin GPPSignInButton @@ -436,13 +422,13 @@ - 40 + 51 GPPSignInButton - UIView + UIButton IBProjectSource ./Classes/GPPSignInButton.h @@ -452,13 +438,13 @@ GooglePlusSampleSignInViewController UIViewController - id + id id id - - plusMomentsWriteScopeToggle: + + disconnect: id @@ -471,7 +457,7 @@ - UISwitch + UIButton UILabel GPPSignInButton UILabel @@ -479,9 +465,9 @@ UISwitch - - plusMomentsWriteScope - UISwitch + + disconnectButton + UIButton signInAuthStatus @@ -515,7 +501,7 @@ IBCocoaTouchFramework com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - + YES 3 @@ -523,6 +509,6 @@ button_background.png {1, 1} - 1929 + 2083 diff --git a/External/google-plus-ios-sdk/SampleCode/Resources/Icon_2x.png b/External/google-plus-ios-sdk/SampleCode/Resources/Icon@2x.png similarity index 100% rename from External/google-plus-ios-sdk/SampleCode/Resources/Icon_2x.png rename to External/google-plus-ios-sdk/SampleCode/Resources/Icon@2x.png diff --git a/External/google-plus-ios-sdk/lib/GPPDeepLink.h b/External/google-plus-ios-sdk/lib/GPPDeepLink.h index b8174b94..991a9506 100644 --- a/External/google-plus-ios-sdk/lib/GPPDeepLink.h +++ b/External/google-plus-ios-sdk/lib/GPPDeepLink.h @@ -4,26 +4,45 @@ // // Copyright 2012 Google Inc. // -// Usage of this SDK is subject to the Google+ Platform Terms of Service: +// Use of this SDK is subject to the Google+ Platform Terms of Service: // https://developers.google.com/+/terms // #import +@class GPPDeepLink; + +// A protocol optionally implemented by the client of |GPPDeepLink|. +@protocol GPPDeepLinkDelegate + +// Notifies the client that a deep link has been received either from +// |readDeepLinkAfterInstall| or |handleURL:sourceApplication:annotation:|. +- (void)didReceiveDeepLink:(GPPDeepLink *)deepLink; + +@end + +// This class handles a deep link within a share posted on Google+. +// For more information on deep links, see +// http://developers.google.com/+/mobile/ios/share . @interface GPPDeepLink : NSObject +// Sets the delegate to handle the deep link. ++ (void)setDelegate:(id)delegate; + // Returns a |GPPDeepLink| for your app to handle, or |nil| if not found. The // deep-link ID can be obtained from |GPPDeepLink|. It is stored when a user // clicks a link to your app from a Google+ post, but hasn't yet installed your // app. The user will be redirected to the App Store to install your app. This // method should be called on or near your app launch to take the user to -// deep-link ID within your app. +// deep-link ID within your app. The delegate will be called if set and if a +// deep link is found. + (GPPDeepLink *)readDeepLinkAfterInstall; // This method should be called from your |UIApplicationDelegate|'s // |application:openURL:sourceApplication:annotation|. Returns // |GooglePlusDeepLink| if |GooglePlusDeepLink| handled this URL, |nil| -// otherwise. +// otherwise. The delegate will be called if set and if a deep link is found. +// Also see |handleURL:sourceApplication:annotation:| in |GPPURLHandler|. + (GPPDeepLink *)handleURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation; @@ -31,9 +50,10 @@ // The deep-link ID in |GPPDeepLink| that was passed to the app. - (NSString *)deepLinkID; -// This indicates where the user came from before arriving in your app. This is -// provided for you to collect engagement metrics. For the possible values, -// see our developer docs at http://developers.google.com/+/mobile/ios/. +// This instance method indicates where the user came from before arriving in +// your app. This method is provided for you to collect engagement metrics. +// For the possible values, see +// http://developers.google.com/+/mobile/ios/source-values . - (NSString *)source; @end diff --git a/External/google-plus-ios-sdk/lib/GPPShare.h b/External/google-plus-ios-sdk/lib/GPPShare.h index 37f2fca9..e2c35321 100644 --- a/External/google-plus-ios-sdk/lib/GPPShare.h +++ b/External/google-plus-ios-sdk/lib/GPPShare.h @@ -4,39 +4,41 @@ // // Copyright 2012 Google Inc. // -// Usage of this SDK is subject to the Google+ Platform Terms of Service: +// Use of this SDK is subject to the Google+ Platform Terms of Service: // https://developers.google.com/+/terms // // To allow a user to share with Google+, please follow these steps: // -// 0. Create a project on Google APIs console, +// 0. Create a project on Google API console, // https://code.google.com/apis/console . Under "API Access", create a // client ID as "Installed application" with the type "iOS", and -// register the bundle ID of your application. +// register the bundle ID of your app. // -// 1. Initialize a GPPShare instance with your registered client ID: +// 1. Initialize the |GPPSignIn| instance with your registered client ID, +// and get the |GPPShare| instance. // -// GPPShare *gppShare = [[GPPShare alloc] initWithClientID:myClientID]; +// [[GPPSignIn shareInstance] setClientID:myClientID]; +// GPPShare *gppShare = [GPPShare sharedInstance]; // -// 2. In the code where the share dialog is to be opened: +// 2. In the code where the share dialog will be opened, // // [[gppShare shareDialog] open]; // -// You may optionally call |setURLToShare:| and/or |setPrefillText:| before -// calling |open|, if there is a particular URL resource to be shared, or -// you want to set text to prefill user comment in the share dialog, e.g. +// you can optionally call any of the |GPPShareBuilder| methods before +// calling |open|, for example, if there is a particular URL resource to be +// shared, or if you want to set text to prefill user comment in the share +// dialog, such as: // // NSURL *urlToShare = [NSURL URLWithString:@"http://www.google.com/"]; // NSString *prefillText = @"You probably already know this site..."; // [[[[gppShare shareDialog] setURLToShare:urlToShare] // setPrefillText:prefillText] open]; // -// 3. In the 'YourApp-info.plist' settings for your application, add a URL -// type to be handled by your application. Make the URL scheme the same as -// the bundle ID of your application. +// 3. In the '-info.plist' settings for your app, add a URL type to be +// handled by your app. Make the URL scheme the same as your app bundle ID. // -// 4. In your application delegate, implement +// 4. In your application delegate, implement: // - (BOOL)application:(NSString*)application // openURL:(NSURL *)url // sourceApplication:(NSString*)sourceApplication @@ -50,7 +52,7 @@ // } // // 5. Optionally, if you want to be notified of the result of the share action, -// have a delegate class implement |GPPShareDelegate|, e.g. +// have a delegate class implement |GPPShareDelegate|, for example: // // @interface MyDelegateClass : NSObject; // @@ -63,28 +65,32 @@ #import -// Protocol to receive the result of the share action. +@class GPPSignIn; + +// The protocol to receive the result of the share action. @protocol GPPShareDelegate // Reports the status of the share action, |shared| is |YES| if user has -// successfully shared her post, |NO| otherwise, e.g. user canceled the post. +// successfully shared her post, |NO| otherwise, such as if the user canceled +// the post. - (void)finishedSharing:(BOOL)shared; @end // The builder protocol to open the share dialog. +// For more information on sharing, see +// http://developers.google.com/+/mobile/ios/share . @protocol GPPShareBuilder // Sets the URL resource to be shared. - (id)setURLToShare:(NSURL *)urlToShare; -// Sets the text to prefill user comment in the share dialog. +// Sets the text to prefill user's comment in the share dialog. - (id)setPrefillText:(NSString *)prefillText; // Sets the title, description, and thumbnail URL of the shared content preview // in the share dialog. Only set these fields if you are sharing with a content -// deep link and don't have a URL resource. Title and description are required -// fields. +// deep link and don't have a URL resource. |title| is required. - (id)setTitle:(NSString *)title description:(NSString *)description thumbnailURL:(NSURL *)thumbnailURL; @@ -92,24 +98,46 @@ // Sets the content deep-link ID that takes the user straight to your shared // content. Only set this field if you want the content deep-linking feature. // The content deep-link ID can either be a fully qualified URI, or URI path, -// which can be up to 64 characters in length. +// which can be up to 512 characters in length. - (id)setContentDeepLinkID:(NSString *)contentDeepLinkID; +// Sets the call-to-action button of the shared content preview. +// The call-to-action button consists of a label, URL, and deep-link ID. +// The |label| is a string key defined under "data-calltoactionlabel" on +// http://developers.google.com/+/web/share/interactive#button_attr_calltoactionlabel +// that maps to the actual button text. +// You must set either the |url| or |deepLinkID|, or both. +// The |url| is where the user is taken to after tapping on the button. +// The |deepLinkID| is the call-to-action deep-link ID that takes the user +// straight to a specific action in your app. It can either be a fully qualified +// URI, or URI path, which can be up to 512 characters in length. +// Note: In order to set the call-to-action button: +// 1. User must have been authenticated with scopes including +// "https://www.googleapis.com/auth/plus.login". +// 2. Either |setURLToShare:| or |setTitle:description:thumbnailURL:| must also +// be called. +- (id)setCallToActionButtonWithLabel:(NSString *)label + URL:(NSURL *)url + deepLinkID:(NSString *)deepLinkID; + // Opens the share dialog. Returns |NO| if there was an error, |YES| otherwise. - (BOOL)open; @end // The primary class for the share action on Google+. +// For more information on sharing, see +// http://developers.google.com/+/mobile/ios/share . @interface GPPShare : NSObject // The object to be notified when the share action has finished. @property (nonatomic, assign) id delegate; -// All Google+ objects must be initialized with a client ID registered -// in the Google APIs console, https://code.google.com/apis/console/ -// with their corresponding bundle ID before they can be used. -- (id)initWithClientID:(NSString *)clientID; +// Returns a shared |GPPShare| instance. +// |[GPPSignIn sharedInstance].clientID| must be initialized with a client ID +// registered in the Google API console, https://code.google.com/apis/console/ +// with the app's bundle ID. ++ (GPPShare *)sharedInstance; // Returns a share dialog builder instance. Call its |open| method to // create the dialog after setting the parameters as needed. @@ -118,6 +146,7 @@ // This method should be called from your |UIApplicationDelegate|'s // |application:openURL:sourceApplication:annotation|. Returns |YES| if // |GPPShare| handled this URL. +// Also see |handleURL:sourceApplication:annotation:| in |GPPURLHandler|. - (BOOL)handleURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation; diff --git a/External/google-plus-ios-sdk/lib/GPPSignIn.h b/External/google-plus-ios-sdk/lib/GPPSignIn.h index 10507e6f..391df12b 100644 --- a/External/google-plus-ios-sdk/lib/GPPSignIn.h +++ b/External/google-plus-ios-sdk/lib/GPPSignIn.h @@ -4,7 +4,7 @@ // // Copyright 2012 Google Inc. // -// Usage of this SDK is subject to the Google+ Platform Terms of Service: +// Use of this SDK is subject to the Google+ Platform Terms of Service: // https://developers.google.com/+/terms // @@ -13,54 +13,127 @@ @class GTMOAuth2Authentication; @class GTMOAuth2ViewControllerTouch; -// Protocol implemented by the client of GPPSignIn to receive a refresh -// token or an error. It is up to the client to present the OAuth 2.0 view -// controller if single sign-on is disabled via |attemptSSO| in |authenticate|. +// A protocol implemented by the client of |GPPSignIn| to receive a refresh +// token or an error. @protocol GPPSignInDelegate -// Authorization has finished and is successful if |error| is |nil|. +// The authorization has finished and is successful if |error| is |nil|. - (void)finishedWithAuth:(GTMOAuth2Authentication *)auth error:(NSError *)error; +// Finished disconnecting user from the app. +// The operation was successful if |error| is |nil|. +@optional +- (void)didDisconnectWithError:(NSError *)error; + @end -// |GPPSignIn| signs the user in with Google+. It provides single sign-on -// via the Google+ app, if installed, or Mobile Safari. -// Here is sample code to use GPPSignIn: -// 1) GPPSignIn *signIn = -// [[GPPSignIn alloc] initForClientID:clientID -// language:@"en" -// scope:@"https://www.googleapis.com/auth/plus.me" -// keychainName:nil]; -// [signIn setDelegate:self]; -// 2) Setup delegate methods |finishedWithAuth|, etc. -// 3) Call |handleURL| from |application:openUrl:...| in your app delegate. -// 4) [auth authenticate:YES]; +// This class signs the user in with Google. It provides single sign-on +// via the Google+ app (if installed), Chrome for iOS (if installed), or Mobile +// Safari. +// +// For reference, please see "Google+ Sign-In for iOS" at +// https://developers.google.com/+/mobile/ios/sign-in . +// Here is sample code to use |GPPSignIn|: +// 1) Get a reference to the |GPPSignIn| shared instance: +// GPPSignIn *signIn = [GPPSignIn sharedInstance]; +// 2) Set the OAuth 2.0 scopes you want to request: +// [signIn setScopes:[NSArray arrayWithObject: +// @"https://www.googleapis.com/auth/plus.login"]]; +// 2) Call [signIn setDelegate:self]; +// 3) Set up delegate method |finishedWithAuth:error:|. +// 4) Call |handleURL| on the shared instance from |application:openUrl:...| +// in your app delegate. +// 5) Call [signIn authenticate]; @interface GPPSignIn : NSObject +// The authentication object for the current user, or |nil| if there is +// currently no logged in user. +@property (nonatomic, readonly) GTMOAuth2Authentication *authentication; + +// The Google user ID. It is only available if |shouldFetchGoogleUserID| is set +// and either |trySilentAuthentication| or |authenticate| has been completed +// successfully. +@property (nonatomic, readonly) NSString *userID; + +// The Google user's email. It is only available if |shouldFetchGoogleUserEmail| +// is set and either |trySilentAuthentication| or |authenticate| has been +// completed successfully. +@property (nonatomic, readonly) NSString *userEmail; + // The object to be notified when authentication is finished. @property (nonatomic, assign) id delegate; +// All properties below are optional parameters. If they need to be set, set +// before calling |authenticate|. + +// The client ID of the app from the Google APIs console. +// Must set for sign-in to work. +@property (nonatomic, copy) NSString *clientID; + +// The API scopes requested by the app in an array of |NSString|s. +// The default value is |@[@"https://www.googleapis.com/auth/plus.login"]|. +@property (nonatomic, copy) NSArray *scopes; + +// Whether or not to attempt Single-Sign-On when signing in. +// If |attemptSSO| is true, the sign-in button tries to authenticate with the +// Google+ application if it is installed. If false, it always uses Google+ via +// Chrome for iOS, if installed, or Mobile Safari for authentication. +// The default value is |YES|. +@property (nonatomic, assign) BOOL attemptSSO; + +// The language for sign-in, in the form of ISO 639-1 language code +// optionally followed by a dash and ISO 3166-1 alpha-2 region code, +// such as |@"it"| or |@"pt-PT"|. +// Only set if different from system default. +@property (nonatomic, copy) NSString *language; + +// Name of the keychain to save the sign-in state. +// Only set if a custom name needs to be used. +@property (nonatomic, copy) NSString *keychainName; + +// An |NSString| array of moment types used by your app. Use values from the +// full list at +// https://developers.google.com/+/api/moment-types . +// such as "http://schemas.google.com/AddActivity". +// This property is required only for writing moments, with +// "https://www.googleapis.com/auth/plus.login" as a scope. +@property (nonatomic, copy) NSArray *actions; + // Whether or not to fetch user email after signing in. The email is saved in -// the |GTMOAuth2Authentication| object. +// the |GTMOAuth2Authentication| object. Note that using this flag automatically +// adds "https://www.googleapis.com/auth/userinfo.email" scope to the request. @property (nonatomic, assign) BOOL shouldFetchGoogleUserEmail; -// Initializes with your |clientID| from the Google APIs console. Set |scope| to -// an array of your API scopes. Set |keychainName| to |nil| to use the default -// name. -- (id)initWithClientID:(NSString *)clientID - language:(NSString *)language - scope:(NSArray *)scope - keychainName:(NSString *)keychainName; +// Whether or not to fetch user ID after signing in. The ID can be retrieved +// by |googleUserID| after user has been authenticated. +// Note, a scope, such as "https://www.googleapis.com/auth/plus.login" or +// "https://www.googleapis.com/auth/plus.me", that provides user ID must be +// included in |scopes| for this flag to work. +@property (nonatomic, assign) BOOL shouldFetchGoogleUserID; + +// Returns a shared |GPPSignIn| instance. ++ (GPPSignIn *)sharedInstance; + +// Checks whether the user has either currently signed in or has previous +// authentication saved in keychain. +- (BOOL)hasAuthInKeychain; + +// Attempts to authenticate silently without user interaction. +// Returns |YES| and calls the delegate if the user has either currently signed +// in or has previous authentication saved in keychain. +- (BOOL)trySilentAuthentication; // Starts the authentication process. Set |attemptSSO| to try single sign-on. -// Set |clearKeychain| to remove previously stored authentication in the -// keychain. -- (void)authenticate:(BOOL)attemptSSO clearKeychain:(BOOL)clearKeychain; +// If |attemptSSO| is true, try to authenticate with the Google+ app, if +// installed. If false, always use Google+ via Chrome or Mobile Safari for +// authentication. The delegate will be called at the end of this process. +- (void)authenticate; // This method should be called from your |UIApplicationDelegate|'s // |application:openURL:sourceApplication:annotation|. Returns |YES| if // |GPPSignIn| handled this URL. +// Also see |handleURL:sourceApplication:annotation:| in |GPPURLHandler|. - (BOOL)handleURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation; @@ -68,4 +141,10 @@ // Removes the OAuth 2.0 token from the keychain. - (void)signOut; +// Disconnects the user from the app and revokes previous authentication. +// If the operation succeeds, the OAuth 2.0 token is also removed from keychain. +// The token is needed to disconnect so do not call |signOut| if |disconnect| is +// to be called. +- (void)disconnect; + @end diff --git a/External/google-plus-ios-sdk/lib/GPPSignInButton.h b/External/google-plus-ios-sdk/lib/GPPSignInButton.h index aa2719e2..ea263f8d 100644 --- a/External/google-plus-ios-sdk/lib/GPPSignInButton.h +++ b/External/google-plus-ios-sdk/lib/GPPSignInButton.h @@ -4,53 +4,41 @@ // // Copyright 2012 Google Inc. // -// Usage of this SDK is subject to the Google+ Platform Terms of Service: +// Use of this SDK is subject to the Google+ Platform Terms of Service: // https://developers.google.com/+/terms // #import -@class GPPSignIn; -@protocol GPPSignInDelegate; - -// The various visual styles supported by the GPPSignInButton. +// The various layout styles supported by the GPPSignInButton. +// The minmum size of the button depends on the language used for text. +// The following dimensions (in points) fit for all languages: +// kGPPSignInButtonStyleStandard: 226 x 48 +// kGPPSignInButtonStyleWide: 308 x 48 +// kGPPSignInButtonStyleIconOnly: 46 x 48 (no text, fixed size) typedef enum { - kGPPSignInButtonStyleNormal, - kGPPSignInButtonStyleWide + kGPPSignInButtonStyleStandard = 0, + kGPPSignInButtonStyleWide = 1, + kGPPSignInButtonStyleIconOnly = 2 } GPPSignInButtonStyle; -// A view that displays the Google+ sign-in button. You can instantiate this -// class programmatically or from a NIB file. Once instantiated, you should -// set the client ID and delegate properties and add this view to your own view -// hierarchy. -@interface GPPSignInButton : UIView +// The various color schemes supported by the GPPSignInButton. +typedef enum { + kGPPSignInButtonColorSchemeDark = 0, + kGPPSignInButtonColorSchemeLight = 1 +} GPPSignInButtonColorScheme; -// The OAuth 2.0 client ID of the application. -@property(nonatomic, copy) NSString *clientID; +// This class provides the Google+ sign-in button. You can instantiate this +// class programmatically or from a NIB file. You should set up the +// |GPPSignIn| shared instance with your client ID and any additional scopes, +// implement the delegate methods for |GPPSignIn|, and add this button to your +// view hierarchy. +@interface GPPSignInButton : UIButton -// See GPPSignIn.h for details on this delegate. -@property(nonatomic, assign) id delegate; - -// Actually does the work of signing in with Google+. -@property(nonatomic, readonly) GPPSignIn *googlePlusSignIn; - -// The OAuth 2.0 scopes for the APIs that you are using. This is used to fetch -// an OAuth 2.0 token. By default, this is set to the -// https://www.googleapis.com/auth/plus.me scope. -@property(nonatomic, copy) NSArray *scope; - -// Whether or not to fetch user email after signing in. The email is saved in -// the |GTMOAuth2Authentication| object. -@property (nonatomic, assign) BOOL shouldFetchGoogleUserEmail; - -// Sets the sign-in button. The default style is normal. +// Sets the sign-in button layout style. The default style is standard. - (void)setStyle:(GPPSignInButtonStyle)style; -// This method should be called from your |UIApplicationDelegate|'s -// |application:openURL:sourceApplication:annotation|. Returns |YES| if -// |GPPSignInButton| handled this URL. -- (BOOL)handleURL:(NSURL *)url - sourceApplication:(NSString *)sourceApplication - annotation:(id)annotation; +// Sets the sign-in button color scheme. The default scheme is dark. +- (void)setColorScheme:(GPPSignInButtonColorScheme)colorScheme; @end diff --git a/External/google-plus-ios-sdk/lib/GPPURLHandler.h b/External/google-plus-ios-sdk/lib/GPPURLHandler.h new file mode 100644 index 00000000..0e45390f --- /dev/null +++ b/External/google-plus-ios-sdk/lib/GPPURLHandler.h @@ -0,0 +1,25 @@ +// +// GPPURLHandler.h +// Google+ iOS SDK +// +// Copyright 2013 Google Inc. +// +// Use of this SDK is subject to the Google+ Platform Terms of Service: +// https://developers.google.com/+/terms +// + +#import + +@interface GPPURLHandler : NSObject + +// Calls |handleURL:sourceApplication:annotation:| for +// |[GPPSignIn sharedInstance]|, |[GPPShare sharedInstance]|, and +// |GPPDeepLink|, and returns |YES| if any of them handles the URL. +// This method can be called from your |UIApplicationDelegate|'s +// |application:openURL:sourceApplication:annotation| instead of calling +// those methods individually. ++ (BOOL)handleURL:(NSURL *)url + sourceApplication:(NSString *)sourceApplication + annotation:(id)annotation; + +@end diff --git a/External/google-plus-ios-sdk/lib/libGooglePlus.a b/External/google-plus-ios-sdk/lib/libGooglePlus.a index f4ebc720..0f66be83 100644 Binary files a/External/google-plus-ios-sdk/lib/libGooglePlus.a and b/External/google-plus-ios-sdk/lib/libGooglePlus.a differ diff --git a/External/google-plus-ios-sdk/lib/libGooglePlusUniversal.a b/External/google-plus-ios-sdk/lib/libGooglePlusUniversal.a index f6f5ab81..1bcdf91f 100644 Binary files a/External/google-plus-ios-sdk/lib/libGooglePlusUniversal.a and b/External/google-plus-ios-sdk/lib/libGooglePlusUniversal.a differ diff --git a/MasterPassword/ObjC/iOS/MPUnlockViewController.m b/MasterPassword/ObjC/iOS/MPUnlockViewController.m index a0f18a62..13f576c9 100644 --- a/MasterPassword/ObjC/iOS/MPUnlockViewController.m +++ b/MasterPassword/ObjC/iOS/MPUnlockViewController.m @@ -14,6 +14,8 @@ #import "MPAppDelegate_Key.h" #import "MPAppDelegate_Store.h" +#import "GPPSignIn.h" + @interface MPUnlockViewController() @property(strong, nonatomic) NSMutableDictionary *avatarToUserOID; @@ -1046,7 +1048,7 @@ - (IBAction)google:(UIButton *)sender { - id shareDialog = [[MPiOSAppDelegate get].googlePlus shareDialog]; + id shareDialog = [[GPPShare sharedInstance] shareDialog]; [[[shareDialog setURLToShare:[NSURL URLWithString:@"http://masterpasswordapp.com"]] setPrefillText:@"I've started doing passwords properly thanks to Master Password."] open]; } diff --git a/MasterPassword/ObjC/iOS/MPiOSAppDelegate.h b/MasterPassword/ObjC/iOS/MPiOSAppDelegate.h index 081df61d..785eeb38 100644 --- a/MasterPassword/ObjC/iOS/MPiOSAppDelegate.h +++ b/MasterPassword/ObjC/iOS/MPiOSAppDelegate.h @@ -14,8 +14,6 @@ @interface MPiOSAppDelegate : MPAppDelegate_Shared -@property(nonatomic, readonly) GPPShare *googlePlus; - - (void)showGuide; - (void)showSetup; - (void)showFeedbackWithLogs:(BOOL)logs forVC:(UIViewController *)viewController; diff --git a/MasterPassword/ObjC/iOS/MPiOSAppDelegate.m b/MasterPassword/ObjC/iOS/MPiOSAppDelegate.m index bf5ee418..228d36c7 100644 --- a/MasterPassword/ObjC/iOS/MPiOSAppDelegate.m +++ b/MasterPassword/ObjC/iOS/MPiOSAppDelegate.m @@ -9,15 +9,8 @@ #import "MPiOSAppDelegate.h" #import "MPAppDelegate_Key.h" #import "MPAppDelegate_Store.h" - #import "IASKSettingsReader.h" -#import "LocalyticsAmpSession.h" - -@interface MPiOSAppDelegate() - -@property(nonatomic, readwrite) GPPShare *googlePlus; - -@end +#import "GPPSignIn.h" @implementation MPiOSAppDelegate @@ -75,7 +68,7 @@ NSString *googlePlusClientID = [self googlePlusClientID]; if ([googlePlusClientID length]) { inf(@"Initializing Google+"); - self.googlePlus = [[GPPShare alloc] initWithClientID:googlePlusClientID]; + [[GPPSignIn sharedInstance] setClientID:googlePlusClientID]; } } @catch (id exception) { @@ -279,11 +272,7 @@ return NO; // Google+ - if ([self.googlePlus handleURL:url sourceApplication:sourceApplication annotation:annotation]) - return YES; - - // Localytics - if ([[LocalyticsAmpSession shared] handleURL:url]) + if ([[GPPSignIn sharedInstance] handleURL:url sourceApplication:sourceApplication annotation:annotation]) return YES; // Arbitrary URL to mpsites data. diff --git a/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj b/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj index c8c79b28..401743a9 100644 --- a/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj +++ b/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj @@ -774,38 +774,6 @@ DACA22161705DE13002C6C22 /* UIFont+Replacement.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22141705DE13002C6C22 /* UIFont+Replacement.m */; }; DACA22171705DE13002C6C22 /* UIFont+Replacement.h in Headers */ = {isa = PBXBuildFile; fileRef = DACA22151705DE13002C6C22 /* UIFont+Replacement.h */; }; DACA22191705DE28002C6C22 /* Crashlytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DACA22181705DE28002C6C22 /* Crashlytics.framework */; }; - DACA228D1705DE46002C6C22 /* libGooglePlus.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DACA22201705DE46002C6C22 /* libGooglePlus.a */; }; - DACA228E1705DE46002C6C22 /* libGooglePlusUniversal.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DACA22211705DE46002C6C22 /* libGooglePlusUniversal.a */; }; - DACA228F1705DE46002C6C22 /* GTMHTTPFetcherService.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22271705DE46002C6C22 /* GTMHTTPFetcherService.m */; }; - DACA22901705DE46002C6C22 /* GTMMethodCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22281705DE46002C6C22 /* GTMMethodCheck.m */; }; - DACA22911705DE46002C6C22 /* GTMOAuth2SignIn.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA222C1705DE46002C6C22 /* GTMOAuth2SignIn.m */; }; - DACA22921705DE46002C6C22 /* GTLUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22301705DE46002C6C22 /* GTLUtilities.m */; }; - DACA22931705DE46002C6C22 /* GTLErrorObject.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22321705DE46002C6C22 /* GTLErrorObject.m */; }; - DACA22941705DE46002C6C22 /* GTLRuntimeCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22331705DE46002C6C22 /* GTLRuntimeCommon.m */; }; - DACA22951705DE46002C6C22 /* GTLService.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22341705DE46002C6C22 /* GTLService.m */; }; - DACA22961705DE46002C6C22 /* GTLUploadParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22361705DE46002C6C22 /* GTLUploadParameters.m */; }; - DACA22971705DE46002C6C22 /* GTLFramework.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA223B1705DE46002C6C22 /* GTLFramework.m */; }; - DACA22981705DE46002C6C22 /* GTLBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA223C1705DE46002C6C22 /* GTLBase64.m */; }; - DACA22991705DE46002C6C22 /* GTLBatchResult.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA223F1705DE46002C6C22 /* GTLBatchResult.m */; }; - DACA229A1705DE46002C6C22 /* GTLJSONParser.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22401705DE46002C6C22 /* GTLJSONParser.m */; }; - DACA229B1705DE46002C6C22 /* GTLObject.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22411705DE46002C6C22 /* GTLObject.m */; }; - DACA229C1705DE46002C6C22 /* GTLBatchQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22421705DE46002C6C22 /* GTLBatchQuery.m */; }; - DACA229D1705DE46002C6C22 /* GTLQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22461705DE46002C6C22 /* GTLQuery.m */; }; - DACA229E1705DE46002C6C22 /* GTLDateTime.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22471705DE46002C6C22 /* GTLDateTime.m */; }; - DACA229F1705DE46002C6C22 /* GTLPlusMoment.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22491705DE46002C6C22 /* GTLPlusMoment.m */; }; - DACA22A01705DE46002C6C22 /* GTLPlusItemScope.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA224A1705DE46002C6C22 /* GTLPlusItemScope.m */; }; - DACA22A11705DE46002C6C22 /* GTLQueryPlus.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA224C1705DE46002C6C22 /* GTLQueryPlus.m */; }; - DACA22A21705DE46002C6C22 /* GTLPlusConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA224D1705DE46002C6C22 /* GTLPlusConstants.m */; }; - DACA22A31705DE46002C6C22 /* GTLServicePlus.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22511705DE46002C6C22 /* GTLServicePlus.m */; }; - DACA22A41705DE46002C6C22 /* GTMNSString+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22571705DE46002C6C22 /* GTMNSString+URLArguments.m */; }; - DACA22A51705DE46002C6C22 /* GTMNSDictionary+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22581705DE46002C6C22 /* GTMNSDictionary+URLArguments.m */; }; - DACA22A61705DE46002C6C22 /* GTMLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA225A1705DE46002C6C22 /* GTMLogger.m */; }; - DACA22A71705DE46002C6C22 /* GTMHTTPFetchHistory.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA225C1705DE46002C6C22 /* GTMHTTPFetchHistory.m */; }; - DACA22A81705DE46002C6C22 /* GTMObjC2Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA225F1705DE46002C6C22 /* GTMObjC2Runtime.m */; }; - DACA22A91705DE46002C6C22 /* GTMHTTPFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22601705DE46002C6C22 /* GTMHTTPFetcher.m */; }; - DACA22AA1705DE46002C6C22 /* GTMOAuth2Authentication.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22641705DE46002C6C22 /* GTMOAuth2Authentication.m */; }; - DACA22AB1705DE46002C6C22 /* GTMHTTPFetcherLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22661705DE46002C6C22 /* GTMHTTPFetcherLogging.m */; }; - DACA22AC1705DE46002C6C22 /* GTMOAuth2ViewControllerTouch.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22681705DE46002C6C22 /* GTMOAuth2ViewControllerTouch.m */; }; DACA22BB1705DE7D002C6C22 /* UbiquityStoreManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22B71705DE7D002C6C22 /* UbiquityStoreManager.m */; }; DACA22BC1705DE7D002C6C22 /* NSError+UbiquityStoreManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DACA22B81705DE7D002C6C22 /* NSError+UbiquityStoreManager.h */; }; DACA22BD1705DE7D002C6C22 /* NSError+UbiquityStoreManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22B91705DE7D002C6C22 /* NSError+UbiquityStoreManager.m */; }; @@ -845,15 +813,54 @@ DAFC5691172C582A00CB5CC5 /* libInAppSettingsKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAFC5655172C573B00CB5CC5 /* libInAppSettingsKit.a */; }; DAFC56A2172C6E8500CB5CC5 /* LocalyticsDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = DAFC569A172C6E8500CB5CC5 /* LocalyticsDatabase.h */; }; DAFC56A3172C6E8500CB5CC5 /* LocalyticsDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC569B172C6E8500CB5CC5 /* LocalyticsDatabase.m */; }; - DAFC56A4172C6E8500CB5CC5 /* LocalyticsDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC569B172C6E8500CB5CC5 /* LocalyticsDatabase.m */; }; DAFC56A5172C6E8500CB5CC5 /* LocalyticsSession.h in Headers */ = {isa = PBXBuildFile; fileRef = DAFC569C172C6E8500CB5CC5 /* LocalyticsSession.h */; }; DAFC56A6172C6E8500CB5CC5 /* LocalyticsSession.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC569D172C6E8500CB5CC5 /* LocalyticsSession.m */; }; - DAFC56A7172C6E8500CB5CC5 /* LocalyticsSession.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC569D172C6E8500CB5CC5 /* LocalyticsSession.m */; }; DAFC56A8172C6E8500CB5CC5 /* LocalyticsSession+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAFC569E172C6E8500CB5CC5 /* LocalyticsSession+Private.h */; }; DAFC56A9172C6E8500CB5CC5 /* LocalyticsUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = DAFC569F172C6E8500CB5CC5 /* LocalyticsUploader.h */; }; DAFC56AA172C6E8500CB5CC5 /* LocalyticsUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56A0172C6E8500CB5CC5 /* LocalyticsUploader.m */; }; - DAFC56AB172C6E8500CB5CC5 /* LocalyticsUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56A0172C6E8500CB5CC5 /* LocalyticsUploader.m */; }; DAFC56AC172C6E8500CB5CC5 /* WebserviceConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = DAFC56A1172C6E8500CB5CC5 /* WebserviceConstants.h */; }; + DAFC5779172C705D00CB5CC5 /* libGooglePlus.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAFC56B3172C705C00CB5CC5 /* libGooglePlus.a */; }; + DAFC577A172C705D00CB5CC5 /* libGooglePlusUniversal.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAFC56B4172C705C00CB5CC5 /* libGooglePlusUniversal.a */; }; + DAFC577B172C705D00CB5CC5 /* GTLBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56B8172C705C00CB5CC5 /* GTLBase64.m */; }; + DAFC577C172C705D00CB5CC5 /* GTLBatchQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56BA172C705C00CB5CC5 /* GTLBatchQuery.m */; }; + DAFC577D172C705D00CB5CC5 /* GTLBatchResult.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56BC172C705C00CB5CC5 /* GTLBatchResult.m */; }; + DAFC577E172C705D00CB5CC5 /* GTLDateTime.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56BE172C705C00CB5CC5 /* GTLDateTime.m */; }; + DAFC577F172C705D00CB5CC5 /* GTLErrorObject.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56C1172C705C00CB5CC5 /* GTLErrorObject.m */; }; + DAFC5780172C705D00CB5CC5 /* GTLFramework.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56C3172C705C00CB5CC5 /* GTLFramework.m */; }; + DAFC5781172C705D00CB5CC5 /* GTLJSONParser.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56C5172C705C00CB5CC5 /* GTLJSONParser.m */; }; + DAFC5782172C705D00CB5CC5 /* GTLObject.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56C7172C705C00CB5CC5 /* GTLObject.m */; }; + DAFC5783172C705D00CB5CC5 /* GTLPlusAcl.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56CB172C705C00CB5CC5 /* GTLPlusAcl.m */; }; + DAFC5784172C705D00CB5CC5 /* GTLPlusAclentryResource.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56CD172C705C00CB5CC5 /* GTLPlusAclentryResource.m */; }; + DAFC5785172C705D00CB5CC5 /* GTLPlusActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56CF172C705C00CB5CC5 /* GTLPlusActivity.m */; }; + DAFC5786172C705D00CB5CC5 /* GTLPlusActivityFeed.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56D1172C705C00CB5CC5 /* GTLPlusActivityFeed.m */; }; + DAFC5787172C705D00CB5CC5 /* GTLPlusComment.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56D3172C705C00CB5CC5 /* GTLPlusComment.m */; }; + DAFC5788172C705D00CB5CC5 /* GTLPlusCommentFeed.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56D5172C705C00CB5CC5 /* GTLPlusCommentFeed.m */; }; + DAFC5789172C705D00CB5CC5 /* GTLPlusConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56D7172C705C00CB5CC5 /* GTLPlusConstants.m */; }; + DAFC578A172C705D00CB5CC5 /* GTLPlusItemScope.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56D9172C705C00CB5CC5 /* GTLPlusItemScope.m */; }; + DAFC578B172C705D00CB5CC5 /* GTLPlusMoment.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56DB172C705C00CB5CC5 /* GTLPlusMoment.m */; }; + DAFC578C172C705D00CB5CC5 /* GTLPlusMomentsFeed.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56DD172C705C00CB5CC5 /* GTLPlusMomentsFeed.m */; }; + DAFC578D172C705D00CB5CC5 /* GTLPlusPeopleFeed.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56DF172C705C00CB5CC5 /* GTLPlusPeopleFeed.m */; }; + DAFC578E172C705D00CB5CC5 /* GTLPlusPerson.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56E1172C705C00CB5CC5 /* GTLPlusPerson.m */; }; + DAFC578F172C705D00CB5CC5 /* GTLQueryPlus.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56E3172C705C00CB5CC5 /* GTLQueryPlus.m */; }; + DAFC5790172C705D00CB5CC5 /* GTLServicePlus.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56E5172C705C00CB5CC5 /* GTLServicePlus.m */; }; + DAFC5791172C705D00CB5CC5 /* GTLQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56E7172C705C00CB5CC5 /* GTLQuery.m */; }; + DAFC5792172C705D00CB5CC5 /* GTLRuntimeCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56E9172C705C00CB5CC5 /* GTLRuntimeCommon.m */; }; + DAFC5793172C705D00CB5CC5 /* GTLService.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56EB172C705C00CB5CC5 /* GTLService.m */; }; + DAFC5794172C705D00CB5CC5 /* GTLUploadParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56EE172C705C00CB5CC5 /* GTLUploadParameters.m */; }; + DAFC5795172C705D00CB5CC5 /* GTLUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56F0172C705C00CB5CC5 /* GTLUtilities.m */; }; + DAFC5796172C705D00CB5CC5 /* GTMHTTPFetchHistory.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56F4172C705C00CB5CC5 /* GTMHTTPFetchHistory.m */; }; + DAFC5797172C705D00CB5CC5 /* GTMHTTPFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56F6172C705C00CB5CC5 /* GTMHTTPFetcher.m */; }; + DAFC5798172C705D00CB5CC5 /* GTMHTTPFetcherLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56F8172C705C00CB5CC5 /* GTMHTTPFetcherLogging.m */; }; + DAFC5799172C705D00CB5CC5 /* GTMHTTPFetcherService.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56FA172C705C00CB5CC5 /* GTMHTTPFetcherService.m */; }; + DAFC579A172C705D00CB5CC5 /* GTMLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56FC172C705C00CB5CC5 /* GTMLogger.m */; }; + DAFC579B172C705D00CB5CC5 /* GTMMethodCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC56FE172C705C00CB5CC5 /* GTMMethodCheck.m */; }; + DAFC579C172C705D00CB5CC5 /* GTMNSDictionary+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC5700172C705C00CB5CC5 /* GTMNSDictionary+URLArguments.m */; }; + DAFC579D172C705D00CB5CC5 /* GTMNSString+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC5702172C705C00CB5CC5 /* GTMNSString+URLArguments.m */; }; + DAFC579E172C705D00CB5CC5 /* GTMOAuth2Authentication.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC5704172C705C00CB5CC5 /* GTMOAuth2Authentication.m */; }; + DAFC579F172C705D00CB5CC5 /* GTMOAuth2SignIn.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC5706172C705C00CB5CC5 /* GTMOAuth2SignIn.m */; }; + DAFC57A0172C705D00CB5CC5 /* GTMOAuth2ViewControllerTouch.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC5708172C705C00CB5CC5 /* GTMOAuth2ViewControllerTouch.m */; }; + DAFC57A1172C705D00CB5CC5 /* GTMObjC2Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC570B172C705C00CB5CC5 /* GTMObjC2Runtime.m */; }; + DAFC57A2172C705D00CB5CC5 /* OpenInChromeController.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFC570D172C705C00CB5CC5 /* OpenInChromeController.m */; }; DAFE4A1315039824003ABA7C /* NSObject+PearlExport.h in Headers */ = {isa = PBXBuildFile; fileRef = DAFE45D815039823003ABA7C /* NSObject+PearlExport.h */; }; DAFE4A1415039824003ABA7C /* NSObject+PearlExport.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFE45D915039823003ABA7C /* NSObject+PearlExport.m */; }; DAFE4A1515039824003ABA7C /* NSString+PearlNSArrayFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = DAFE45DA15039823003ABA7C /* NSString+PearlNSArrayFormat.h */; }; @@ -1756,86 +1763,6 @@ DACA22141705DE13002C6C22 /* UIFont+Replacement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIFont+Replacement.m"; sourceTree = ""; }; DACA22151705DE13002C6C22 /* UIFont+Replacement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIFont+Replacement.h"; sourceTree = ""; }; DACA22181705DE28002C6C22 /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Crashlytics.framework; sourceTree = ""; }; - DACA221C1705DE46002C6C22 /* GPPShare.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPPShare.h; sourceTree = ""; }; - DACA221D1705DE46002C6C22 /* GPPSignInButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPPSignInButton.h; sourceTree = ""; }; - DACA221E1705DE46002C6C22 /* GPPDeepLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPPDeepLink.h; sourceTree = ""; }; - DACA221F1705DE46002C6C22 /* GPPSignIn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPPSignIn.h; sourceTree = ""; }; - DACA22201705DE46002C6C22 /* libGooglePlus.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libGooglePlus.a; sourceTree = ""; }; - DACA22211705DE46002C6C22 /* libGooglePlusUniversal.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libGooglePlusUniversal.a; sourceTree = ""; }; - DACA22251705DE46002C6C22 /* GTMGarbageCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMGarbageCollection.h; sourceTree = ""; }; - DACA22261705DE46002C6C22 /* GTMOAuth2Authentication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMOAuth2Authentication.h; sourceTree = ""; }; - DACA22271705DE46002C6C22 /* GTMHTTPFetcherService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMHTTPFetcherService.m; sourceTree = ""; }; - DACA22281705DE46002C6C22 /* GTMMethodCheck.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMMethodCheck.m; sourceTree = ""; }; - DACA22291705DE46002C6C22 /* GTMOAuth2ViewTouch.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GTMOAuth2ViewTouch.xib; sourceTree = ""; }; - DACA222A1705DE46002C6C22 /* GTMOAuth2ViewControllerTouch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMOAuth2ViewControllerTouch.h; sourceTree = ""; }; - DACA222B1705DE46002C6C22 /* GTMHTTPFetcherLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMHTTPFetcherLogging.h; sourceTree = ""; }; - DACA222C1705DE46002C6C22 /* GTMOAuth2SignIn.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMOAuth2SignIn.m; sourceTree = ""; }; - DACA222D1705DE46002C6C22 /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = ""; }; - DACA222F1705DE46002C6C22 /* GTLQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLQuery.h; sourceTree = ""; }; - DACA22301705DE46002C6C22 /* GTLUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLUtilities.m; sourceTree = ""; }; - DACA22311705DE46002C6C22 /* GTLDateTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLDateTime.h; sourceTree = ""; }; - DACA22321705DE46002C6C22 /* GTLErrorObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLErrorObject.m; sourceTree = ""; }; - DACA22331705DE46002C6C22 /* GTLRuntimeCommon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLRuntimeCommon.m; sourceTree = ""; }; - DACA22341705DE46002C6C22 /* GTLService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLService.m; sourceTree = ""; }; - DACA22351705DE46002C6C22 /* GTLBase64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLBase64.h; sourceTree = ""; }; - DACA22361705DE46002C6C22 /* GTLUploadParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLUploadParameters.m; sourceTree = ""; }; - DACA22371705DE46002C6C22 /* GTLBatchResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLBatchResult.h; sourceTree = ""; }; - DACA22381705DE46002C6C22 /* GTLJSONParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLJSONParser.h; sourceTree = ""; }; - DACA22391705DE46002C6C22 /* GTLObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLObject.h; sourceTree = ""; }; - DACA223A1705DE46002C6C22 /* GTLBatchQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLBatchQuery.h; sourceTree = ""; }; - DACA223B1705DE46002C6C22 /* GTLFramework.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLFramework.m; sourceTree = ""; }; - DACA223C1705DE46002C6C22 /* GTLBase64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLBase64.m; sourceTree = ""; }; - DACA223D1705DE46002C6C22 /* GTLDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLDefines.h; sourceTree = ""; }; - DACA223E1705DE46002C6C22 /* GTLUploadParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLUploadParameters.h; sourceTree = ""; }; - DACA223F1705DE46002C6C22 /* GTLBatchResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLBatchResult.m; sourceTree = ""; }; - DACA22401705DE46002C6C22 /* GTLJSONParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLJSONParser.m; sourceTree = ""; }; - DACA22411705DE46002C6C22 /* GTLObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLObject.m; sourceTree = ""; }; - DACA22421705DE46002C6C22 /* GTLBatchQuery.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLBatchQuery.m; sourceTree = ""; }; - DACA22431705DE46002C6C22 /* GTLFramework.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLFramework.h; sourceTree = ""; }; - DACA22441705DE46002C6C22 /* GTLErrorObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLErrorObject.h; sourceTree = ""; }; - DACA22451705DE46002C6C22 /* GTLUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLUtilities.h; sourceTree = ""; }; - DACA22461705DE46002C6C22 /* GTLQuery.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLQuery.m; sourceTree = ""; }; - DACA22471705DE46002C6C22 /* GTLDateTime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLDateTime.m; sourceTree = ""; }; - DACA22491705DE46002C6C22 /* GTLPlusMoment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusMoment.m; sourceTree = ""; }; - DACA224A1705DE46002C6C22 /* GTLPlusItemScope.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusItemScope.m; sourceTree = ""; }; - DACA224B1705DE46002C6C22 /* GTLPlus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlus.h; sourceTree = ""; }; - DACA224C1705DE46002C6C22 /* GTLQueryPlus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLQueryPlus.m; sourceTree = ""; }; - DACA224D1705DE46002C6C22 /* GTLPlusConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusConstants.m; sourceTree = ""; }; - DACA224E1705DE46002C6C22 /* GTLServicePlus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLServicePlus.h; sourceTree = ""; }; - DACA224F1705DE46002C6C22 /* GTLQueryPlus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLQueryPlus.h; sourceTree = ""; }; - DACA22501705DE46002C6C22 /* GTLPlusConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusConstants.h; sourceTree = ""; }; - DACA22511705DE46002C6C22 /* GTLServicePlus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLServicePlus.m; sourceTree = ""; }; - DACA22521705DE46002C6C22 /* GTLPlusItemScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusItemScope.h; sourceTree = ""; }; - DACA22531705DE46002C6C22 /* GTLPlusMoment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusMoment.h; sourceTree = ""; }; - DACA22541705DE46002C6C22 /* GTLService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLService.h; sourceTree = ""; }; - DACA22551705DE46002C6C22 /* GTLRuntimeCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLRuntimeCommon.h; sourceTree = ""; }; - DACA22561705DE46002C6C22 /* GTLTargetNamespace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLTargetNamespace.h; sourceTree = ""; }; - DACA22571705DE46002C6C22 /* GTMNSString+URLArguments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+URLArguments.m"; sourceTree = ""; }; - DACA22581705DE46002C6C22 /* GTMNSDictionary+URLArguments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSDictionary+URLArguments.m"; sourceTree = ""; }; - DACA22591705DE46002C6C22 /* GTMObjC2Runtime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMObjC2Runtime.h; sourceTree = ""; }; - DACA225A1705DE46002C6C22 /* GTMLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLogger.m; sourceTree = ""; }; - DACA225B1705DE46002C6C22 /* GTMHTTPFetcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMHTTPFetcher.h; sourceTree = ""; }; - DACA225C1705DE46002C6C22 /* GTMHTTPFetchHistory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMHTTPFetchHistory.m; sourceTree = ""; }; - DACA225D1705DE46002C6C22 /* GTMNSString+URLArguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSString+URLArguments.h"; sourceTree = ""; }; - DACA225E1705DE46002C6C22 /* GTMNSDictionary+URLArguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSDictionary+URLArguments.h"; sourceTree = ""; }; - DACA225F1705DE46002C6C22 /* GTMObjC2Runtime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMObjC2Runtime.m; sourceTree = ""; }; - DACA22601705DE46002C6C22 /* GTMHTTPFetcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMHTTPFetcher.m; sourceTree = ""; }; - DACA22611705DE46002C6C22 /* GTMHTTPFetchHistory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMHTTPFetchHistory.h; sourceTree = ""; }; - DACA22621705DE46002C6C22 /* GTMLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLogger.h; sourceTree = ""; }; - DACA22631705DE46002C6C22 /* GTMHTTPFetcherService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMHTTPFetcherService.h; sourceTree = ""; }; - DACA22641705DE46002C6C22 /* GTMOAuth2Authentication.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMOAuth2Authentication.m; sourceTree = ""; }; - DACA22651705DE46002C6C22 /* GTMMethodCheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMMethodCheck.h; sourceTree = ""; }; - DACA22661705DE46002C6C22 /* GTMHTTPFetcherLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMHTTPFetcherLogging.m; sourceTree = ""; }; - DACA22671705DE46002C6C22 /* GTMOAuth2SignIn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMOAuth2SignIn.h; sourceTree = ""; }; - DACA22681705DE46002C6C22 /* GTMOAuth2ViewControllerTouch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMOAuth2ViewControllerTouch.m; sourceTree = ""; }; - DACA22851705DE46002C6C22 /* google_plus_share.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = google_plus_share.png; sourceTree = ""; }; - DACA22861705DE46002C6C22 /* google_plus_share_large.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = google_plus_share_large.png; sourceTree = ""; }; - DACA22871705DE46002C6C22 /* google_plus_sign_in_wide@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "google_plus_sign_in_wide@2x.png"; sourceTree = ""; }; - DACA22881705DE46002C6C22 /* google_plus_sign_in@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "google_plus_sign_in@2x.png"; sourceTree = ""; }; - DACA22891705DE46002C6C22 /* google_plus_share@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "google_plus_share@2x.png"; sourceTree = ""; }; - DACA228A1705DE46002C6C22 /* google_plus_share_large@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "google_plus_share_large@2x.png"; sourceTree = ""; }; - DACA228B1705DE46002C6C22 /* google_plus_sign_in.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = google_plus_sign_in.png; sourceTree = ""; }; - DACA228C1705DE46002C6C22 /* google_plus_sign_in_wide.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = google_plus_sign_in_wide.png; sourceTree = ""; }; DACA22B71705DE7D002C6C22 /* UbiquityStoreManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UbiquityStoreManager.m; sourceTree = ""; }; DACA22B81705DE7D002C6C22 /* NSError+UbiquityStoreManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSError+UbiquityStoreManager.h"; sourceTree = ""; }; DACA22B91705DE7D002C6C22 /* NSError+UbiquityStoreManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSError+UbiquityStoreManager.m"; sourceTree = ""; }; @@ -1898,6 +1825,99 @@ DAFC569F172C6E8500CB5CC5 /* LocalyticsUploader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocalyticsUploader.h; sourceTree = ""; }; DAFC56A0172C6E8500CB5CC5 /* LocalyticsUploader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LocalyticsUploader.m; sourceTree = ""; }; DAFC56A1172C6E8500CB5CC5 /* WebserviceConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebserviceConstants.h; sourceTree = ""; }; + DAFC56AE172C705C00CB5CC5 /* GPPDeepLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPPDeepLink.h; sourceTree = ""; }; + DAFC56AF172C705C00CB5CC5 /* GPPShare.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPPShare.h; sourceTree = ""; }; + DAFC56B0172C705C00CB5CC5 /* GPPSignIn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPPSignIn.h; sourceTree = ""; }; + DAFC56B1172C705C00CB5CC5 /* GPPSignInButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPPSignInButton.h; sourceTree = ""; }; + DAFC56B2172C705C00CB5CC5 /* GPPURLHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPPURLHandler.h; sourceTree = ""; }; + DAFC56B3172C705C00CB5CC5 /* libGooglePlus.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libGooglePlus.a; sourceTree = ""; }; + DAFC56B4172C705C00CB5CC5 /* libGooglePlusUniversal.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libGooglePlusUniversal.a; sourceTree = ""; }; + DAFC56B7172C705C00CB5CC5 /* GTLBase64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLBase64.h; sourceTree = ""; }; + DAFC56B8172C705C00CB5CC5 /* GTLBase64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLBase64.m; sourceTree = ""; }; + DAFC56B9172C705C00CB5CC5 /* GTLBatchQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLBatchQuery.h; sourceTree = ""; }; + DAFC56BA172C705C00CB5CC5 /* GTLBatchQuery.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLBatchQuery.m; sourceTree = ""; }; + DAFC56BB172C705C00CB5CC5 /* GTLBatchResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLBatchResult.h; sourceTree = ""; }; + DAFC56BC172C705C00CB5CC5 /* GTLBatchResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLBatchResult.m; sourceTree = ""; }; + DAFC56BD172C705C00CB5CC5 /* GTLDateTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLDateTime.h; sourceTree = ""; }; + DAFC56BE172C705C00CB5CC5 /* GTLDateTime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLDateTime.m; sourceTree = ""; }; + DAFC56BF172C705C00CB5CC5 /* GTLDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLDefines.h; sourceTree = ""; }; + DAFC56C0172C705C00CB5CC5 /* GTLErrorObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLErrorObject.h; sourceTree = ""; }; + DAFC56C1172C705C00CB5CC5 /* GTLErrorObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLErrorObject.m; sourceTree = ""; }; + DAFC56C2172C705C00CB5CC5 /* GTLFramework.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLFramework.h; sourceTree = ""; }; + DAFC56C3172C705C00CB5CC5 /* GTLFramework.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLFramework.m; sourceTree = ""; }; + DAFC56C4172C705C00CB5CC5 /* GTLJSONParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLJSONParser.h; sourceTree = ""; }; + DAFC56C5172C705C00CB5CC5 /* GTLJSONParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLJSONParser.m; sourceTree = ""; }; + DAFC56C6172C705C00CB5CC5 /* GTLObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLObject.h; sourceTree = ""; }; + DAFC56C7172C705C00CB5CC5 /* GTLObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLObject.m; sourceTree = ""; }; + DAFC56C9172C705C00CB5CC5 /* GTLPlus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlus.h; sourceTree = ""; }; + DAFC56CA172C705C00CB5CC5 /* GTLPlusAcl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusAcl.h; sourceTree = ""; }; + DAFC56CB172C705C00CB5CC5 /* GTLPlusAcl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusAcl.m; sourceTree = ""; }; + DAFC56CC172C705C00CB5CC5 /* GTLPlusAclentryResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusAclentryResource.h; sourceTree = ""; }; + DAFC56CD172C705C00CB5CC5 /* GTLPlusAclentryResource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusAclentryResource.m; sourceTree = ""; }; + DAFC56CE172C705C00CB5CC5 /* GTLPlusActivity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusActivity.h; sourceTree = ""; }; + DAFC56CF172C705C00CB5CC5 /* GTLPlusActivity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusActivity.m; sourceTree = ""; }; + DAFC56D0172C705C00CB5CC5 /* GTLPlusActivityFeed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusActivityFeed.h; sourceTree = ""; }; + DAFC56D1172C705C00CB5CC5 /* GTLPlusActivityFeed.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusActivityFeed.m; sourceTree = ""; }; + DAFC56D2172C705C00CB5CC5 /* GTLPlusComment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusComment.h; sourceTree = ""; }; + DAFC56D3172C705C00CB5CC5 /* GTLPlusComment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusComment.m; sourceTree = ""; }; + DAFC56D4172C705C00CB5CC5 /* GTLPlusCommentFeed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusCommentFeed.h; sourceTree = ""; }; + DAFC56D5172C705C00CB5CC5 /* GTLPlusCommentFeed.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusCommentFeed.m; sourceTree = ""; }; + DAFC56D6172C705C00CB5CC5 /* GTLPlusConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusConstants.h; sourceTree = ""; }; + DAFC56D7172C705C00CB5CC5 /* GTLPlusConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusConstants.m; sourceTree = ""; }; + DAFC56D8172C705C00CB5CC5 /* GTLPlusItemScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusItemScope.h; sourceTree = ""; }; + DAFC56D9172C705C00CB5CC5 /* GTLPlusItemScope.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusItemScope.m; sourceTree = ""; }; + DAFC56DA172C705C00CB5CC5 /* GTLPlusMoment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusMoment.h; sourceTree = ""; }; + DAFC56DB172C705C00CB5CC5 /* GTLPlusMoment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusMoment.m; sourceTree = ""; }; + DAFC56DC172C705C00CB5CC5 /* GTLPlusMomentsFeed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusMomentsFeed.h; sourceTree = ""; }; + DAFC56DD172C705C00CB5CC5 /* GTLPlusMomentsFeed.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusMomentsFeed.m; sourceTree = ""; }; + DAFC56DE172C705C00CB5CC5 /* GTLPlusPeopleFeed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusPeopleFeed.h; sourceTree = ""; }; + DAFC56DF172C705C00CB5CC5 /* GTLPlusPeopleFeed.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusPeopleFeed.m; sourceTree = ""; }; + DAFC56E0172C705C00CB5CC5 /* GTLPlusPerson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLPlusPerson.h; sourceTree = ""; }; + DAFC56E1172C705C00CB5CC5 /* GTLPlusPerson.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLPlusPerson.m; sourceTree = ""; }; + DAFC56E2172C705C00CB5CC5 /* GTLQueryPlus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLQueryPlus.h; sourceTree = ""; }; + DAFC56E3172C705C00CB5CC5 /* GTLQueryPlus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLQueryPlus.m; sourceTree = ""; }; + DAFC56E4172C705C00CB5CC5 /* GTLServicePlus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLServicePlus.h; sourceTree = ""; }; + DAFC56E5172C705C00CB5CC5 /* GTLServicePlus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLServicePlus.m; sourceTree = ""; }; + DAFC56E6172C705C00CB5CC5 /* GTLQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLQuery.h; sourceTree = ""; }; + DAFC56E7172C705C00CB5CC5 /* GTLQuery.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLQuery.m; sourceTree = ""; }; + DAFC56E8172C705C00CB5CC5 /* GTLRuntimeCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLRuntimeCommon.h; sourceTree = ""; }; + DAFC56E9172C705C00CB5CC5 /* GTLRuntimeCommon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLRuntimeCommon.m; sourceTree = ""; }; + DAFC56EA172C705C00CB5CC5 /* GTLService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLService.h; sourceTree = ""; }; + DAFC56EB172C705C00CB5CC5 /* GTLService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLService.m; sourceTree = ""; }; + DAFC56EC172C705C00CB5CC5 /* GTLTargetNamespace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLTargetNamespace.h; sourceTree = ""; }; + DAFC56ED172C705C00CB5CC5 /* GTLUploadParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLUploadParameters.h; sourceTree = ""; }; + DAFC56EE172C705C00CB5CC5 /* GTLUploadParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLUploadParameters.m; sourceTree = ""; }; + DAFC56EF172C705C00CB5CC5 /* GTLUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTLUtilities.h; sourceTree = ""; }; + DAFC56F0172C705C00CB5CC5 /* GTLUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLUtilities.m; sourceTree = ""; }; + DAFC56F1172C705C00CB5CC5 /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = ""; }; + DAFC56F2172C705C00CB5CC5 /* GTMGarbageCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMGarbageCollection.h; sourceTree = ""; }; + DAFC56F3172C705C00CB5CC5 /* GTMHTTPFetchHistory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMHTTPFetchHistory.h; sourceTree = ""; }; + DAFC56F4172C705C00CB5CC5 /* GTMHTTPFetchHistory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMHTTPFetchHistory.m; sourceTree = ""; }; + DAFC56F5172C705C00CB5CC5 /* GTMHTTPFetcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMHTTPFetcher.h; sourceTree = ""; }; + DAFC56F6172C705C00CB5CC5 /* GTMHTTPFetcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMHTTPFetcher.m; sourceTree = ""; }; + DAFC56F7172C705C00CB5CC5 /* GTMHTTPFetcherLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMHTTPFetcherLogging.h; sourceTree = ""; }; + DAFC56F8172C705C00CB5CC5 /* GTMHTTPFetcherLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMHTTPFetcherLogging.m; sourceTree = ""; }; + DAFC56F9172C705C00CB5CC5 /* GTMHTTPFetcherService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMHTTPFetcherService.h; sourceTree = ""; }; + DAFC56FA172C705C00CB5CC5 /* GTMHTTPFetcherService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMHTTPFetcherService.m; sourceTree = ""; }; + DAFC56FB172C705C00CB5CC5 /* GTMLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLogger.h; sourceTree = ""; }; + DAFC56FC172C705C00CB5CC5 /* GTMLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLogger.m; sourceTree = ""; }; + DAFC56FD172C705C00CB5CC5 /* GTMMethodCheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMMethodCheck.h; sourceTree = ""; }; + DAFC56FE172C705C00CB5CC5 /* GTMMethodCheck.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMMethodCheck.m; sourceTree = ""; }; + DAFC56FF172C705C00CB5CC5 /* GTMNSDictionary+URLArguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSDictionary+URLArguments.h"; sourceTree = ""; }; + DAFC5700172C705C00CB5CC5 /* GTMNSDictionary+URLArguments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSDictionary+URLArguments.m"; sourceTree = ""; }; + DAFC5701172C705C00CB5CC5 /* GTMNSString+URLArguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSString+URLArguments.h"; sourceTree = ""; }; + DAFC5702172C705C00CB5CC5 /* GTMNSString+URLArguments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+URLArguments.m"; sourceTree = ""; }; + DAFC5703172C705C00CB5CC5 /* GTMOAuth2Authentication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMOAuth2Authentication.h; sourceTree = ""; }; + DAFC5704172C705C00CB5CC5 /* GTMOAuth2Authentication.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMOAuth2Authentication.m; sourceTree = ""; }; + DAFC5705172C705C00CB5CC5 /* GTMOAuth2SignIn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMOAuth2SignIn.h; sourceTree = ""; }; + DAFC5706172C705C00CB5CC5 /* GTMOAuth2SignIn.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMOAuth2SignIn.m; sourceTree = ""; }; + DAFC5707172C705C00CB5CC5 /* GTMOAuth2ViewControllerTouch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMOAuth2ViewControllerTouch.h; sourceTree = ""; }; + DAFC5708172C705C00CB5CC5 /* GTMOAuth2ViewControllerTouch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMOAuth2ViewControllerTouch.m; sourceTree = ""; }; + DAFC5709172C705C00CB5CC5 /* GTMOAuth2ViewTouch.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GTMOAuth2ViewTouch.xib; sourceTree = ""; }; + DAFC570A172C705C00CB5CC5 /* GTMObjC2Runtime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMObjC2Runtime.h; sourceTree = ""; }; + DAFC570B172C705C00CB5CC5 /* GTMObjC2Runtime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMObjC2Runtime.m; sourceTree = ""; }; + DAFC570C172C705C00CB5CC5 /* OpenInChromeController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpenInChromeController.h; sourceTree = ""; }; + DAFC570D172C705C00CB5CC5 /* OpenInChromeController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OpenInChromeController.m; sourceTree = ""; }; DAFE45D815039823003ABA7C /* NSObject+PearlExport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+PearlExport.h"; sourceTree = ""; }; DAFE45D915039823003ABA7C /* NSObject+PearlExport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+PearlExport.m"; sourceTree = ""; }; DAFE45DA15039823003ABA7C /* NSString+PearlNSArrayFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+PearlNSArrayFormat.h"; sourceTree = ""; }; @@ -2007,8 +2027,8 @@ buildActionMask = 2147483647; files = ( DA497B9815E8C90E00B52167 /* Foundation.framework in Frameworks */, - DACA228D1705DE46002C6C22 /* libGooglePlus.a in Frameworks */, - DACA228E1705DE46002C6C22 /* libGooglePlusUniversal.a in Frameworks */, + DAFC5779172C705D00CB5CC5 /* libGooglePlus.a in Frameworks */, + DAFC577A172C705D00CB5CC5 /* libGooglePlusUniversal.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3033,130 +3053,12 @@ DACA221A1705DE46002C6C22 /* google-plus-ios-sdk */ = { isa = PBXGroup; children = ( - DACA221B1705DE46002C6C22 /* lib */, - DACA22241705DE46002C6C22 /* OpenSource */, - DACA22841705DE46002C6C22 /* Resources */, + DAFC56AD172C705C00CB5CC5 /* lib */, + DAFC56B5172C705C00CB5CC5 /* OpenSource */, ); path = "google-plus-ios-sdk"; sourceTree = ""; }; - DACA221B1705DE46002C6C22 /* lib */ = { - isa = PBXGroup; - children = ( - DACA221C1705DE46002C6C22 /* GPPShare.h */, - DACA221D1705DE46002C6C22 /* GPPSignInButton.h */, - DACA221E1705DE46002C6C22 /* GPPDeepLink.h */, - DACA221F1705DE46002C6C22 /* GPPSignIn.h */, - DACA22201705DE46002C6C22 /* libGooglePlus.a */, - DACA22211705DE46002C6C22 /* libGooglePlusUniversal.a */, - ); - path = lib; - sourceTree = ""; - }; - DACA22241705DE46002C6C22 /* OpenSource */ = { - isa = PBXGroup; - children = ( - DACA22251705DE46002C6C22 /* GTMGarbageCollection.h */, - DACA22261705DE46002C6C22 /* GTMOAuth2Authentication.h */, - DACA22271705DE46002C6C22 /* GTMHTTPFetcherService.m */, - DACA22281705DE46002C6C22 /* GTMMethodCheck.m */, - DACA22291705DE46002C6C22 /* GTMOAuth2ViewTouch.xib */, - DACA222A1705DE46002C6C22 /* GTMOAuth2ViewControllerTouch.h */, - DACA222B1705DE46002C6C22 /* GTMHTTPFetcherLogging.h */, - DACA222C1705DE46002C6C22 /* GTMOAuth2SignIn.m */, - DACA222D1705DE46002C6C22 /* GTMDefines.h */, - DACA222E1705DE46002C6C22 /* GTL */, - DACA22571705DE46002C6C22 /* GTMNSString+URLArguments.m */, - DACA22581705DE46002C6C22 /* GTMNSDictionary+URLArguments.m */, - DACA22591705DE46002C6C22 /* GTMObjC2Runtime.h */, - DACA225A1705DE46002C6C22 /* GTMLogger.m */, - DACA225B1705DE46002C6C22 /* GTMHTTPFetcher.h */, - DACA225C1705DE46002C6C22 /* GTMHTTPFetchHistory.m */, - DACA225D1705DE46002C6C22 /* GTMNSString+URLArguments.h */, - DACA225E1705DE46002C6C22 /* GTMNSDictionary+URLArguments.h */, - DACA225F1705DE46002C6C22 /* GTMObjC2Runtime.m */, - DACA22601705DE46002C6C22 /* GTMHTTPFetcher.m */, - DACA22611705DE46002C6C22 /* GTMHTTPFetchHistory.h */, - DACA22621705DE46002C6C22 /* GTMLogger.h */, - DACA22631705DE46002C6C22 /* GTMHTTPFetcherService.h */, - DACA22641705DE46002C6C22 /* GTMOAuth2Authentication.m */, - DACA22651705DE46002C6C22 /* GTMMethodCheck.h */, - DACA22661705DE46002C6C22 /* GTMHTTPFetcherLogging.m */, - DACA22671705DE46002C6C22 /* GTMOAuth2SignIn.h */, - DACA22681705DE46002C6C22 /* GTMOAuth2ViewControllerTouch.m */, - ); - path = OpenSource; - sourceTree = ""; - }; - DACA222E1705DE46002C6C22 /* GTL */ = { - isa = PBXGroup; - children = ( - DACA222F1705DE46002C6C22 /* GTLQuery.h */, - DACA22301705DE46002C6C22 /* GTLUtilities.m */, - DACA22311705DE46002C6C22 /* GTLDateTime.h */, - DACA22321705DE46002C6C22 /* GTLErrorObject.m */, - DACA22331705DE46002C6C22 /* GTLRuntimeCommon.m */, - DACA22341705DE46002C6C22 /* GTLService.m */, - DACA22351705DE46002C6C22 /* GTLBase64.h */, - DACA22361705DE46002C6C22 /* GTLUploadParameters.m */, - DACA22371705DE46002C6C22 /* GTLBatchResult.h */, - DACA22381705DE46002C6C22 /* GTLJSONParser.h */, - DACA22391705DE46002C6C22 /* GTLObject.h */, - DACA223A1705DE46002C6C22 /* GTLBatchQuery.h */, - DACA223B1705DE46002C6C22 /* GTLFramework.m */, - DACA223C1705DE46002C6C22 /* GTLBase64.m */, - DACA223D1705DE46002C6C22 /* GTLDefines.h */, - DACA223E1705DE46002C6C22 /* GTLUploadParameters.h */, - DACA223F1705DE46002C6C22 /* GTLBatchResult.m */, - DACA22401705DE46002C6C22 /* GTLJSONParser.m */, - DACA22411705DE46002C6C22 /* GTLObject.m */, - DACA22421705DE46002C6C22 /* GTLBatchQuery.m */, - DACA22431705DE46002C6C22 /* GTLFramework.h */, - DACA22441705DE46002C6C22 /* GTLErrorObject.h */, - DACA22451705DE46002C6C22 /* GTLUtilities.h */, - DACA22461705DE46002C6C22 /* GTLQuery.m */, - DACA22471705DE46002C6C22 /* GTLDateTime.m */, - DACA22481705DE46002C6C22 /* GTLPlus */, - DACA22541705DE46002C6C22 /* GTLService.h */, - DACA22551705DE46002C6C22 /* GTLRuntimeCommon.h */, - DACA22561705DE46002C6C22 /* GTLTargetNamespace.h */, - ); - path = GTL; - sourceTree = ""; - }; - DACA22481705DE46002C6C22 /* GTLPlus */ = { - isa = PBXGroup; - children = ( - DACA22491705DE46002C6C22 /* GTLPlusMoment.m */, - DACA224A1705DE46002C6C22 /* GTLPlusItemScope.m */, - DACA224B1705DE46002C6C22 /* GTLPlus.h */, - DACA224C1705DE46002C6C22 /* GTLQueryPlus.m */, - DACA224D1705DE46002C6C22 /* GTLPlusConstants.m */, - DACA224E1705DE46002C6C22 /* GTLServicePlus.h */, - DACA224F1705DE46002C6C22 /* GTLQueryPlus.h */, - DACA22501705DE46002C6C22 /* GTLPlusConstants.h */, - DACA22511705DE46002C6C22 /* GTLServicePlus.m */, - DACA22521705DE46002C6C22 /* GTLPlusItemScope.h */, - DACA22531705DE46002C6C22 /* GTLPlusMoment.h */, - ); - path = GTLPlus; - sourceTree = ""; - }; - DACA22841705DE46002C6C22 /* Resources */ = { - isa = PBXGroup; - children = ( - DACA22851705DE46002C6C22 /* google_plus_share.png */, - DACA22861705DE46002C6C22 /* google_plus_share_large.png */, - DACA22871705DE46002C6C22 /* google_plus_sign_in_wide@2x.png */, - DACA22881705DE46002C6C22 /* google_plus_sign_in@2x.png */, - DACA22891705DE46002C6C22 /* google_plus_share@2x.png */, - DACA228A1705DE46002C6C22 /* google_plus_share_large@2x.png */, - DACA228B1705DE46002C6C22 /* google_plus_sign_in.png */, - DACA228C1705DE46002C6C22 /* google_plus_sign_in_wide.png */, - ); - path = Resources; - sourceTree = ""; - }; DACA22B61705DE7D002C6C22 /* UbiquityStoreManager */ = { isa = PBXGroup; children = ( @@ -3349,6 +3251,129 @@ path = Views; sourceTree = ""; }; + DAFC56AD172C705C00CB5CC5 /* lib */ = { + isa = PBXGroup; + children = ( + DAFC56AE172C705C00CB5CC5 /* GPPDeepLink.h */, + DAFC56AF172C705C00CB5CC5 /* GPPShare.h */, + DAFC56B0172C705C00CB5CC5 /* GPPSignIn.h */, + DAFC56B1172C705C00CB5CC5 /* GPPSignInButton.h */, + DAFC56B2172C705C00CB5CC5 /* GPPURLHandler.h */, + DAFC56B3172C705C00CB5CC5 /* libGooglePlus.a */, + DAFC56B4172C705C00CB5CC5 /* libGooglePlusUniversal.a */, + ); + path = lib; + sourceTree = ""; + }; + DAFC56B5172C705C00CB5CC5 /* OpenSource */ = { + isa = PBXGroup; + children = ( + DAFC56B6172C705C00CB5CC5 /* GTL */, + DAFC56F1172C705C00CB5CC5 /* GTMDefines.h */, + DAFC56F2172C705C00CB5CC5 /* GTMGarbageCollection.h */, + DAFC56F3172C705C00CB5CC5 /* GTMHTTPFetchHistory.h */, + DAFC56F4172C705C00CB5CC5 /* GTMHTTPFetchHistory.m */, + DAFC56F5172C705C00CB5CC5 /* GTMHTTPFetcher.h */, + DAFC56F6172C705C00CB5CC5 /* GTMHTTPFetcher.m */, + DAFC56F7172C705C00CB5CC5 /* GTMHTTPFetcherLogging.h */, + DAFC56F8172C705C00CB5CC5 /* GTMHTTPFetcherLogging.m */, + DAFC56F9172C705C00CB5CC5 /* GTMHTTPFetcherService.h */, + DAFC56FA172C705C00CB5CC5 /* GTMHTTPFetcherService.m */, + DAFC56FB172C705C00CB5CC5 /* GTMLogger.h */, + DAFC56FC172C705C00CB5CC5 /* GTMLogger.m */, + DAFC56FD172C705C00CB5CC5 /* GTMMethodCheck.h */, + DAFC56FE172C705C00CB5CC5 /* GTMMethodCheck.m */, + DAFC56FF172C705C00CB5CC5 /* GTMNSDictionary+URLArguments.h */, + DAFC5700172C705C00CB5CC5 /* GTMNSDictionary+URLArguments.m */, + DAFC5701172C705C00CB5CC5 /* GTMNSString+URLArguments.h */, + DAFC5702172C705C00CB5CC5 /* GTMNSString+URLArguments.m */, + DAFC5703172C705C00CB5CC5 /* GTMOAuth2Authentication.h */, + DAFC5704172C705C00CB5CC5 /* GTMOAuth2Authentication.m */, + DAFC5705172C705C00CB5CC5 /* GTMOAuth2SignIn.h */, + DAFC5706172C705C00CB5CC5 /* GTMOAuth2SignIn.m */, + DAFC5707172C705C00CB5CC5 /* GTMOAuth2ViewControllerTouch.h */, + DAFC5708172C705C00CB5CC5 /* GTMOAuth2ViewControllerTouch.m */, + DAFC5709172C705C00CB5CC5 /* GTMOAuth2ViewTouch.xib */, + DAFC570A172C705C00CB5CC5 /* GTMObjC2Runtime.h */, + DAFC570B172C705C00CB5CC5 /* GTMObjC2Runtime.m */, + DAFC570C172C705C00CB5CC5 /* OpenInChromeController.h */, + DAFC570D172C705C00CB5CC5 /* OpenInChromeController.m */, + ); + path = OpenSource; + sourceTree = ""; + }; + DAFC56B6172C705C00CB5CC5 /* GTL */ = { + isa = PBXGroup; + children = ( + DAFC56B7172C705C00CB5CC5 /* GTLBase64.h */, + DAFC56B8172C705C00CB5CC5 /* GTLBase64.m */, + DAFC56B9172C705C00CB5CC5 /* GTLBatchQuery.h */, + DAFC56BA172C705C00CB5CC5 /* GTLBatchQuery.m */, + DAFC56BB172C705C00CB5CC5 /* GTLBatchResult.h */, + DAFC56BC172C705C00CB5CC5 /* GTLBatchResult.m */, + DAFC56BD172C705C00CB5CC5 /* GTLDateTime.h */, + DAFC56BE172C705C00CB5CC5 /* GTLDateTime.m */, + DAFC56BF172C705C00CB5CC5 /* GTLDefines.h */, + DAFC56C0172C705C00CB5CC5 /* GTLErrorObject.h */, + DAFC56C1172C705C00CB5CC5 /* GTLErrorObject.m */, + DAFC56C2172C705C00CB5CC5 /* GTLFramework.h */, + DAFC56C3172C705C00CB5CC5 /* GTLFramework.m */, + DAFC56C4172C705C00CB5CC5 /* GTLJSONParser.h */, + DAFC56C5172C705C00CB5CC5 /* GTLJSONParser.m */, + DAFC56C6172C705C00CB5CC5 /* GTLObject.h */, + DAFC56C7172C705C00CB5CC5 /* GTLObject.m */, + DAFC56C8172C705C00CB5CC5 /* GTLPlus */, + DAFC56E6172C705C00CB5CC5 /* GTLQuery.h */, + DAFC56E7172C705C00CB5CC5 /* GTLQuery.m */, + DAFC56E8172C705C00CB5CC5 /* GTLRuntimeCommon.h */, + DAFC56E9172C705C00CB5CC5 /* GTLRuntimeCommon.m */, + DAFC56EA172C705C00CB5CC5 /* GTLService.h */, + DAFC56EB172C705C00CB5CC5 /* GTLService.m */, + DAFC56EC172C705C00CB5CC5 /* GTLTargetNamespace.h */, + DAFC56ED172C705C00CB5CC5 /* GTLUploadParameters.h */, + DAFC56EE172C705C00CB5CC5 /* GTLUploadParameters.m */, + DAFC56EF172C705C00CB5CC5 /* GTLUtilities.h */, + DAFC56F0172C705C00CB5CC5 /* GTLUtilities.m */, + ); + path = GTL; + sourceTree = ""; + }; + DAFC56C8172C705C00CB5CC5 /* GTLPlus */ = { + isa = PBXGroup; + children = ( + DAFC56C9172C705C00CB5CC5 /* GTLPlus.h */, + DAFC56CA172C705C00CB5CC5 /* GTLPlusAcl.h */, + DAFC56CB172C705C00CB5CC5 /* GTLPlusAcl.m */, + DAFC56CC172C705C00CB5CC5 /* GTLPlusAclentryResource.h */, + DAFC56CD172C705C00CB5CC5 /* GTLPlusAclentryResource.m */, + DAFC56CE172C705C00CB5CC5 /* GTLPlusActivity.h */, + DAFC56CF172C705C00CB5CC5 /* GTLPlusActivity.m */, + DAFC56D0172C705C00CB5CC5 /* GTLPlusActivityFeed.h */, + DAFC56D1172C705C00CB5CC5 /* GTLPlusActivityFeed.m */, + DAFC56D2172C705C00CB5CC5 /* GTLPlusComment.h */, + DAFC56D3172C705C00CB5CC5 /* GTLPlusComment.m */, + DAFC56D4172C705C00CB5CC5 /* GTLPlusCommentFeed.h */, + DAFC56D5172C705C00CB5CC5 /* GTLPlusCommentFeed.m */, + DAFC56D6172C705C00CB5CC5 /* GTLPlusConstants.h */, + DAFC56D7172C705C00CB5CC5 /* GTLPlusConstants.m */, + DAFC56D8172C705C00CB5CC5 /* GTLPlusItemScope.h */, + DAFC56D9172C705C00CB5CC5 /* GTLPlusItemScope.m */, + DAFC56DA172C705C00CB5CC5 /* GTLPlusMoment.h */, + DAFC56DB172C705C00CB5CC5 /* GTLPlusMoment.m */, + DAFC56DC172C705C00CB5CC5 /* GTLPlusMomentsFeed.h */, + DAFC56DD172C705C00CB5CC5 /* GTLPlusMomentsFeed.m */, + DAFC56DE172C705C00CB5CC5 /* GTLPlusPeopleFeed.h */, + DAFC56DF172C705C00CB5CC5 /* GTLPlusPeopleFeed.m */, + DAFC56E0172C705C00CB5CC5 /* GTLPlusPerson.h */, + DAFC56E1172C705C00CB5CC5 /* GTLPlusPerson.m */, + DAFC56E2172C705C00CB5CC5 /* GTLQueryPlus.h */, + DAFC56E3172C705C00CB5CC5 /* GTLQueryPlus.m */, + DAFC56E4172C705C00CB5CC5 /* GTLServicePlus.h */, + DAFC56E5172C705C00CB5CC5 /* GTLServicePlus.m */, + ); + path = GTLPlus; + sourceTree = ""; + }; DAFE45D715039823003ABA7C /* Pearl */ = { isa = PBXGroup; children = ( @@ -3798,6 +3823,89 @@ en, English, es, + af, + am, + ar, + be, + bg, + ca, + cs, + da, + de, + de_AT, + de_CH, + el, + en_GB, + en_IE, + en_IN, + en_SG, + en_ZA, + es_419, + es_AR, + es_BO, + es_CL, + es_CO, + es_CR, + es_DO, + es_EC, + es_GT, + es_HN, + es_MX, + es_NI, + es_PA, + es_PE, + es_PR, + es_PY, + es_SV, + es_US, + es_UY, + es_VE, + et, + fa, + fi, + fil, + fr, + fr_CH, + gsw, + he, + hi, + hr, + hu, + id, + in, + it, + iw, + ja, + ko, + ln, + lt, + lv, + mo, + ms, + nb, + nl, + no, + pl, + pt, + pt_BR, + pt_PT, + ro, + ru, + sk, + sl, + sr, + sv, + sw, + th, + tl, + tr, + uk, + vi, + zh, + zh_CN, + zh_HK, + zh_TW, + zu, ); mainGroup = DA5BFA39147E415C00F98B1E; productRefGroup = DA5BFA45147E415C00F98B1E /* Products */; @@ -4588,36 +4696,46 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DACA228F1705DE46002C6C22 /* GTMHTTPFetcherService.m in Sources */, - DACA22901705DE46002C6C22 /* GTMMethodCheck.m in Sources */, - DACA22911705DE46002C6C22 /* GTMOAuth2SignIn.m in Sources */, - DACA22921705DE46002C6C22 /* GTLUtilities.m in Sources */, - DACA22931705DE46002C6C22 /* GTLErrorObject.m in Sources */, - DACA22941705DE46002C6C22 /* GTLRuntimeCommon.m in Sources */, - DACA22951705DE46002C6C22 /* GTLService.m in Sources */, - DACA22961705DE46002C6C22 /* GTLUploadParameters.m in Sources */, - DACA22971705DE46002C6C22 /* GTLFramework.m in Sources */, - DACA22981705DE46002C6C22 /* GTLBase64.m in Sources */, - DACA22991705DE46002C6C22 /* GTLBatchResult.m in Sources */, - DACA229A1705DE46002C6C22 /* GTLJSONParser.m in Sources */, - DACA229B1705DE46002C6C22 /* GTLObject.m in Sources */, - DACA229C1705DE46002C6C22 /* GTLBatchQuery.m in Sources */, - DACA229D1705DE46002C6C22 /* GTLQuery.m in Sources */, - DACA229E1705DE46002C6C22 /* GTLDateTime.m in Sources */, - DACA229F1705DE46002C6C22 /* GTLPlusMoment.m in Sources */, - DACA22A01705DE46002C6C22 /* GTLPlusItemScope.m in Sources */, - DACA22A11705DE46002C6C22 /* GTLQueryPlus.m in Sources */, - DACA22A21705DE46002C6C22 /* GTLPlusConstants.m in Sources */, - DACA22A31705DE46002C6C22 /* GTLServicePlus.m in Sources */, - DACA22A41705DE46002C6C22 /* GTMNSString+URLArguments.m in Sources */, - DACA22A51705DE46002C6C22 /* GTMNSDictionary+URLArguments.m in Sources */, - DACA22A61705DE46002C6C22 /* GTMLogger.m in Sources */, - DACA22A71705DE46002C6C22 /* GTMHTTPFetchHistory.m in Sources */, - DACA22A81705DE46002C6C22 /* GTMObjC2Runtime.m in Sources */, - DACA22A91705DE46002C6C22 /* GTMHTTPFetcher.m in Sources */, - DACA22AA1705DE46002C6C22 /* GTMOAuth2Authentication.m in Sources */, - DACA22AB1705DE46002C6C22 /* GTMHTTPFetcherLogging.m in Sources */, - DACA22AC1705DE46002C6C22 /* GTMOAuth2ViewControllerTouch.m in Sources */, + DAFC577B172C705D00CB5CC5 /* GTLBase64.m in Sources */, + DAFC577C172C705D00CB5CC5 /* GTLBatchQuery.m in Sources */, + DAFC577D172C705D00CB5CC5 /* GTLBatchResult.m in Sources */, + DAFC577E172C705D00CB5CC5 /* GTLDateTime.m in Sources */, + DAFC577F172C705D00CB5CC5 /* GTLErrorObject.m in Sources */, + DAFC5780172C705D00CB5CC5 /* GTLFramework.m in Sources */, + DAFC5781172C705D00CB5CC5 /* GTLJSONParser.m in Sources */, + DAFC5782172C705D00CB5CC5 /* GTLObject.m in Sources */, + DAFC5783172C705D00CB5CC5 /* GTLPlusAcl.m in Sources */, + DAFC5784172C705D00CB5CC5 /* GTLPlusAclentryResource.m in Sources */, + DAFC5785172C705D00CB5CC5 /* GTLPlusActivity.m in Sources */, + DAFC5786172C705D00CB5CC5 /* GTLPlusActivityFeed.m in Sources */, + DAFC5787172C705D00CB5CC5 /* GTLPlusComment.m in Sources */, + DAFC5788172C705D00CB5CC5 /* GTLPlusCommentFeed.m in Sources */, + DAFC5789172C705D00CB5CC5 /* GTLPlusConstants.m in Sources */, + DAFC578A172C705D00CB5CC5 /* GTLPlusItemScope.m in Sources */, + DAFC578B172C705D00CB5CC5 /* GTLPlusMoment.m in Sources */, + DAFC578C172C705D00CB5CC5 /* GTLPlusMomentsFeed.m in Sources */, + DAFC578D172C705D00CB5CC5 /* GTLPlusPeopleFeed.m in Sources */, + DAFC578E172C705D00CB5CC5 /* GTLPlusPerson.m in Sources */, + DAFC578F172C705D00CB5CC5 /* GTLQueryPlus.m in Sources */, + DAFC5790172C705D00CB5CC5 /* GTLServicePlus.m in Sources */, + DAFC5791172C705D00CB5CC5 /* GTLQuery.m in Sources */, + DAFC5792172C705D00CB5CC5 /* GTLRuntimeCommon.m in Sources */, + DAFC5793172C705D00CB5CC5 /* GTLService.m in Sources */, + DAFC5794172C705D00CB5CC5 /* GTLUploadParameters.m in Sources */, + DAFC5795172C705D00CB5CC5 /* GTLUtilities.m in Sources */, + DAFC5796172C705D00CB5CC5 /* GTMHTTPFetchHistory.m in Sources */, + DAFC5797172C705D00CB5CC5 /* GTMHTTPFetcher.m in Sources */, + DAFC5798172C705D00CB5CC5 /* GTMHTTPFetcherLogging.m in Sources */, + DAFC5799172C705D00CB5CC5 /* GTMHTTPFetcherService.m in Sources */, + DAFC579A172C705D00CB5CC5 /* GTMLogger.m in Sources */, + DAFC579B172C705D00CB5CC5 /* GTMMethodCheck.m in Sources */, + DAFC579C172C705D00CB5CC5 /* GTMNSDictionary+URLArguments.m in Sources */, + DAFC579D172C705D00CB5CC5 /* GTMNSString+URLArguments.m in Sources */, + DAFC579E172C705D00CB5CC5 /* GTMOAuth2Authentication.m in Sources */, + DAFC579F172C705D00CB5CC5 /* GTMOAuth2SignIn.m in Sources */, + DAFC57A0172C705D00CB5CC5 /* GTMOAuth2ViewControllerTouch.m in Sources */, + DAFC57A1172C705D00CB5CC5 /* GTMObjC2Runtime.m in Sources */, + DAFC57A2172C705D00CB5CC5 /* OpenInChromeController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4764,9 +4882,6 @@ DAFC568E172C57EC00CB5CC5 /* IASKSlider.m in Sources */, DAFC568F172C57EC00CB5CC5 /* IASKSwitch.m in Sources */, DAFC5690172C57EC00CB5CC5 /* IASKTextField.m in Sources */, - DAFC56A4172C6E8500CB5CC5 /* LocalyticsDatabase.m in Sources */, - DAFC56A7172C6E8500CB5CC5 /* LocalyticsSession.m in Sources */, - DAFC56AB172C6E8500CB5CC5 /* LocalyticsUploader.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4907,6 +5022,10 @@ isa = XCBuildConfiguration; buildSettings = { GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../../../External/google-plus-ios-sdk/lib\"", + ); }; name = "Debug-iOS"; }; @@ -4914,6 +5033,10 @@ isa = XCBuildConfiguration; buildSettings = { GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../../../External/google-plus-ios-sdk/lib\"", + ); }; name = "AdHoc-iOS"; }; @@ -4921,6 +5044,10 @@ isa = XCBuildConfiguration; buildSettings = { GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../../../External/google-plus-ios-sdk/lib\"", + ); }; name = "AppStore-iOS"; };