#import #import #import #import #import #import #import #import #import #import #import #import #import "PSSpecifiers.h" #import "ServiceTableCell.h" #import "SSHServiceTableCell.h" #import "WifiServiceTableCell.h" #import "FireflyServiceTableCell.h" #import "ApacheServiceTableCell.h" #import "EDGEServiceTableCell.h" #import "AFPServiceTableCell.h" #import "PhoneServiceTableCell.h" #import "BluetoothServiceTableCell.h" #import "SocksServiceTableCell.h" #import "TinyproxyServiceTableCell.h" #import "SambaServiceTableCell.h" #import "LighttpdServiceTableCell.h" #import "IPTableCell.h" #import "AutolockServiceTableCell.h" #import "FileShareServiceTableCell.h" #import "iSpitServiceTableCell.h" #import "ASnapServiceTableCell.h" #import "ServiceTableCell2.h" #import "SSHServiceTableCell2.h" #import "WifiServiceTableCell2.h" #import "FireflyServiceTableCell2.h" #import "ApacheServiceTableCell2.h" #import "EDGEServiceTableCell2.h" #import "AFPServiceTableCell2.h" #import "PhoneServiceTableCell2.h" #import "BluetoothServiceTableCell2.h" #import "SocksServiceTableCell2.h" #import "TinyproxyServiceTableCell2.h" #import "SambaServiceTableCell2.h" #import "LighttpdServiceTableCell2.h" #import "IPTableCell2.h" #import "AutolockServiceTableCell2.h" #import "FileShareServiceTableCell2.h" #import "iSpitServiceTableCell2.h" #import "ASnapServiceTableCell2.h" #import "ButtonBarView.h" /* * Main */ int main(int argc, char **argv) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; int a = UIApplicationMain(argc, argv, [ App class]); [pool release]; return a; } /* * App */ @implementation App - (void) applicationDidFinishLaunching: (id) fp8 { // init main window for the application to be the whole screen. struct CGRect frame = [UIHardware fullScreenApplicationContentRect]; frame.origin.x = frame.origin.y = 0.0f; mainWindow = [[UIWindow alloc] initWithContentRect: frame]; // The "master" view that contains other views //masterView = [[MasterView alloc] initWithFrame: frame]; buttonBarView = [[ButtonBarView alloc] initWithFrame:CGRectMake(0,0,320,460)]; [super setStatusBarMode:3 duration:0]; [mainWindow orderFront: self]; [mainWindow makeKey: self]; [mainWindow _setHidden: NO]; [mainWindow setContentView: /*masterView*/ buttonBarView]; [buttonBarView release]; } @end /* * ButtonBarView */ @implementation ButtonBarView -(id)initWithFrame:(CGRect)frame { if ((self == [super initWithFrame:frame])!=nil) { barStatus = 1; rect = [UIHardware fullScreenApplicationContentRect]; _offScreenRect = frame; _onScreenRect = frame; _onScreenRect.origin.x = 0.0f; rect.origin.x = rect.origin.y = 0.0f; // Create some colors float black[4] = {0, 0, 0, 1}; // Create your views testview1 = [ [ UIView alloc ] initWithFrame:CGRectMake(0,0,320,460)]; testview2 = [ [ UIView alloc ] initWithFrame:CGRectMake(0,0,320,460)]; testview3 = [ [ UIView alloc ] initWithFrame:CGRectMake(0,0,320,460)]; testview4 = [ [ UIView alloc ] initWithFrame:CGRectMake(0,0,320,460)]; testview5 = [ [ UIView alloc ] initWithFrame:CGRectMake(0,0,320,460)]; [testview1 setBackgroundColor: CGColorCreate(CGColorSpaceCreateDeviceRGB(), black)]; [testview2 setBackgroundColor: CGColorCreate(CGColorSpaceCreateDeviceRGB(), black)]; [testview3 setBackgroundColor: CGColorCreate(CGColorSpaceCreateDeviceRGB(), black)]; [testview4 setBackgroundColor: CGColorCreate(CGColorSpaceCreateDeviceRGB(), black)]; [testview5 setBackgroundColor: CGColorCreate(CGColorSpaceCreateDeviceRGB(), black)]; //--------------------------------------------------Table set up------------------------------------------------------------------ // Services Page NSLog(@"Starting"); /* Create the Preferences Table, it holds all the controls on the preferences page */ pref = [[UIPreferencesTable alloc] initWithFrame: CGRectMake(0.0f, 36.0f, 320.0f, 480.0f-40.0f)]; /* Tell the preferences table to get its data from this class */ [pref setDataSource: self]; /* Tell the preferences table to send events to this class */ [pref setDelegate: self]; [pref setBackgroundColor: CGColorCreate(CGColorSpaceCreateDeviceRGB(), black)]; /* Create the 2nd Preferences Table, it holds all the controls on the preferences page */ pref2 = [[UIPreferencesTable alloc] initWithFrame: CGRectMake(0.0f, 36.0f, 320.0f, 480.0f-40.0f)]; /* Tell the preferences table to get its data from this class */ [pref2 setDataSource: self]; /* Tell the preferences table to send events to this class */ [pref2 setDelegate: self]; [pref2 setBackgroundColor: CGColorCreate(CGColorSpaceCreateDeviceRGB(), black)]; //-------------------------------------------------------------------------------------------------------------------- /* Necessary variables for setting up preferences table */ CGRect controlPos = CGRectMake(0.0f, 0.0f, 320.0f, 45.0f); NSFileManager *fileManager = [NSFileManager defaultManager]; NSDictionary *oneViewDictionary = [NSDictionary dictionaryWithContentsOfFile:@"/Applications/NetServices.app/ProgramFiles/plists/settings.plist"]; /* Create header cell for IP Address*/ NSString *ipVisibility = [oneViewDictionary objectForKey:@"Visibility-IP"]; if ([ipVisibility isEqualToString:@"YES"]) { netServicesHeader = [[IPTableCell alloc] init]; [netServicesHeader _setDrawAsLabel: NO]; [netServicesHeader setDrawsBackground: YES]; [netServicesHeader setIcon: [[UIImage imageAtPath:[[NSBundle mainBundle] pathForResource:@"ip" ofType:@"png" inDirectory:@"/ProgramFiles/icons"]] autorelease]]; } else if ([ipVisibility isEqualToString:@"YES"] == NO) { netServicesHeader = [[UIPreferencesTableCell alloc] init]; [netServicesHeader _setDrawAsLabel: NO]; [netServicesHeader setDrawsBackground: NO]; [netServicesHeader setTitle:@" "]; } //---------------------------ServicesArray----------------------------------------------- /* Holds the services that are listed under the Network Services group */ servicesArray = [[[NSMutableArray alloc] init] retain]; NSString *edgeVisibility = [oneViewDictionary objectForKey:@"Visibility-EDGE"]; if ([edgeVisibility isEqualToString:@"YES"]) { /* Initialize the Edge Service Control */ EDGE = [[EDGEServiceTableCell alloc] initWithFrame: controlPos]; [EDGE setDelegate:self]; /* Add this to the array of services */ [servicesArray addObject:EDGE]; } NSString *bluetoothVisibility = [oneViewDictionary objectForKey:@"Visibility-Bluetooth"]; if ([bluetoothVisibility isEqualToString:@"YES"]) { /* Initialize the Bluetooth Control */ Bluetooth = [[BluetoothServiceTableCell alloc] initWithFrame: controlPos]; [Bluetooth setDelegate:self]; /* Add this to the array of services */ [servicesArray addObject:Bluetooth]; } NSString *wifiVisibility = [oneViewDictionary objectForKey:@"Visibility-Wifi"]; if ([wifiVisibility isEqualToString:@"YES"]) { /* Initialize the Wifi Control */ Wifi = [[WifiServiceTableCell alloc] initWithFrame: controlPos]; /* Add this to the array of services */ [servicesArray addObject:Wifi]; } NSString *phoneVisibility = [oneViewDictionary objectForKey:@"Visibility-Airplane"]; if ([phoneVisibility isEqualToString:@"YES"]) { /*Initialize the Phone Service Control*/ Airplane = [[PhoneServiceTableCell alloc] initWithFrame: controlPos]; /*Add this to the array of services*/ [servicesArray addObject:Airplane]; } NSString *sshVisibility = [oneViewDictionary objectForKey:@"Visibility-SSH"]; if ([sshVisibility isEqualToString:@"YES"]) { /* Initialize the OpenSSH Control */ /* Add this to the array of services, only if the opensshd daemon exists */ if ([fileManager fileExistsAtPath:@"/Library/LaunchDaemons/com.openssh.sshd.plist"]) { SSH = [[SSHServiceTableCell alloc] initWithFrame: controlPos andSSHplist:@"/Library/LaunchDaemons/com.openssh.sshd.plist"]; [servicesArray addObject:SSH]; } } NSString *dropbearVisibility = [oneViewDictionary objectForKey:@"Visibility-Dropbear"]; if ([dropbearVisibility isEqualToString:@"YES"]) { /* Initialize the Dropbear SSH Control */ Dropbear = nil; NSString *dropbear = @"/System/Library/LaunchDaemons/au.asn.ucc.matt.dropbear.plist"; if ([fileManager fileExistsAtPath:dropbear]) { Dropbear = [[SSHServiceTableCell alloc] initWithFrame: controlPos andSSHplist:dropbear]; } else if ([fileManager fileExistsAtPath:(dropbear = @"/Library/LaunchDaemons/au.asn.ucc.matt.dropbear.plist")]) { Dropbear = [[SSHServiceTableCell alloc] initWithFrame: controlPos andSSHplist:dropbear]; } /* Add this to the array of services, only if the sshd daemon exists */ if (Dropbear != nil) { [servicesArray addObject:Dropbear]; } } NSString *afpVisibility = [oneViewDictionary objectForKey:@"Visibility-AFP"]; if ([afpVisibility isEqualToString:@"YES"]) { /* Initialize the AFP Control */ /* Add this to the array of services, only if the AFP daemon exists */ if ([fileManager fileExistsAtPath:@"/Library/LaunchDaemons/com.core.afp.plist"]) { AFP = [[AFPServiceTableCell alloc] initWithFrame: controlPos andAFPplist:@"/Library/LaunchDaemons/com.core.afp.plist"]; [servicesArray addObject:AFP]; } } NSString *sambaVisibility = [oneViewDictionary objectForKey:@"Visibility-Samba"]; if ([sambaVisibility isEqualToString:@"YES"]) { /* Initialize the Samba Control */ /* Add this to the array of services, only if the Samba daemon exists */ if ([fileManager fileExistsAtPath:@"/usr/local/samba/smbd"]) { Samba = [[SambaServiceTableCell alloc] initWithFrame: controlPos andSAMplist:@"smbd -D.plist"]; [servicesArray addObject:Samba]; } } NSString *fireflyVisibility = [oneViewDictionary objectForKey:@"Visibility-Firefly"]; if ([fireflyVisibility isEqualToString:@"YES"]) { /* Initialize the FireFly Control */ /* Add this to the array of services, only if the Firefly daemon exists */ if ([fileManager fileExistsAtPath:@"/Library/LaunchDaemons/org.fireflymediaserver.mt-daapd.plist"]) { Firefly = [[FireflyServiceTableCell alloc] initWithFrame: controlPos andFFplist:@"/Library/LaunchDaemons/org.fireflymediaserver.mt-daapd.plist"]; [servicesArray addObject:Firefly]; } } NSString *apacheVisibility = [oneViewDictionary objectForKey:@"Visibility-Apache"]; if ([apacheVisibility isEqualToString:@"YES"]) { /* Initialize the Apache Control */ /* Add this to the array of services, only if the Apache daemon exists */ if ([fileManager fileExistsAtPath:@"/System/Library/LaunchDaemons/org.apache.httpd.plist"]) { Apache = [[ApacheServiceTableCell alloc] initWithFrame: controlPos andAPplist:@"/System/Library/LaunchDaemons/org.apache.httpd.plist"]; [servicesArray addObject:Apache]; } } NSString *iSpitVisibility = [oneViewDictionary objectForKey:@"Visibility-iSpit"]; if ([iSpitVisibility isEqualToString:@"YES"]) { /* Initialize the Apache Control */ /* Add this to the array of services, only if the iSpit daemon exists */ if ([fileManager fileExistsAtPath:@"/Library/LaunchDaemons/nl.robota.iphone.ispit.plist"]) { iSpit = [[iSpitServiceTableCell alloc] initWithFrame: controlPos andSPIplist:@"/Library/LaunchDaemons/nl.robota.iphone.ispit.plist"]; [servicesArray addObject:iSpit]; } } NSString *lighttpdVisibility = [oneViewDictionary objectForKey:@"Visibility-Lighttpd"]; if ([lighttpdVisibility isEqualToString:@"YES"]) { /* Initialize the Lighttpd Control */ /* Add this to the array of services, only if the Lighttpd daemon exists */ if ([fileManager fileExistsAtPath:@"/Library/LaunchDaemons/com.amcgregor.lighttpd.plist"]) { Lighttpd = [[LighttpdServiceTableCell alloc] initWithFrame: controlPos andLTPDplist:@"/Library/LaunchDaemons/com.amcgregor.lighttpd.plist"]; [servicesArray addObject:Lighttpd]; } } NSString *fileshareVisibility = [oneViewDictionary objectForKey:@"Visibility-Fileshare"]; if ([fileshareVisibility isEqualToString:@"YES"]) { /* Initialize the Filemanger Control */ /* Add this to the array of services, only if the AFP daemon exists */ if ([fileManager fileExistsAtPath:@"/System/Library/Internet Plug-Ins/File Download Plugin.webplugin/Info.plist"]) { Fileshare = [[FileShareServiceTableCell alloc] initWithFrame: controlPos andFSplist:@"test.plist"]; [servicesArray addObject:Fileshare]; } } NSString *autosnapVisibility = [oneViewDictionary objectForKey:@"Visibility-Autosnap"]; if ([autosnapVisibility isEqualToString:@"YES"]) { /* Initialize the autosnap Control */ /* Add this to the array of services, only if the Asnap daemon exists */ if ([fileManager fileExistsAtPath:@"/Library/LaunchDaemons/com.sadun.autosnap"]) { Autosnap = [[ASnapServiceTableCell alloc] initWithFrame: controlPos andASNplist:@"/var/root/bin/autosnap.plist"]; [servicesArray addObject:Autosnap]; } } NSString *socksVisibility = [oneViewDictionary objectForKey:@"Visibility-Socks"]; if ([socksVisibility isEqualToString:@"YES"]) { /* Initialize the Socks Server Control */ /* Add this to the array of services, only if the Socks Server daemon exists */ if ([fileManager fileExistsAtPath:@"/Library/LaunchDaemons/net.sourceforge.socks-relay.srelay.plist"]) { Socks = [[SocksServiceTableCell alloc] initWithFrame: controlPos andSOCKSplist:@"/Library/LaunchDaemons/net.sourceforge.socks-relay.srelay.plist"]; [servicesArray addObject:Socks]; } } NSString *tinyproxyVisibility = [oneViewDictionary objectForKey:@"Visibility-Tinyproxy"]; if ([tinyproxyVisibility isEqualToString:@"YES"]) { /* Initialize the Tinyproxy Control */ /* Add this to the array of services, only if the Tinyproxy daemon exists */ Tinyproxy = nil; NSString *tinyproxy = @"/System/Library/LaunchDaemons/com.wickedpsyched.iphone.tinyproxy.plist"; if ([fileManager fileExistsAtPath:tinyproxy]) { Tinyproxy = [[TinyproxyServiceTableCell alloc] initWithFrame: controlPos andTNPplist:tinyproxy]; } else if ([fileManager fileExistsAtPath:@"/System/Library/LaunchDaemonscom.wickedpsyched.iphone.tinyproxy.plist"]) { Tinyproxy = [[TinyproxyServiceTableCell alloc] initWithFrame: controlPos andTNPplist:@"/System/Library/LaunchDaemons/com.wickedpsyched.iphone.tinyproxy.plist"]; } if (Tinyproxy != nil) { [servicesArray addObject:Tinyproxy]; } } NSString *autolockVisibility = [oneViewDictionary objectForKey:@"Visibility-Autolock"]; if ([autolockVisibility isEqualToString:@"YES"]) { /* Initialize the Autolock Control Add this to the array of services */ Autolock = [[AutolockServiceTableCell alloc] initWithFrame: controlPos]; [servicesArray addObject:Autolock]; } //--------------------------------------------SettingsArray-------------------------------------------- /* Holds the services that are listed under the Network Services group */ settingsArray = [[[NSMutableArray alloc] init] retain]; /* Initialize the Edge Service Control */ EDGE2 = [[EDGEServiceTableCell2 alloc] initWithFrame: controlPos]; /* Add this to the array of services */ [settingsArray addObject:EDGE2]; /* Initialize the Bluetooth Control */ Bluetooth2 = [[BluetoothServiceTableCell2 alloc] initWithFrame: controlPos]; /* Add this to the array of services */ [settingsArray addObject:Bluetooth2]; /* Initialize the Wifi Control */ Wifi2 = [[WifiServiceTableCell2 alloc] initWithFrame: controlPos]; /* Add this to the array of services */ [settingsArray addObject:Wifi2]; /* Initialize the Airport Control */ Airplane2 = [[PhoneServiceTableCell2 alloc] initWithFrame: controlPos]; /* Add this to the array of services */ [settingsArray addObject:Airplane2]; /* Initialize the OpenSSH Control */ /* Add this to the array of services, only if the opensshd daemon exists */ if ([fileManager fileExistsAtPath:@"/Library/LaunchDaemons/com.openssh.sshd.plist"]) { SSH2 = [[SSHServiceTableCell2 alloc] initWithFrame: controlPos]; [settingsArray addObject:SSH2]; } /* Initialize the Dropbear SSH Control */ Dropbear2 = nil; NSString *dropbear = @"/System/Library/LaunchDaemons/au.asn.ucc.matt.dropbear.plist"; if ([fileManager fileExistsAtPath:dropbear]) { Dropbear2 = [[SSHServiceTableCell2 alloc] initWithFrame: controlPos]; } else if ([fileManager fileExistsAtPath:(dropbear = @"/Library/LaunchDaemons/au.asn.ucc.matt.dropbear.plist")]) { Dropbear2 = [[SSHServiceTableCell2 alloc] initWithFrame: controlPos]; } /* Add this to the array of services, only if the sshd daemon exists */ if (Dropbear2 != nil) { [settingsArray addObject:Dropbear2]; } /* Initialize the AFP Control */ /* Add this to the array of services, only if the AFP daemon exists */ if ([fileManager fileExistsAtPath:@"/Library/LaunchDaemons/com.core.afp.plist"]) { AFP2 = [[AFPServiceTableCell2 alloc] initWithFrame: controlPos]; [settingsArray addObject:AFP2]; } /* Initialize the Samba Control */ /* Add this to the array of services, only if the Samba daemon exists */ if ([fileManager fileExistsAtPath:@"/usr/local/samba/smbd"]) { Samba2 = [[SambaServiceTableCell2 alloc] initWithFrame: controlPos]; [settingsArray addObject:Samba2]; } /* Initialize the FireFly Control */ /* Add this to the array of services, only if the Firefly daemon exists */ if ([fileManager fileExistsAtPath:@"/Library/LaunchDaemons/org.fireflymediaserver.mt-daapd.plist"]) { Firefly2 = [[FireflyServiceTableCell2 alloc] initWithFrame: controlPos]; [settingsArray addObject:Firefly2]; } /* Initialize the Apache Control */ /* Add this to the array of services, only if the Apache daemon exists */ if ([fileManager fileExistsAtPath:@"/System/Library/LaunchDaemons/org.apache.httpd.plist"]) { Apache2 = [[ApacheServiceTableCell2 alloc] initWithFrame: controlPos]; [settingsArray addObject:Apache2]; } /* Initialize the iSpit Control */ /* Add this to the array of services, only if the iSpit daemon exists */ if ([fileManager fileExistsAtPath:@"/Library/LaunchDaemons/nl.robota.iphone.ispit.plist"]) { iSpit2 = [[iSpitServiceTableCell2 alloc] initWithFrame: controlPos]; [settingsArray addObject:iSpit2]; } /* Initialize the Lighttpd Control */ /* Add this to the array of services, only if the Lighttpd daemon exists */ if ([fileManager fileExistsAtPath:@"/Library/LaunchDaemons/com.amcgregor.lighttpd.plist"]) { Lighttpd2 = [[LighttpdServiceTableCell2 alloc] initWithFrame: controlPos]; [settingsArray addObject:Lighttpd2]; } /* Initialize the Filemshare Control */ /* Add this to the array of services, only if the fileshare daemon exists */ if ([fileManager fileExistsAtPath:@"/System/Library/Internet Plug-Ins/File Download Plugin.webplugin/Info.plist"]) { Fileshare2 = [[FileShareServiceTableCell2 alloc] initWithFrame: controlPos]; [settingsArray addObject:Fileshare2]; } if ([fileManager fileExistsAtPath:@"/Library/LaunchDaemons/com.sadun.autosnap"]) { Autosnap2 = [[ASnapServiceTableCell2 alloc] initWithFrame: controlPos]; [settingsArray addObject:Autosnap2]; } /* Initialize the Socks Server Control */ /* Add this to the array of services, only if the Socks Server daemon exists */ if ([fileManager fileExistsAtPath:@"/Library/LaunchDaemons/net.sourceforge.socks-relay.srelay.plist"]) { Socks2 = [[SocksServiceTableCell2 alloc] initWithFrame: controlPos]; [settingsArray addObject:Socks2]; } /* Initialize the Tinyproxy Control */ /* Add this to the array of services, only if the Tinyproxy daemon exists */ Tinyproxy2 = nil; NSString *tinyproxy = @"/System/Library/LaunchDaemons/com.wickedpsyched.iphone.tinyproxy.plist"; if ([fileManager fileExistsAtPath:tinyproxy]) { Tinyproxy2 = [[TinyproxyServiceTableCell2 alloc] initWithFrame: controlPos]; } else if ([fileManager fileExistsAtPath:@"/System/Library/LaunchDaemonscom.wickedpsyched.iphone.tinyproxy.plist"]) { Tinyproxy2 = [[TinyproxyServiceTableCell2 alloc] initWithFrame: controlPos]; } if (Tinyproxy2 != nil) { [settingsArray addObject:Tinyproxy2]; } /* Initialize the IP Control Add this to the array of services */ IP2 = [[IPTableCell2 alloc] initWithFrame: controlPos]; [settingsArray addObject:IP2]; /* Initialize the Autolock Control Add this to the array of services */ Autolock2 = [[AutolockServiceTableCell2 alloc] initWithFrame: controlPos]; [settingsArray addObject:Autolock2]; //----------------------------------------------------------------------------------------------------------------------- /*set the array*/ reloadArray = [servicesArray mutableCopy]; topBar = [[UINavigationBar alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 320.0f, 40.0f)]; [topBar pushNavigationItem: [[UINavigationItem alloc] initWithTitle: @"NetServices"]]; [topBar showButtonsWithLeftTitle:nil rightTitle:nil leftBack:nil]; [topBar enableAnimation]; [topBar setDelegate:self]; [topBar setBarStyle: 1]; /* Create the cells for the about information */ aboutVersion = [[UIPreferencesTableCell alloc] init]; [aboutVersion setTitle:[[NSString alloc] initWithFormat:@"Version %@", [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]]]; [aboutVersion _setDrawAsLabel: YES]; [aboutVersion setDrawsBackground: NO]; aboutCopyright = [[UIPreferencesTableCell alloc] init]; [aboutCopyright setTitle:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleCopyright"]]; [aboutCopyright _setDrawAsLabel: YES]; [aboutCopyright setDrawsBackground: NO]; /* Populate the Preference table */ [pref reloadData]; /*Set the views*/ [testview1 addSubview:topBar]; [testview1 addSubview:pref]; [testview2 addSubview:pref2]; // _transitionView is used for handling transitions of the views only // _barTransitionView is used to handle the button bars transitioning _transitionView = [ self createTransitionView ]; _barTransitionView = [ self createBarTransitionView ]; _buttonBar = [ self createButtonBar ]; [ self addSubview: _transitionView ]; [ self addSubview: _barTransitionView ]; [ _transitionView transition:6 toView:testview1 ]; [ _barTransitionView transition:6 toView:_buttonBar ]; } return self; } - (UITransitionView *)createTransitionView { UITransitionView *transitionView = [ [ UITransitionView alloc ] initWithFrame:CGRectMake(0,0,320,460)]; return transitionView; } - (UITransitionView *)createBarTransitionView { UITransitionView *transitionBarView = [ [ UITransitionView alloc ] initWithFrame:CGRectMake(0.0f, 419.0f, 320.0f, 49.0f)]; // Create empty(blank) view for to transition the button bar to blankView = [ [ UIView alloc ] initWithFrame:CGRectMake(0.0f, 419.0f, 320.0f, 49.0f)]; return transitionBarView; } - (UIButtonBar *)createButtonBar { UIButtonBar *buttonBar; buttonBar = [ [ UIButtonBar alloc ] initInView: self withFrame: CGRectMake(0.0f, 0.0f, 320.0f, 49.0f) withItemList: [ self buttonBarItems ] ]; [buttonBar setDelegate:self]; [buttonBar setBarStyle:1]; [buttonBar setButtonBarTrackingMode: 2]; int buttons[5] = { 1, 2, 3, 4, 5}; [buttonBar registerButtonGroup:0 withButtons:buttons withCount: 5]; [buttonBar showButtonGroup: 0 withDuration: 0.0f]; int tag; for(tag = 1; tag < 6; tag++) { [ [ buttonBar viewWithTag:tag ] setFrame:CGRectMake(2.0f + ((tag - 1) * 64.0f), 3.0f, 60.0f, 36.0f) ]; } [ buttonBar showSelectionForButton: 1]; return buttonBar; } - (NSArray *)buttonBarItems { return [ NSArray arrayWithObjects: [ NSDictionary dictionaryWithObjectsAndKeys: @"buttonBarItemTapped:", kUIButtonBarButtonAction, @"buttonSettings.png", kUIButtonBarButtonInfo, @"buttonSettings.png", kUIButtonBarButtonSelectedInfo, [ NSNumber numberWithInt: 1], kUIButtonBarButtonTag, self, kUIButtonBarButtonTarget, @"Services", kUIButtonBarButtonTitle, @"0", kUIButtonBarButtonType, nil ], [ NSDictionary dictionaryWithObjectsAndKeys: @"buttonBarItemTapped:", kUIButtonBarButtonAction, @"buttonSettings.png", kUIButtonBarButtonInfo, @"buttonSettings.png", kUIButtonBarButtonSelectedInfo, [ NSNumber numberWithInt: 2], kUIButtonBarButtonTag, self, kUIButtonBarButtonTarget, @"Settings", kUIButtonBarButtonTitle, @"0", kUIButtonBarButtonType, nil ], [ NSDictionary dictionaryWithObjectsAndKeys: @"buttonBarItemTapped:", kUIButtonBarButtonAction, @"imageup.png", kUIButtonBarButtonInfo, @"imagedown.png", kUIButtonBarButtonSelectedInfo, [ NSNumber numberWithInt: 3], kUIButtonBarButtonTag, self, kUIButtonBarButtonTarget, @"Button3", kUIButtonBarButtonTitle, @"0", kUIButtonBarButtonType, nil ], [ NSDictionary dictionaryWithObjectsAndKeys: @"buttonBarItemTapped:", kUIButtonBarButtonAction, @"imageup.png", kUIButtonBarButtonInfo, @"imagedown.png", kUIButtonBarButtonSelectedInfo, [ NSNumber numberWithInt: 4], kUIButtonBarButtonTag, self, kUIButtonBarButtonTarget, @"Button4", kUIButtonBarButtonTitle, @"0", kUIButtonBarButtonType, nil ], [ NSDictionary dictionaryWithObjectsAndKeys: @"buttonBarItemTapped:", kUIButtonBarButtonAction, @"imageup.png", kUIButtonBarButtonInfo, @"imagedown.png", kUIButtonBarButtonSelectedInfo, [ NSNumber numberWithInt: 5], kUIButtonBarButtonTag, self, kUIButtonBarButtonTarget, @"Button5", kUIButtonBarButtonTitle, @"0", kUIButtonBarButtonType, nil ], nil ]; } - (void)buttonBarItemTapped:(id) sender { int button = [ sender tag ]; switch (button) { case 1: if (currentView == CB_1) { } else { [self testAnimation]; [ _transitionView transition:0 toView:testview1 ]; currentView = CB_1; reloadArray = [servicesArray mutableCopy]; [pref reloadData]; } break; case 2: if (currentView == CB_2) { } else { [self testAnimation]; [ _transitionView transition:0 toView:testview2 ]; currentView = CB_2; reloadArray = [settingsArray mutableCopy]; [pref reloadData]; } break; case 3: if (currentView ==CB_3) { } else { [self testAnimation]; [ _transitionView transition:0 toView:testview3 ]; currentView = CB_3; } break; case 4: if (currentView == CB_4) { } else { [self testAnimation]; [ _transitionView transition:0 toView:testview4 ]; currentView = CB_4; } break; case 5: if (currentView == CB_5) { } else { [self testAnimation]; [ _transitionView transition:0 toView:testview5 ]; currentView = CB_5; } break; } } - (void)reloadButtonBar { [ _buttonBar removeFromSuperview ]; [ _buttonBar release ]; _buttonBar = [ self createButtonBar ]; } // Sample layerkit animation -(void)testAnimation { LKAnimation *animation = [LKTransition animation]; [animation setType: @"oglFlip"]; [animation setTimingFunction: [LKTimingFunction functionWithName: @"easeInEaseOut"]]; [animation setFillMode: @"extended"]; [animation setTransitionFlags: 3]; [animation setDuration: 10]; [animation setSpeed:0.35]; [animation setSubtype: @"fromLeft"]; [[self _layer] addAnimation: animation forKey: 0]; } /** * Called by the preference table to determine how many separate groups there are **/ - (int)numberOfGroupsInPreferencesTable:(UIPreferencesTable *)pref2 { return 2; } /** * Called by the preference table to setup how many unique rows are in each group **/ - (int)preferencesTable:(UIPreferencesTable *)pref2 numberOfRowsInGroup:(int)group { switch (group) { case 0: return [settingsArray count]; case 1: return 2; } } - (UIPreferencesTableCell *)preferencesTable:(UIPreferencesTable *)pref2 cellForGroup:(int)group { if (groupcell[group] == NULL) { groupcell[group] = [[UIPreferencesTableCell alloc] init]; } return groupcell[group]; } - (float)preferencesTable:(UIPreferencesTable *)pref2 heightForRow:(int)row inGroup:(int)group withProposedHeight:(float)proposed { switch (group) { case 0: return proposed; case 1: return 0.5*proposed; default: return 2*proposed; } } - (BOOL)preferencesTable:(UIPreferencesTable *)pref2 isLabelGroup:(int)group { return NO; } - (UIPreferencesTableCell *)preferencesTable:(UIPreferencesTable *)pref2 cellForRow:(int)row inGroup:(int)group { switch(group) { case 0: return [settingsArray objectAtIndex:row]; case 1: switch(row) { case 0: return aboutVersion; case 1: return aboutCopyright; } } } /*--------------------------------------------------------------------------------------------------------------*/ - (int)preferencesTable:(UIPreferencesTable *)pref numberOfRowsInGroup:(int)group { switch (group) { case 0: return [reloadArray count]; case 1: return 1; case 2: return 2; } } - (UIPreferencesTableCell *)preferencesTable:(UIPreferencesTable *)pref cellForGroup:(int)group { if (groupcell[group] == NULL) { groupcell[group] = [[UIPreferencesTableCell alloc] init]; } return groupcell[group]; } - (float)preferencesTable:(UIPreferencesTable *)pref heightForRow:(int)row inGroup:(int)group withProposedHeight:(float)proposed { switch (group) { case 0: return proposed; case 1: return proposed; case 2: return 0.5*proposed; default: return 2*proposed; } } - (BOOL)preferencesTable:(UIPreferencesTable *)pref isLabelGroup:(int)group { return NO; } - (UIPreferencesTableCell *)preferencesTable:(UIPreferencesTable *)pref cellForRow:(int)row inGroup:(int)group { switch(group) { case 0: return [reloadArray objectAtIndex:row]; NSLog(@"reloadArray:%@ -", reloadArray); case 1: return netServicesHeader; case 2: switch(row) { case 0: return aboutVersion; case 1: return aboutCopyright; } } } -(void)navigationBar:(UINavigationBar*)bar buttonClicked:(int)button{ NSLog(@"navbar clicked bar:%@ button:%i", bar, button); if (button == 0){ } if (button == 1){ system([[NSString stringWithFormat:@"/Applications/NetServices.app/ProgramFiles/bin/pkill NetServices"] UTF8String]); } } - (void)applicationWillTerminate { [netServicesHeader release]; [aboutVersion release]; [aboutCopyright release]; for (int i = 0; i < GROUPS; i++) [groupcell[i] release]; for(int i = 0; i < [reloadArray count]; i++) { [[reloadArray objectAtIndex:i] release]; [[reloadArray objectAtIndex:i] release]; } [reloadArray release]; for(int i = 0; i < [settingsArray count]; i++) { [[settingsArray objectAtIndex:i] release]; [[settingsArray objectAtIndex:i] release]; } [settingsArray release]; for(int i = 0; i < [servicesArray count]; i++) { [[servicesArray objectAtIndex:i] release]; [[servicesArray objectAtIndex:i] release]; } [servicesArray release]; } @end //@implementation ButtonBarView