public async void RefreshStatus() { RefreshStatusResult result = null; if (Proxies.IsInitialized) { try { result = new RefreshStatusResult() { ActiveRecordings = await Proxies.ControlService.GetActiveRecordings(), LiveStreams = await Proxies.ControlService.GetLiveStreams(), UpcomingRecording = await Proxies.ControlService.GetNextUpcomingRecording(false) }; } catch { result = null; } } if (result == null) { _activeRecordings = new ActiveRecording[0]; _liveStreams = new LiveStream[0]; _upcomingRecording = null; SetStatusIcon(ServerStatus.NotConnected); } else { _activeRecordings = result.ActiveRecordings; _liveStreams = result.LiveStreams; _upcomingRecording = result.UpcomingRecording; SetStatusIcon(GetServerStatus(result.ActiveRecordings, result.LiveStreams)); } }
public void Show(Point location, ServerStatus serverStatus, IList <ActiveRecording> activeRecordings, IList <LiveStream> liveStreams, UpcomingRecording upcomingRecording) { _serverStatus = serverStatus; _activeRecordings = activeRecordings; _liveStreams = liveStreams; _upcomingRecording = upcomingRecording; int fontHeight = SystemFonts.MessageBoxFont.Height; int height = _programsTop; if (_serverStatus != ServerStatus.NotConnected) { if (activeRecordings.Count > 0) { height += fontHeight; height += (2 * fontHeight + _programsGap) * activeRecordings.Count; if (liveStreams.Count > 0 || upcomingRecording != null) { height += _programsExtraGap; } } if (liveStreams.Count > 0) { height += fontHeight; height += (fontHeight + _programsGap) * liveStreams.Count; if (upcomingRecording != null) { height += _programsExtraGap; } } if (upcomingRecording != null) { height += 2 * fontHeight + _programsGap; } } height += fontHeight; height += 10; this.Size = new Size(this.Width, height); int left = location.X; int top; Rectangle workArea = Screen.GetWorkingArea(location); if (workArea.Contains(location)) { top = location.Y - 12 - this.Height; } else { top = int.MaxValue; } this.Opacity = 0.0; SetBounds(Math.Min(left, workArea.Width - this.Width - 1), Math.Min(top, workArea.Height - this.Height), this.Width, this.Height); this.Show(); }
internal static string GetIconImageFileName(ScheduleType scheduleType, bool isPartOfSeries, UpcomingCancellationReason cancellationReason, UpcomingRecording upcomingRecording) { if (upcomingRecording != null) { return(GetIconImageFileName(scheduleType, isPartOfSeries, cancellationReason, true, upcomingRecording.CardChannelAllocation, upcomingRecording.ConflictingPrograms)); } else { return(GetIconImageFileName(scheduleType, isPartOfSeries, cancellationReason, false, null, null)); } }
private void RefreshBotPersonalMessage() { if (_messenger.Owner != null) { string message = "Idle"; PresenceStatus status = PresenceStatus.Online; using (ControlServiceAgent tvControlAgent = new ControlServiceAgent()) { ActiveRecording[] activeRecordings = tvControlAgent.GetActiveRecordings(); if (activeRecordings.Length > 0) { message = "Recording"; status = PresenceStatus.Busy; } else { LiveStream[] liveStreams = tvControlAgent.GetLiveStreams(); if (liveStreams.Length > 0) { message = "Streaming"; status = PresenceStatus.Away; } else { UpcomingRecording upcomingRecording = tvControlAgent.GetNextUpcomingRecording(false); if (upcomingRecording != null) { message = "Waiting for next scheduled recording"; } } } } if (_messenger.Owner.PersonalMessage == null || _messenger.Owner.PersonalMessage.Message != message) { _messenger.Owner.PersonalMessage = new PersonalMessage(message); } if (_messenger.Owner.Status != status) { _messenger.Owner.Status = status; } } }
private void _refreshStatusBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Error != null || e.Cancelled || e.Result == null) { _activeRecordings = new ActiveRecording[0]; _liveStreams = new LiveStream[0]; _upcomingRecording = null; SetStatusIcon(ServerStatus.NotConnected); } else { RefreshStatusResult result = (RefreshStatusResult)e.Result; _activeRecordings = result.ActiveRecordings; _liveStreams = result.LiveStreams; _upcomingRecording = result.UpcomingRecording; SetStatusIcon(GetServerStatus(result.ActiveRecordings, result.LiveStreams)); } }
private void RefreshBotPersonalMessage() { if (_messenger.Owner != null) { string message = "Idle"; PresenceStatus status = PresenceStatus.Online; var activeRecordings = Proxies.ControlService.GetActiveRecordings().Result; if (activeRecordings.Count > 0) { message = "Recording"; status = PresenceStatus.Busy; } else { var liveStreams = Proxies.ControlService.GetLiveStreams().Result; if (liveStreams.Count > 0) { message = "Streaming"; status = PresenceStatus.Away; } else { UpcomingRecording upcomingRecording = Proxies.ControlService.GetNextUpcomingRecording(false).Result; if (upcomingRecording != null) { message = "Waiting for next scheduled recording"; } } } if (_messenger.Owner.PersonalMessage == null || _messenger.Owner.PersonalMessage.Message != message) { _messenger.Owner.PersonalMessage = new PersonalMessage(message); } if (_messenger.Owner.Status != status) { _messenger.Owner.Status = status; } } }
private GUIListItem CreateListItem(UpcomingProgram upcomingProgram, UpcomingRecording recording, ScheduleSummary schedule) { GUIListItem item = new GUIListItem(); if (schedule != null) { //create list with schedules item.Label = schedule.Name; item.IsFolder = true; Utils.SetDefaultIcons(item); item.PinImage = Utility.GetLogoForSchedule(schedule.ScheduleType, schedule.IsOneTime, schedule.IsActive); item.TVTag = schedule; item.IsPlayed = !schedule.IsActive; } else { //create list with Upcoming Programs string title = upcomingProgram.CreateProgramTitle(); item.Label = title; string logoImagePath = Utility.GetLogoImage(upcomingProgram.Channel); if (!Utils.FileExistsInCache(logoImagePath)) { item.Label = String.Format("[{0}] {1}", upcomingProgram.Channel.DisplayName, title); logoImagePath = "defaultVideoBig.png"; } item.PinImage = Utility.GetIconImageFileName(_currentProgramType, upcomingProgram.IsPartOfSeries, upcomingProgram.CancellationReason, recording); item.TVTag = upcomingProgram; item.ThumbnailImage = logoImagePath; item.IconImageBig = logoImagePath; item.IconImage = logoImagePath; item.Label2 = String.Format("{0} {1} - {2}", Utility.GetShortDayDateString(upcomingProgram.StartTime), upcomingProgram.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat), upcomingProgram.StopTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat)); item.IsPlayed = upcomingProgram.IsCancelled; } return(item); }
public UpcomingOrActiveProgramView(UpcomingRecording upcomingRecording) { _upcomingRecording = upcomingRecording; _upcomingProgram = upcomingRecording.Program; }
private static void GetRecordingIconAndToolTip(UpcomingOrActiveProgramsList upcomingRecordings, UpcomingCancellationReason cancellationReason, bool isPartOfSeries, UpcomingRecording recording, out Icon icon, out string toolTip) { toolTip = null; if (cancellationReason == UpcomingCancellationReason.Manual) { icon = isPartOfSeries ? Properties.Resources.RecordSeriesCancelledIcon : Properties.Resources.RecordCancelledIcon; } else if (cancellationReason == UpcomingCancellationReason.PreviouslyRecorded || cancellationReason == UpcomingCancellationReason.AlreadyQueued) { icon = isPartOfSeries ? Properties.Resources.RecordSeriesCancelledHistoryIcon : Properties.Resources.RecordCancelledHistoryIcon; } else { if (recording != null && recording.CardChannelAllocation == null) { icon = (isPartOfSeries ? Properties.Resources.RecordSeriesInConflictIcon : Properties.Resources.RecordInConflictIcon); toolTip = CreateConflictingProgramsToolTip(upcomingRecordings, recording.ConflictingPrograms); } else if (recording != null && recording.ConflictingPrograms.Count > 0) { icon = (isPartOfSeries ? Properties.Resources.RecordSeriesWithWarningIcon : Properties.Resources.RecordWithWarningIcon); toolTip = CreateConflictingProgramsToolTip(upcomingRecordings, recording.ConflictingPrograms); } else { icon = GetIcon(ScheduleType.Recording, isPartOfSeries); } } }
public static void GetIconAndToolTip(ScheduleType scheduleType, UpcomingCancellationReason cancellationReason, bool isPartOfSeries, UpcomingOrActiveProgramsList upcomingRecordings, UpcomingRecording upcomingRecording, out Icon icon, out string toolTip) { toolTip = null; bool isCancelled = (cancellationReason != UpcomingCancellationReason.None); switch (scheduleType) { case ScheduleType.Recording: GetRecordingIconAndToolTip(upcomingRecordings, cancellationReason, isPartOfSeries, upcomingRecording, out icon, out toolTip); break; case ScheduleType.Alert: icon = isCancelled ? (isPartOfSeries ? Properties.Resources.AlertSeriesCancelledIcon : Properties.Resources.AlertCancelledIcon) : GetIcon(ScheduleType.Alert, isPartOfSeries); break; case ScheduleType.Suggestion: icon = isCancelled ? (isPartOfSeries ? Properties.Resources.SuggestionSeriesCancelledIcon : Properties.Resources.SuggestionCancelledIcon) : GetIcon(ScheduleType.Suggestion, isPartOfSeries); break; default: icon = Properties.Resources.TransparentIcon; break; } }
public GuideUpcomingProgram(UpcomingRecording upcomingRecording) { _type = ScheduleType.Recording; _upcomingRecording = upcomingRecording; }
private IMBotMessage DoStatusCommand(IMBotConversation conversation, IList <string> arguments) { using (ControlServiceAgent tvControlAgent = new ControlServiceAgent()) { bool fixedWidth = false; // Check if currently recording : ActiveRecording[] activeRecordings = tvControlAgent.GetActiveRecordings(); LiveStream[] liveStreams = tvControlAgent.GetLiveStreams(); UpcomingRecording upcomingRecording = tvControlAgent.GetNextUpcomingRecording(false); StringBuilder reply = new StringBuilder(); if (activeRecordings.Length > 0) { reply.Append("Currently recording:"); foreach (ActiveRecording activeRecording in activeRecordings) { PluginService pluginService = null; if (activeRecording.CardChannelAllocation != null) { pluginService = RecorderTunersCache.GetRecorderTunerById(activeRecording.CardChannelAllocation.RecorderTunerId); } reply.AppendLine(); Utility.AppendProgramDetails(reply, activeRecording.Program.Channel, activeRecording.Program); reply.AppendFormat(" [{0}]", pluginService == null ? "-" : pluginService.Name); } fixedWidth = true; if (liveStreams.Length > 0 || upcomingRecording != null) { reply.AppendLine(); } } if (liveStreams.Length > 0) { reply.Append("Currently streaming:"); foreach (LiveStream liveStream in liveStreams) { reply.AppendLine(); reply.AppendFormat("[{0}]", liveStream.Channel.DisplayName); } fixedWidth = true; if (upcomingRecording != null) { reply.AppendLine(); } } if (upcomingRecording != null) { if (reply.Length == 0) { reply.AppendLine("Idle, next scheduled recording:"); } else { reply.AppendLine("Next scheduled recording:"); } PluginService pluginService = null; if (upcomingRecording.CardChannelAllocation != null) { pluginService = RecorderTunersCache.GetRecorderTunerById(upcomingRecording.CardChannelAllocation.RecorderTunerId); } Utility.AppendProgramDetails(reply, upcomingRecording.Program.Channel, upcomingRecording.Program); reply.AppendFormat(" [{0}]", pluginService == null ? "-" : pluginService.Name); fixedWidth = true; } if (reply.Length == 0) { reply.Append("Idle"); } reply.AppendLine().AppendLine(); reply.Append("ARGUS TV Messenger " + Constants.ProductVersion + @", running on server \\").AppendLine(Dns.GetHostName()); reply.Append("http://www.argus-tv.com"); return(new IMBotMessage(reply.ToString(), fixedWidth)); } }
public static string BuildRecordingInfoToolTip(UpcomingRecording upcomingRecording, string onText) { return(BuildRecordingInfoToolTip(upcomingRecording.ActualStartTime, upcomingRecording.ActualStopTime, upcomingRecording.CardChannelAllocation, onText)); }
public static string BuildRecordingBaseFilePath(string format, UpcomingRecording upcomingRecording, string scheduleName, int? episodeNumber, int? seriesNumber) { UpcomingProgram upcoming = upcomingRecording.Program; return BuildRecordingBaseFilePath(format, upcoming.Channel.DisplayName, upcoming.Channel.ChannelType, scheduleName, upcoming.Title, upcoming.CreateProgramTitle(), upcoming.SubTitle, upcoming.EpisodeNumberDisplay, episodeNumber, seriesNumber, upcoming.StartTime, upcoming.Category); }