Skip to content
This repository was archived by the owner on May 4, 2021. It is now read-only.

Commit e2acc13

Browse files
committed
Added WebDAV support
1 parent c51eb8f commit e2acc13

10 files changed

+198
-159
lines changed

Classes/AppDelegate.h

-3
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,6 @@
3838
@end
3939

4040
@interface AppDelegate (WebServer) <WebServerDelegate>
41-
@property(nonatomic, readonly) WebServer* webServer;
42-
- (void) enableWebServer;
43-
- (void) disableWebServer;
4441
@end
4542

4643
@interface AppDelegate (StoreKit) <SKPaymentTransactionObserver, SKProductsRequestDelegate>

Classes/AppDelegate.m

+2-36
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,6 @@ + (void) initialize {
173173
// Setup initial user defaults
174174
NSMutableDictionary* defaults = [[NSMutableDictionary alloc] init];
175175
[defaults setObject:[NSNumber numberWithInteger:0] forKey:kDefaultKey_LibraryVersion];
176-
[defaults setObject:[NSNumber numberWithBool:YES] forKey:kDefaultKey_ServerEnabled];
177176
[defaults setObject:[NSNumber numberWithInteger:kServerMode_Trial] forKey:kDefaultKey_ServerMode];
178177
[defaults setObject:[NSNumber numberWithInteger:kTrialMaxUploads] forKey:kDefaultKey_UploadsRemaining];
179178
[defaults setObject:[NSNumber numberWithBool:NO] forKey:kDefaultKey_ScreenDimmed];
@@ -260,10 +259,8 @@ - (BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(
260259
repeats:YES];
261260
[[NSRunLoop currentRunLoop] addTimer:_updateTimer forMode:NSRunLoopCommonModes];
262261

263-
// Start web server if necessary
264-
if ([[NSUserDefaults standardUserDefaults] boolForKey:kDefaultKey_ServerEnabled]) {
265-
[self enableWebServer];
266-
}
262+
// Initialize web server
263+
[[WebServer sharedWebServer] setDelegate:self];
267264

268265
// Show window
269266
self.window.backgroundColor = nil;
@@ -304,13 +301,6 @@ - (BOOL) application:(UIApplication*)application openURL:(NSURL*)url sourceAppli
304301
return NO;
305302
}
306303

307-
- (void) applicationWillTerminate:(UIApplication*)application {
308-
// Stop web server
309-
[_webServer stop];
310-
311-
[super applicationWillTerminate:application];
312-
}
313-
314304
- (void) saveState {
315305
[(LibraryViewController*)self.viewController saveState];
316306
}
@@ -337,10 +327,6 @@ - (void) setScreenDimmed:(BOOL)flag {
337327

338328
@implementation AppDelegate (WebServer)
339329

340-
- (WebServer*) webServer {
341-
return _webServer;
342-
}
343-
344330
- (NSString*) _serverMode {
345331
switch ([[NSUserDefaults standardUserDefaults] integerForKey:kDefaultKey_ServerMode]) {
346332
case kServerMode_Limited: return @"Limited";
@@ -350,16 +336,6 @@ - (NSString*) _serverMode {
350336
return nil;
351337
}
352338

353-
- (void) enableWebServer {
354-
if (_webServer == nil) {
355-
_webServer = [[WebServer alloc] init];
356-
_webServer.serverDelegate = self;
357-
[_webServer start];
358-
359-
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:kDefaultKey_ServerEnabled];
360-
}
361-
}
362-
363339
- (void) webServerDidConnect:(WebServer*)server {
364340
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
365341
}
@@ -401,16 +377,6 @@ - (void) webServerDidDisconnect:(WebServer*)server {
401377
}
402378
}
403379

404-
- (void) disableWebServer {
405-
if (_webServer != nil) {
406-
[_webServer stop];
407-
[_webServer release];
408-
_webServer = nil;
409-
410-
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:kDefaultKey_ServerEnabled];
411-
}
412-
}
413-
414380
@end
415381

416382
@implementation AppDelegate (Events)

Classes/LibraryViewController.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
UIButton* _forceUpdateButton;
2929
UIButton* _markReadButton;
3030
UIButton* _markNewButton;
31-
UISwitch* _serverSwitch;
31+
UISegmentedControl* _serverControl;
3232
UILabel* _addressLabel;
3333
UILabel* _infoLabel;
3434
UILabel* _versionLabel;
@@ -68,7 +68,7 @@
6868
@property(nonatomic, retain) IBOutlet UIButton* forceUpdateButton;
6969
@property(nonatomic, retain) IBOutlet UIButton* markReadButton;
7070
@property(nonatomic, retain) IBOutlet UIButton* markNewButton;
71-
@property(nonatomic, retain) IBOutlet UISwitch* serverSwitch;
71+
@property(nonatomic, retain) IBOutlet UISegmentedControl* serverControl;
7272
@property(nonatomic, retain) IBOutlet UILabel* addressLabel;
7373
@property(nonatomic, retain) IBOutlet UILabel* infoLabel;
7474
@property(nonatomic, retain) IBOutlet UILabel* versionLabel;

Classes/LibraryViewController.m

+6-26
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ @implementation LibraryViewController
7474

7575
@synthesize gridView=_gridView, navigationBar=_navigationBar, segmentedControl=_segmentedControl, menuView=_menuView,
7676
markReadButton=_markReadButton, markNewButton=_markNewButton, updateButton=_updateButton,
77-
forceUpdateButton=_forceUpdateButton, serverSwitch=_serverSwitch, addressLabel=_addressLabel,
77+
forceUpdateButton=_forceUpdateButton, serverControl=_serverControl, addressLabel=_addressLabel,
7878
infoLabel=_infoLabel, versionLabel=_versionLabel, dimmingSwitch=_dimmingSwitch, purchaseButton=_purchaseButton,
7979
restoreButton=_restoreButton;
8080

@@ -94,27 +94,11 @@ - (void) _updateStatistics {
9494
}
9595

9696
- (void) _updateTimer:(NSTimer*)timer {
97-
GCDWebServer* server = [(AppDelegate*)[AppDelegate sharedInstance] webServer];
9897
if (timer == nil) {
99-
_serverSwitch.on = server ? YES : NO;
100-
}
101-
if (server) {
102-
NSURL* serverURL = server.serverURL;
103-
if (serverURL) {
104-
NSURL* bonjourServerURL = server.bonjourServerURL;
105-
if (bonjourServerURL) {
106-
_addressLabel.text = [NSString stringWithFormat:NSLocalizedString(@"ADDRESS_FORMAT_BONJOUR", nil), [bonjourServerURL absoluteString], [serverURL absoluteString]];
107-
} else {
108-
_addressLabel.text = [NSString stringWithFormat:NSLocalizedString(@"ADDRESS_FORMAT_IP", nil), [serverURL absoluteString]];
109-
}
110-
} else {
111-
_addressLabel.text = NSLocalizedString(@"ADDRESS_UNAVAILABLE", nil);
112-
}
113-
_addressLabel.textColor = [UIColor darkGrayColor];
114-
} else {
115-
_addressLabel.text = NSLocalizedString(@"ADDRESS_UNAVAILABLE", nil);
116-
_addressLabel.textColor = [UIColor grayColor];
98+
_serverControl.selectedSegmentIndex = [[WebServer sharedWebServer] type];
11799
}
100+
_addressLabel.text = [[WebServer sharedWebServer] addressLabel];
101+
_addressLabel.textColor = [[WebServer sharedWebServer] type] != kWebServerType_Off ? [UIColor darkGrayColor] : [UIColor grayColor];
118102
}
119103

120104
#if __DISPLAY_THUMBNAILS_IN_BACKGROUND__
@@ -472,7 +456,7 @@ - (void) viewDidUnload {
472456
self.markNewButton = nil;
473457
self.updateButton = nil;
474458
self.forceUpdateButton = nil;
475-
self.serverSwitch = nil;
459+
self.serverControl = nil;
476460
self.addressLabel = nil;
477461
self.infoLabel = nil;
478462
self.versionLabel = nil;
@@ -955,11 +939,7 @@ - (IBAction) forceUpdate:(id)sender {
955939
}
956940

957941
- (IBAction) updateServer:(id)sender {
958-
if (_serverSwitch.on) {
959-
[(AppDelegate*)[AppDelegate sharedInstance] enableWebServer];
960-
} else {
961-
[(AppDelegate*)[AppDelegate sharedInstance] disableWebServer];
962-
}
942+
[[WebServer sharedWebServer] setType:_serverControl.selectedSegmentIndex];
963943
[self _updateTimer:nil];
964944
}
965945

Classes/WebServer.h

+14-11
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,14 @@
1313
// You should have received a copy of the GNU General Public License
1414
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1515

16-
#if __USE_WEBDAV_SERVER__
1716
#import "GCDWebDAVServer.h"
18-
#else
1917
#import "GCDWebUploader.h"
20-
#endif
18+
19+
typedef enum {
20+
kWebServerType_Off = 0,
21+
kWebServerType_Website = 1,
22+
kWebServerType_WebDAV = 2
23+
} WebServerType;
2124

2225
@class WebServer;
2326

@@ -29,14 +32,14 @@
2932
- (void) webServerDidDisconnect:(WebServer*)server;
3033
@end
3134

32-
#if __USE_WEBDAV_SERVER__
33-
@interface WebServer : GCDWebDAVServer <GCDWebDAVServerDelegate>
34-
#else
35-
@interface WebServer : GCDWebUploader <GCDWebUploaderDelegate>
36-
#endif
37-
{
35+
@interface WebServer : NSObject <GCDWebUploaderDelegate, GCDWebDAVServerDelegate> {
3836
@private
39-
id<WebServerDelegate> _serverDelegate;
37+
id<WebServerDelegate> _delegate;
38+
WebServerType _type;
39+
GCDWebServer* _webServer;
4040
}
41-
@property(nonatomic, assign) id<WebServerDelegate> serverDelegate;
41+
+ (WebServer*) sharedWebServer;
42+
@property(nonatomic, assign) id<WebServerDelegate> delegate;
43+
@property(nonatomic) WebServerType type;
44+
@property(nonatomic, readonly) NSString* addressLabel;
4245
@end

0 commit comments

Comments
 (0)