2
0
MasterPassword/External/google-plus-ios-sdk/SampleCode/GooglePlusSampleShareViewController.m

146 lines
4.2 KiB
Mathematica
Raw Normal View History

//
// GooglePlusSampleShareViewController.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 "GooglePlusSampleShareViewController.h"
#import "GooglePlusSampleAppDelegate.h"
@implementation GooglePlusSampleShareViewController
@synthesize sharePrefillText = sharePrefillText_;
@synthesize shareURL = shareURL_;
@synthesize shareStatus = shareStatus_;
@synthesize shareToolbar = shareToolbar_;
- (void)dealloc {
[sharePrefillText_ release];
[shareURL_ release];
[shareStatus_ release];
[share_ release];
[shareToolbar_ release];
[super dealloc];
}
#pragma mark - View lifecycle
- (void)viewDidLoad {
// Set up Google+ share dialog.
GooglePlusSampleAppDelegate *appDelegate = (GooglePlusSampleAppDelegate *)
[[UIApplication sharedApplication] delegate];
NSString *clientID = [GooglePlusSampleAppDelegate clientID];
share_ = [[GooglePlusShare alloc] initWithClientID:clientID];
share_.delegate = self;
appDelegate.share = share_;
[super viewDidLoad];
}
- (void)viewDidUnload {
GooglePlusSampleAppDelegate *appDelegate = (GooglePlusSampleAppDelegate *)
[[UIApplication sharedApplication] delegate];
appDelegate.share = nil;
share_.delegate = nil;
[share_ release];
share_ = nil;
[super viewDidUnload];
}
#pragma mark - UITextFieldDelegate
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
#pragma mark - GooglePlusShareDelegate
- (void)finishedSharing:(BOOL)shared {
NSString *text = shared ? @"Success" : @"Canceled";
shareStatus_.text = [NSString stringWithFormat:@"Status: %@", text];
}
#pragma mark - UIActionSheetDelegate
- (void)actionSheet:(UIActionSheet *)actionSheet
didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (buttonIndex == 0) {
[self shareButton:nil];
} else if (buttonIndex == 1) {
shareStatus_.text = @"Status: Sharing...";
MFMailComposeViewController *picker =
[[[MFMailComposeViewController alloc] init] autorelease];
picker.mailComposeDelegate = self;
[picker setSubject:sharePrefillText_.text];
[picker setMessageBody:shareURL_.text isHTML:NO];
[self presentModalViewController:picker animated:YES];
}
}
#pragma mark - MFMailComposeViewControllerDelegate
- (void)mailComposeController:(MFMailComposeViewController *)controller
didFinishWithResult:(MFMailComposeResult)result
error:(NSError*)error {
NSString *text;
switch (result) {
case MFMailComposeResultCancelled:
text = @"Canceled";
break;
case MFMailComposeResultSaved:
text = @"Saved";
break;
case MFMailComposeResultSent:
text = @"Sent";
break;
case MFMailComposeResultFailed:
text = @"Failed";
break;
default:
text = @"Not sent";
break;
}
shareStatus_.text = [NSString stringWithFormat:@"Status: %@", text];
[self dismissModalViewControllerAnimated:YES];
}
#pragma mark - IBActions
- (IBAction)shareButton:(id)sender {
NSString *inputURL = shareURL_.text;
NSURL *urlToShare = [inputURL length] ? [NSURL URLWithString:inputURL] : nil;
NSString *inputText = sharePrefillText_.text;
NSString *text = [inputText length] ? inputText : nil;
shareStatus_.text = @"Status: Sharing...";
[[[[share_ shareDialog] setURLToShare:urlToShare] setPrefillText:text] open];
}
- (IBAction)shareToolbar:(id)sender {
UIActionSheet *actionSheet =
[[[UIActionSheet alloc] initWithTitle:@"Share this post"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"Google+", @"Email", nil]
autorelease];
[actionSheet showFromToolbar:shareToolbar_];
}
@end