Subversion Repository Public Repository

Nextrek

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
//
//  DataManager.m
//  Location
//
//  Created by Fabrizio on 11/12/12.
//  Copyright (c) 2012 Odyssey. All rights reserved.
//

#import "DataManager.h"
#import "Reachability.h"
//#import "GADBannerView.h"
#import "JSONKit.h"

#import "Channel.h"
#import "Programma.h"

@implementation DataManager

@synthesize purchased;
@synthesize allChannels;
@synthesize channelEpg;

@synthesize channelOnAirIndex;

static DataManager *instance;

+(DataManager *) getInstance {
	if (!instance) {
		instance = [[DataManager alloc] init];
	}
	return instance;
}

#pragma mark -
#pragma mark Initialisation & View Admin

- (id) init {
	if((self = [super init])) {
		instance = self;
	}
	return self;
}

- (void)savePurchase {
	NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
	
    [prefs setBool:purchased forKey:@"removeADV"];
    [prefs synchronize];
    
    if(purchased)
        NSLog(@"SAVE PURCHASE - IS PURCHASED");
    else
        NSLog(@"SAVE PURCHASE - IS NOT PURCHASED");
}

- (void)loadPurchase {
	NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
	
	self.purchased = [prefs boolForKey:@"removeADV"];
    
    if(purchased)
        NSLog(@"LOAD PURCHASE - IS PURCHASED");
    else
        NSLog(@"LOAD PURCHASE - IS NOT PURCHASED");
}

- (void)saveChannelOnAir:(int)indexToSave {
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
	
    [prefs setInteger:indexToSave forKey:@"channelOnAir"];
    [prefs synchronize];
    LOG_INFO_X(@"INDEX SAVED: %d", indexToSave);
}

- (void)loadChannelOnAir {
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    LOG_INFO_X(@"INDEX LOADED: %d", [prefs integerForKey:@"channelOnAir"]);
    
    if([prefs integerForKey:@"channelOnAir"] != 0) {
        self.channelOnAirIndex = [prefs integerForKey:@"channelOnAir"];
    }
    else {
        self.channelOnAirIndex = 0;
    }
}

- (BOOL) testConnection {
    BOOL isReachable;
    
    Reachability* reach = [Reachability reachabilityWithHostName:@"www.apple.com"];
    
    if ([reach isReachableViaWiFi] || [reach isReachableViaWWAN]) {
        isReachable = YES;
    }
    else {
        isReachable = NO;
    }
    
    return isReachable;
}

- (void) handleADV:(UIView*)callerView callerVC:(UIViewController*)callerVC {
    
    NSLog(@"Version ADSMOB:%@", [GADRequest sdkVersion]);
    
    if(!purchased){
        CGPoint origin = CGPointMake(0.0, callerView.frame.size.width - CGSizeFromGADAdSize(kGADAdSizeSmartBannerLandscape).height);
        
        if(!bannerView_){
            bannerView_ = [[GADBannerView alloc] initWithAdSize:kGADAdSizeSmartBannerLandscape origin:origin];
        }
        
        bannerView_.adUnitID = BANNER_ID;
        bannerView_.rootViewController = callerVC;
        [callerView addSubview:bannerView_];
        [callerView sendSubviewToBack:bannerView_];
                
        [bannerView_ loadRequest:[GADRequest request]];
    }
    else {
        if(bannerView_){
            [bannerView_ removeFromSuperview];
        }
    }
}

- (void) parseChannelListResponse:(NSData*)aNSData {
    
    NSDictionary* dataDict = (NSDictionary*)[aNSData objectFromJSONData];
    
    if([[dataDict description] length] <= 3) {
        return;
    }
    else {
        LOG_INFO_X(@"dataDict DESCRIPTION: %d", [[dataDict description] length]);
        
        LOG_INFO_X(@"dataDict - KEYS: %@", [dataDict allKeys]);
        LOG_INFO_X(@"dataDict - VALUES: %@", [dataDict allValues]);
        
        LOG_INFO_X(@"dataDict - KEYS COUNT: %d", [[dataDict allKeys]count]);
        LOG_INFO_X(@"dataDict - VALUES COUNT: %d", [[dataDict allValues]count]);
        
        allChannels = [NSMutableArray array];
        
        for (NSDictionary *dictionary in [dataDict allValues]) {
            Channel *channel = [Channel alloc];
            
            channel.hasEPG = [[dictionary objectForKey:@"hasEPG"]boolValue];
            
            NSString *channelLogoUrl = [dictionary objectForKey:@"logo"];
            channelLogoUrl = [channelLogoUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
            channel.logoURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", HOST_POCKET_TV, channelLogoUrl]];
            
            channel.nome = [dictionary objectForKey:@"nome"];
            channel.streaming_url = [dictionary objectForKey:@"streaming_url"];
            
            LOG_INFO_X(@"\nHAS EPG: %d", channel.hasEPG);
            LOG_INFO_X(@"LOGO: %@", [NSString stringWithFormat:@"%@%@", HOST_POCKET_TV, channelLogoUrl]);
            LOG_INFO_X(@"NOME: %@", channel.nome);
            LOG_INFO_X(@"STREAMING_URL: %@", channel.streaming_url);
            
            [allChannels addObject:channel];
        }
        
        NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"nome" ascending:YES];
        [allChannels sortUsingDescriptors:[NSArray arrayWithObject:sort]];
    }
}

- (NSArray*) parseEpgChannelResponse:(NSData*)aNSData {
    NSDictionary* dataDict = (NSDictionary*)[aNSData objectFromJSONData];
    NSArray *array = [dataDict objectForKey:[[dataDict allKeys]objectAtIndex:0]];
       
    channelEpg = [NSMutableArray array];
    
    for (NSDictionary *dictionary in array) {
        Programma *programma = [Programma alloc];
        
        programma.titolo = [dictionary objectForKey:@"titolo"];
        programma.tipo = [dictionary objectForKey:@"tipo"];
        programma.timestamp = [Utilities convertDateFromString:[dictionary objectForKey:@"timestamp"]];
        
        programma.durata = [[dictionary objectForKey:@"durata"]intValue];

        LOG_INFO_X(@"\nPROGRAMMA TITOLO: %@", programma.titolo);
        LOG_INFO_X(@"PROGRAMMA TIPO: %@", programma.tipo);
        LOG_INFO_X(@"PROGRAMMA DURATA: %d", programma.durata);
        
        [channelEpg addObject:programma];
    }

    return channelEpg;    
}


@end

Commits for Nextrek/iOS/PocketVision/PocketVision/DataManager.m

Diff revisions: vs.
Revision Author Commited Message
62 FAquili picture FAquili Sat 18 Jan, 2014 16:39:26 +0000

PocketVision 1.0