Beispiel #1
0
        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));
            }
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
 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));
     }
 }
Beispiel #4
0
 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;
         }
     }
 }
Beispiel #5
0
 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));
     }
 }
Beispiel #6
0
        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;
                }
            }
        }
Beispiel #7
0
        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;
 }
Beispiel #9
0
 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);
         }
     }
 }
Beispiel #10
0
        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;
 }
Beispiel #12
0
        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));
            }
        }
Beispiel #13
0
 public static string BuildRecordingInfoToolTip(UpcomingRecording upcomingRecording, string onText)
 {
     return(BuildRecordingInfoToolTip(upcomingRecording.ActualStartTime, upcomingRecording.ActualStopTime,
                                      upcomingRecording.CardChannelAllocation, onText));
 }
Beispiel #14
0
 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);
 }