Bläddra i källkod

live tv guide improvements

Luke Pulverenti 10 år sedan
förälder
incheckning
9682f60100

+ 4 - 0
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -1514,6 +1514,10 @@ namespace MediaBrowser.Api.Playback
                     request.PlaySessionId = val;
                 }
                 else if (i == 22)
+                {
+                    // api_key
+                }
+                else if (i == 23)
                 {
                     request.LiveStreamId = val;
                 }

+ 9 - 1
MediaBrowser.Server.Implementations/Localization/Server/server.json

@@ -1421,5 +1421,13 @@
     "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.",
     "OptionEnableFullSpeedConversion": "Enable full speed conversion",
     "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.",
-    "HeaderPlaylists": "Playlists"
+    "HeaderPlaylists": "Playlists",
+    "HeaderSelectDate": "Select Date",
+    "HeaderWelcomeExclamation": "Welcome!",
+    "HeaderMyPreferences": "My Preferences",
+    "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.",
+    "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.",
+    "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.",
+    "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?",
+    "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences."
 }

+ 56 - 12
MediaBrowser.Server.Implementations/Sync/SyncManager.cs

@@ -750,6 +750,9 @@ namespace MediaBrowser.Server.Implementations.Sync
 
             foreach (var jobItem in jobItemResult.Items)
             {
+                var requiresSaving = false;
+                var removeFromDevice = false;
+
                 if (request.LocalItemIds.Contains(jobItem.ItemId, StringComparer.OrdinalIgnoreCase))
                 {
                     var job = _repo.GetJob(jobItem.JobId);
@@ -759,13 +762,13 @@ namespace MediaBrowser.Server.Implementations.Sync
                     {
                         // Tell the device to remove it since it has been marked for removal
                         _logger.Debug("Adding ItemIdsToRemove {0} because IsMarkedForRemoval is set.", jobItem.ItemId);
-                        response.ItemIdsToRemove.Add(jobItem.ItemId);
+                        removeFromDevice = true;
                     }
                     else if (user == null)
                     {
                         // Tell the device to remove it since the user is gone now
                         _logger.Debug("Adding ItemIdsToRemove {0} because the user is no longer valid.", jobItem.ItemId);
-                        response.ItemIdsToRemove.Add(jobItem.ItemId);
+                        removeFromDevice = true;
                     }
                     else if (job.UnwatchedOnly)
                     {
@@ -777,23 +780,42 @@ namespace MediaBrowser.Server.Implementations.Sync
                             {
                                 // Tell the device to remove it since it has been played
                                 _logger.Debug("Adding ItemIdsToRemove {0} because it has been marked played.", jobItem.ItemId);
-                                response.ItemIdsToRemove.Add(jobItem.ItemId);
+                                removeFromDevice = true;
                             }
                         }
                         else
                         {
                             // Tell the device to remove it since it's no longer available
                             _logger.Debug("Adding ItemIdsToRemove {0} because it is no longer available.", jobItem.ItemId);
-                            response.ItemIdsToRemove.Add(jobItem.ItemId);
+                            removeFromDevice = true;
                         }
                     }
                 }
                 else
                 {
-                    _logger.Debug("Setting status to RemovedFromDevice for {0} because it is no longer on the device.", jobItem.ItemId);
+                    _logger.Debug("Setting status to Queued for {0} because it is no longer on the device.", jobItem.ItemId);
 
                     // Content is no longer on the device
-                    jobItem.Status = SyncJobItemStatus.RemovedFromDevice;
+                    if (jobItem.IsMarkedForRemoval)
+                    {
+                        jobItem.Status = SyncJobItemStatus.RemovedFromDevice;
+                    }
+                    else
+                    {
+                        jobItem.Status = SyncJobItemStatus.Queued;
+                    }
+                    requiresSaving = true;
+                }
+
+                if (removeFromDevice)
+                {
+                    response.ItemIdsToRemove.Add(jobItem.ItemId);
+                    jobItem.IsMarkedForRemoval = true;
+                    requiresSaving = true;
+                }
+
+                if (requiresSaving)
+                {
                     await UpdateSyncJobItemInternal(jobItem).ConfigureAwait(false);
                 }
             }
@@ -837,6 +859,9 @@ namespace MediaBrowser.Server.Implementations.Sync
 
             foreach (var jobItem in jobItemResult.Items)
             {
+                var requiresSaving = false;
+                var removeFromDevice = false;
+
                 if (request.SyncJobItemIds.Contains(jobItem.Id, StringComparer.OrdinalIgnoreCase))
                 {
                     var job = _repo.GetJob(jobItem.JobId);
@@ -846,13 +871,13 @@ namespace MediaBrowser.Server.Implementations.Sync
                     {
                         // Tell the device to remove it since it has been marked for removal
                         _logger.Debug("Adding ItemIdsToRemove {0} because IsMarkedForRemoval is set.", jobItem.Id);
-                        response.ItemIdsToRemove.Add(jobItem.Id);
+                        removeFromDevice = true;
                     }
                     else if (user == null)
                     {
                         // Tell the device to remove it since the user is gone now
                         _logger.Debug("Adding ItemIdsToRemove {0} because the user is no longer valid.", jobItem.Id);
-                        response.ItemIdsToRemove.Add(jobItem.Id);
+                        removeFromDevice = true;
                     }
                     else if (job.UnwatchedOnly)
                     {
@@ -864,23 +889,42 @@ namespace MediaBrowser.Server.Implementations.Sync
                             {
                                 // Tell the device to remove it since it has been played
                                 _logger.Debug("Adding ItemIdsToRemove {0} because it has been marked played.", jobItem.Id);
-                                response.ItemIdsToRemove.Add(jobItem.Id);
+                                removeFromDevice = true;
                             }
                         }
                         else
                         {
                             // Tell the device to remove it since it's no longer available
                             _logger.Debug("Adding ItemIdsToRemove {0} because it is no longer available.", jobItem.Id);
-                            response.ItemIdsToRemove.Add(jobItem.Id);
+                            removeFromDevice = true;
                         }
                     }
                 }
                 else
                 {
-                    _logger.Debug("Setting status to RemovedFromDevice for {0} because it is no longer on the device.", jobItem.Id);
+                    _logger.Debug("Setting status to Queued for {0} because it is no longer on the device.", jobItem.Id);
 
                     // Content is no longer on the device
-                    jobItem.Status = SyncJobItemStatus.RemovedFromDevice;
+                    if (jobItem.IsMarkedForRemoval)
+                    {
+                        jobItem.Status = SyncJobItemStatus.RemovedFromDevice;
+                    }
+                    else
+                    {
+                        jobItem.Status = SyncJobItemStatus.Queued;
+                    }
+                    requiresSaving = true;
+                }
+
+                if (removeFromDevice)
+                {
+                    response.ItemIdsToRemove.Add(jobItem.Id);
+                    jobItem.IsMarkedForRemoval = true;
+                    requiresSaving = true;
+                }
+
+                if (requiresSaving)
+                {
                     await UpdateSyncJobItemInternal(jobItem).ConfigureAwait(false);
                 }
             }

+ 7 - 0
MediaBrowser.ServerApplication/ServerNotifyIcon.cs

@@ -166,6 +166,13 @@ namespace MediaBrowser.ServerApplication
 
                 contextMenuStrip1.Invoke(action);
             }
+
+            notifyIcon1.DoubleClick += notifyIcon1_DoubleClick;
+        }
+
+        void notifyIcon1_DoubleClick(object sender, EventArgs e)
+        {
+            BrowserLauncher.OpenDashboard(_appHost, _logger);
         }
 
         private void LocalizeText()