From 44ce5688b17cb6c0de7e8ed7d44977e0c1d0c3d1 Mon Sep 17 00:00:00 2001
From: Diogo Simao Marques <dogo@videolabs.io>
Date: Mon, 27 Jan 2025 13:30:52 +0100
Subject: [PATCH] VLCNetworkServerBrowserViewController: Remove the play all
 button when necessary

The play all button is now hidden when necessary to avoid having it being
displayed when the view is empty.
---
 .../View Controllers/VLCNetworkListViewController.h  |  3 +++
 .../View Controllers/VLCNetworkListViewController.m  | 12 +++++++++++-
 .../VLCNetworkServerBrowserViewController.m          | 11 ++++++++++-
 3 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/Sources/Network/Server Browsing/View Controllers/VLCNetworkListViewController.h b/Sources/Network/Server Browsing/View Controllers/VLCNetworkListViewController.h
index 24b5d04b5..157e2247a 100644
--- a/Sources/Network/Server Browsing/View Controllers/VLCNetworkListViewController.h	
+++ b/Sources/Network/Server Browsing/View Controllers/VLCNetworkListViewController.h	
@@ -25,4 +25,7 @@ extern NSString *VLCNetworkListCellIdentifier;
 - (IBAction)playAllAction:(id)sender;
 - (void)tableView:(UITableView *)tableView willDisplayCell:(VLCNetworkListCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;
 
+- (void)addPlayAllAction;
+- (void)removePlayAllAction;
+
 @end
diff --git a/Sources/Network/Server Browsing/View Controllers/VLCNetworkListViewController.m b/Sources/Network/Server Browsing/View Controllers/VLCNetworkListViewController.m
index 05cac4497..bfa9b2ef1 100644
--- a/Sources/Network/Server Browsing/View Controllers/VLCNetworkListViewController.m	
+++ b/Sources/Network/Server Browsing/View Controllers/VLCNetworkListViewController.m	
@@ -91,7 +91,7 @@ NSString *VLCNetworkListCellIdentifier = @"VLCNetworkListCellIdentifier";
     }
     self.definesPresentationContext = YES;
 
-    self.navigationItem.rightBarButtonItems = @[[UIBarButtonItem themedPlayAllButtonWithTarget:self andSelector:@selector(playAllAction:)]];
+    [self addPlayAllAction];
 
     _searchData = [[NSMutableArray alloc] init];
     [_searchData removeAllObjects];
@@ -138,6 +138,16 @@ NSString *VLCNetworkListCellIdentifier = @"VLCNetworkListCellIdentifier";
     [_activityIndicator stopAnimating];
 }
 
+- (void)addPlayAllAction
+{
+    self.navigationItem.rightBarButtonItems = @[[UIBarButtonItem themedPlayAllButtonWithTarget:self andSelector:@selector(playAllAction:)]];
+}
+
+- (void)removePlayAllAction
+{
+    self.navigationItem.rightBarButtonItems = @[];
+}
+
 #pragma mark - Table view data source
 
 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
diff --git a/Sources/Network/Server Browsing/View Controllers/VLCNetworkServerBrowserViewController.m b/Sources/Network/Server Browsing/View Controllers/VLCNetworkServerBrowserViewController.m
index 101eb20f9..808655392 100644
--- a/Sources/Network/Server Browsing/View Controllers/VLCNetworkServerBrowserViewController.m	
+++ b/Sources/Network/Server Browsing/View Controllers/VLCNetworkServerBrowserViewController.m	
@@ -97,6 +97,7 @@
     if (_serverBrowser.items.count == 0 &&
         [(VLCNetworkServerBrowserVLCMedia *)_serverBrowser retrieveParsedStatus] == VLCMediaParsedStatusDone) {
         [self stopActivityIndicator];
+        [self removePlayAllAction];
     }
 }
 
@@ -126,6 +127,7 @@
 - (void)networkServerBrowserEndParsing:(id<VLCNetworkServerBrowser>)networkBrowser
 {
     [self stopActivityIndicator];
+    [self removePlayAllActionIfNeeded];
 }
 
 - (void)networkServerBrowser:(id<VLCNetworkServerBrowser>)networkBrowser requestDidFailWithError:(NSError *)error
@@ -153,11 +155,18 @@
     [[VLCActivityManager defaultManager] networkActivityStarted];
 }
 
--(void)handleRefresh
+- (void)handleRefresh
 {
     [self update];
 }
 
+- (void)removePlayAllActionIfNeeded
+{
+    if ([_serverBrowser.items count] == 0) {
+        [self removePlayAllAction];
+    }
+}
+
 #pragma mark - server browser item specifics
 
 - (void)didSelectItem:(id<VLCNetworkServerBrowserItem>)item index:(NSUInteger)index singlePlayback:(BOOL)singlePlayback
-- 
GitLab