RSS

(root)/iphone/tappity : /tappity/source/TappityAppDelegate.m (revision 46)

To get this branch, use:
bzr branch /browse/iphone/tappity
Line Revision Contents
1 46
//
2
//  tappityAppDelegate.m
3
//  tappity
4
//
5
//  Created by döme on 25.10.2009.
6
//  Copyright __MyCompanyName__ 2009. All rights reserved.
7
//
8
9
#import "TappityAppDelegate.h"
10
#import "TappityViewController.h"
11
#import "BonjourBrowser.h"
12
#import "TappityClient.h"
13
#import "TappityView.h"
14
15
@implementation TappityAppDelegate
16
17
@synthesize window;
18
@synthesize viewController;
19
20
21
- (void)applicationDidFinishLaunching:(UIApplication *)application
22
{    
23
    
24
	tapClient = [[TappityClient alloc] init];
25
26
	browser = [[BonjourBrowser alloc] initForType: @"_tappity._tcp"
27
										 inDomain: @"local"
28
									customDomains: nil // we won't save any additional domains added by the user
29
						 showDisclosureIndicators: NO
30
								 showCancelButton: YES];
31
32
	browser.delegate = self;
33
    
34
    // We want to let the user know that the services list is dynamic and always updating, even when there are no
35
    // services currently found.
36
	browser.searchingForServicesString = NSLocalizedString(@"Searching for web services", @"Searching for web services string");
37
38
	// Add the controller's view as a subview of the window
39
	[self.window addSubview: [browser view]];
40
41
//    [window addSubview:viewController.view];
42
    [window makeKeyAndVisible];
43
}
44
45
46
47
- (NSString *)copyStringFromTXTDict:(NSDictionary *)dict which:(NSString*)which {
48
	// Helper for getting information from the TXT data
49
	NSData* data = [dict objectForKey:which];
50
	return data ? [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease] : nil;
51
}
52
53
- (void) bonjourBrowser:(BonjourBrowser*) theBrowser didResolveInstance:(NSNetService*)service
54
{
55
	NSLog(@"found bonjour server");
56
	
57
	if (service)
58
	{
59
		[tapClient connectToService: service];
60
	}
61
62
	if (!tapView)
63
		tapView = [[TappityView alloc] initWithFrame: [theBrowser view].frame];
64
		
65
	tapView.tapClient = tapClient;
66
		
67
	[[theBrowser view] removeFromSuperview];
68
	
69
	[self.window addSubview: tapView];
70
	
71
	[[UIApplication sharedApplication] _addRecorder: tapClient];
72
73
	
74
	return;
75
76
	// Construct the URL including the port number
77
	// Also use the path, username and password fields that can be in the TXT record
78
	NSDictionary* dict = [[NSNetService dictionaryFromTXTRecordData:[service TXTRecordData]] retain];
79
	NSString *host = [service hostName];
80
	
81
	NSString* user = [[self copyStringFromTXTDict:dict which:@"u"] retain];
82
	NSString* pass = [[self copyStringFromTXTDict:dict which:@"p"] retain];
83
	
84
	NSString* portStr = [[NSString alloc] initWithString:@""];
85
	
86
	// Note that [NSNetService port:] returns an NSInteger in host byte order
87
	NSInteger port = [service port];
88
	if (port != 0 && port != 80)
89
			portStr = [[NSString alloc] initWithFormat:@":%d",port];
90
	
91
	NSString* path = [[[self copyStringFromTXTDict:dict which:@"path"] retain] autorelease];
92
	if (!path || [path length]==0) {
93
			path = [[[NSString alloc] initWithString:@"/"] autorelease];
94
	} else if (![[path substringToIndex:1] isEqual:@"/"]) {
95
			path = [[[NSString alloc] initWithFormat:@"/%@",path] autorelease];
96
	}
97
	
98
	NSString* string = [[NSString alloc] initWithFormat:@"http://%@%@%@%@%@%@%@",
99
												user?user:@"",
100
												pass?@":":@"",
101
												pass?pass:@"",
102
												(user||pass)?@"@":@"",
103
												host,
104
												portStr,
105
												path];
106
	
107
	NSURL *url = [[NSURL alloc] initWithString:string];
108
	[[UIApplication sharedApplication] openURL:url];
109
	
110
	[url release];
111
	[string release];
112
	[portStr release];
113
	[pass release];
114
	[user release];
115
	[dict release];
116
}
117
118
- (void)dealloc
119
{
120
    [viewController release];
121
	[browser release];
122
    [window release];
123
    [super dealloc];
124
}
125
126
127
@end

Loggerhead 1.17 is a web-based interface for Bazaar branches