Commit 6af60ea3 authored by Felix Paul Kühne's avatar Felix Paul Kühne

Fix file listing on some UPNP servers

parent 1f4524ca
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
/* generic data storage */ /* generic data storage */
NSString *_listTitle; NSString *_listTitle;
NSArray *_objectList; NSArray *_objectList;
NSMutableArray *_mutableObjectList;
NSUInteger _serverType; NSUInteger _serverType;
/* UPNP specifics */ /* UPNP specifics */
...@@ -69,6 +70,7 @@ ...@@ -69,6 +70,7 @@
_listTitle = header; _listTitle = header;
_UPNProotID = rootID; _UPNProotID = rootID;
_serverType = kVLCUPNPFileServer; _serverType = kVLCUPNPFileServer;
_mutableObjectList = [[NSMutableArray alloc] init];
} }
return self; return self;
...@@ -101,11 +103,11 @@ ...@@ -101,11 +103,11 @@
[[_UPNPdevice contentDirectory] BrowseWithObjectID:_UPNProotID BrowseFlag:@"BrowseDirectChildren" Filter:@"*" StartingIndex:@"0" RequestedCount:@"0" SortCriteria:@"+dc:title" OutResult:outResult OutNumberReturned:outNumberReturned OutTotalMatches:outTotalMatches OutUpdateID:outUpdateID]; [[_UPNPdevice contentDirectory] BrowseWithObjectID:_UPNProotID BrowseFlag:@"BrowseDirectChildren" Filter:@"*" StartingIndex:@"0" RequestedCount:@"0" SortCriteria:@"+dc:title" OutResult:outResult OutNumberReturned:outNumberReturned OutTotalMatches:outTotalMatches OutUpdateID:outUpdateID];
[_mutableObjectList removeAllObjects];
NSData *didl = [outResult dataUsingEncoding:NSUTF8StringEncoding]; NSData *didl = [outResult dataUsingEncoding:NSUTF8StringEncoding];
NSMutableArray *array; NSMutableArray *array;
MediaServerBasicObjectParser *parser = [[MediaServerBasicObjectParser alloc] initWithMediaObjectArray:array itemsOnly:NO]; MediaServerBasicObjectParser *parser = [[MediaServerBasicObjectParser alloc] initWithMediaObjectArray:_mutableObjectList itemsOnly:NO];
[parser parseFromData:didl]; [parser parseFromData:didl];
_objectList = [NSArray arrayWithArray:array];
} else if (_serverType == kVLCFTPServer) { } else if (_serverType == kVLCFTPServer) {
if ([_ftpServerPath isEqualToString:@"/"]) if ([_ftpServerPath isEqualToString:@"/"])
_listTitle = _ftpServerAddress; _listTitle = _ftpServerAddress;
...@@ -136,6 +138,9 @@ ...@@ -136,6 +138,9 @@
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{ {
if (_serverType == kVLCUPNPFileServer)
return _mutableObjectList.count;
return _objectList.count; return _objectList.count;
} }
...@@ -148,9 +153,9 @@ ...@@ -148,9 +153,9 @@
cell = [VLCLocalNetworkListCell cellWithReuseIdentifier:CellIdentifier]; cell = [VLCLocalNetworkListCell cellWithReuseIdentifier:CellIdentifier];
if (_serverType == kVLCUPNPFileServer) { if (_serverType == kVLCUPNPFileServer) {
MediaServer1BasicObject *item = _objectList[indexPath.row]; MediaServer1BasicObject *item = _mutableObjectList[indexPath.row];
if (![item isContainer]) { if (![item isContainer]) {
MediaServer1ItemObject *mediaItem = _objectList[indexPath.row]; MediaServer1ItemObject *mediaItem = _mutableObjectList[indexPath.row];
[cell setSubtitle: [NSString stringWithFormat:@"%0.2f MB", (float)([mediaItem.size intValue] / 1e6)]]; [cell setSubtitle: [NSString stringWithFormat:@"%0.2f MB", (float)([mediaItem.size intValue] / 1e6)]];
[cell setIsDirectory:NO]; [cell setIsDirectory:NO];
[cell setIcon:[UIImage imageNamed:@"blank"]]; [cell setIcon:[UIImage imageNamed:@"blank"]];
...@@ -186,13 +191,13 @@ ...@@ -186,13 +191,13 @@
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{ {
if (_serverType == kVLCUPNPFileServer) { if (_serverType == kVLCUPNPFileServer) {
MediaServer1BasicObject *item = _objectList[indexPath.row]; MediaServer1BasicObject *item = _mutableObjectList[indexPath.row];
if ([item isContainer]) { if ([item isContainer]) {
MediaServer1ContainerObject *container = _objectList[indexPath.row]; MediaServer1ContainerObject *container = _mutableObjectList[indexPath.row];
VLCLocalServerFolderListViewController *targetViewController = [[VLCLocalServerFolderListViewController alloc] initWithUPNPDevice:_UPNPdevice header:[container title] andRootID:[container objectID]]; VLCLocalServerFolderListViewController *targetViewController = [[VLCLocalServerFolderListViewController alloc] initWithUPNPDevice:_UPNPdevice header:[container title] andRootID:[container objectID]];
[[self navigationController] pushViewController:targetViewController animated:YES]; [[self navigationController] pushViewController:targetViewController animated:YES];
} else { } else {
MediaServer1ItemObject *item = _objectList[indexPath.row]; MediaServer1ItemObject *item = _mutableObjectList[indexPath.row];
MediaServer1ItemRes *resource = nil; MediaServer1ItemRes *resource = nil;
NSEnumerator *e = [[item resources] objectEnumerator]; NSEnumerator *e = [[item resources] objectEnumerator];
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment