//
//  Handling_Network_Connections_in_the_BackgroundAppDelegate.m
//  Handling Network Connections in the Background
//
//  Created by Vandad Nahavandipoor on 20/07/2011.
//  Copyright 2011 Pixolity Ltd. All rights reserved.
//

#import "Handling_Network_Connections_in_the_BackgroundAppDelegate.h"

@implementation Handling_Network_Connections_in_the_BackgroundAppDelegate

@synthesize window = _window;

///* 1 */
//- (BOOL)            application:(UIApplication *)application
//  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
//  
//  NSString *urlAsString = @"http://www.apple.com/pl/";
//  NSURL *url = [NSURL URLWithString:urlAsString];
//  NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
//  NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//  
//  [NSURLConnection 
//   sendAsynchronousRequest:urlRequest
//   queue:queue
//   completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
//     
//     if ([data length] > 0 &&
//         error != nil){
//       /* Dane zostają pobierane. */
//     }
//     else if ([data length] == 0 &&
//              error != nil){
//       /* Nie ma żadnych danych. */
//     }
//     else if (error != nil){
//       /* Wystąpił błąd, należy się upewnić o jego prawidłowym obsłużeniu. */
//     }
//     
//   }];
//  
//  self.window = [[UIWindow alloc] initWithFrame:
//                 [[UIScreen mainScreen] bounds]];
//  
//  self.window.backgroundColor = [UIColor whiteColor];
//  [self.window makeKeyAndVisible];
//  return YES;
//}

/* 2 */
//- (BOOL)            application:(UIApplication *)application
//  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
//  
//  /* Poniższy adres URL zastąp prowadzącym do naprawdę ogromnego pliku. */
//  NSString *urlAsString = @"http://www.apple.com/pl/";
//  NSURL *url = [NSURL URLWithString:urlAsString];
//  NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
//  NSError *error = nil;
//  
//  NSData *connectionData = [NSURLConnection  sendSynchronousRequest:urlRequest
//                                                  returningResponse:nil
//                                                              error:&error];
//  
//  if ([connectionData length] > 0 &&
//      error == nil){
//    
//  }
//  else if ([connectionData length] == 0 &&
//           error == nil){
//    
//  }
//  else if (error != nil){
//    
//  }
//  
//  self.window = [[UIWindow alloc] initWithFrame:
//                 [[UIScreen mainScreen] bounds]];
//  
//  self.window.backgroundColor = [UIColor whiteColor];
//  [self.window makeKeyAndVisible];
//  return YES;
//}

/* 3 */
- (BOOL)            application:(UIApplication *)application
  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
  
  dispatch_queue_t dispatchQueue = 
    dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
  
  dispatch_async(dispatchQueue, ^(void) {
    
    /* Poniższy adres URL zastąp prowadzącym do naprawdę ogromnego pliku. */
    NSString *urlAsString = @"http://www.apple.com/pl/";
    NSURL *url = [NSURL URLWithString:urlAsString];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
    NSError *error = nil;
    
    NSData *connectionData = [NSURLConnection  sendSynchronousRequest:urlRequest
                                                    returningResponse:nil
                                                                error:&error];
    
    if ([connectionData length] > 0 &&
        error == nil){
      
    }
    else if ([connectionData length] == 0 &&
             error == nil){
      
    }
    else if (error != nil){
      
    }
  });
  
  self.window = [[UIWindow alloc] initWithFrame:
                 [[UIScreen mainScreen] bounds]];
  
  self.window.backgroundColor = [UIColor whiteColor];
  [self.window makeKeyAndVisible];
  return YES;
}


- (void)applicationWillResignActive:(UIApplication *)application
{
  /*
   Ta metoda jest wywoływana, gdy aplikacja przechodzi ze stanu aktywnego do nieaktywnego. Może być wywołana w określonych sytuacjach (na przykład w chwili odbywania rozmowy telefonicznej lub po otrzymaniu wiadomości SMS) bądź kiedy użytkownik kończy działanie aplikacji. Metoda rozpoczyna proces przejścia do stanu pozostania w tle. Tę metodę można wykorzystać do wstrzymania wykonywania bieżących zadań, wyłączenia liczników czasu, zmniejszenia liczby klatek generowanych przez OpenGL ES. W grach ta metoda powinna być użyta do wstrzymania gry (pauza).
   */
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
  /*
   Tę metodę należy wykorzystać do zwolnienia zasobów współdzielonych, zapisania danych użytkownika, wyzerowania liczników czasu oraz do przechowania takiej ilości informacji o stanie, która pozwoli na przywrócenie aplikacji do stanu bieżącego. Jeżeli aplikacja obsługuje działanie w tle, w chwili kończenia działania należy wywołać tę metodę zamiast applicationWillTerminate:.
   */
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
  /*
   Ta metoda jest wywoływana podczas przechodzenia aplikacji ze stanu aktywnego do działania w tle. Można więc tutaj wycofać wiele zmian wprowadzonych w chwili przechodzenia do stanu działania w tle.
   */
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
  /*
   W tej metodzie można wznowić działanie zadań zatrzymanych (lub nieuruchomionych), gdy aplikacja była nieaktywna. Jeżeli aplikacja znajdowała się w trybie działania w tle, w metodzie można przeprowadzić odświeżenie interfejsu użytkownika.
   */
}

- (void)applicationWillTerminate:(UIApplication *)application
{
  /*
   Ta metoda jest wywoływana, gdy działanie aplikacji ma zostać zakończone. Zapoznaj się z opisem metody applicationDidEnterBackground:.
   */
}

@end
