internal bool PlayRecording(int index)
        {
            TvDatabase.Recording rec = (TvDatabase.Recording)latestTVRecordings[index];
            _rec      = rec;
            _filename = rec.FileName;

            bool _bIsLiveRecording = false;
            IList <TvDatabase.Recording> itemlist = TvDatabase.Recording.ListAll();

            TvServer server = new TvServer();

            foreach (TvDatabase.Recording recItem in itemlist)
            {
                if (rec.IdRecording == recItem.IdRecording && IsRecordingActual(recItem))
                {
                    _bIsLiveRecording = true;
                    break;
                }
            }

            int stoptime = rec.StopTime;

            if (_bIsLiveRecording)
            {
                stoptime = -1;
            }

            if (TVHome.Card != null)
            {
                TVHome.Card.StopTimeShifting();
            }

            return(TVUtil.PlayRecording(rec, stoptime));
        }
Ejemplo n.º 2
0
        private static bool PromptDeleteRecording(int idSchedule, Program prg)
        {
            bool confirmed = false;
            bool isRec     = false;

            if (prg != null)
            {
                isRec = TvDatabase.Schedule.IsScheduleRecording(idSchedule, prg);
            }
            else
            {
                var         tvServer = new TvServer();
                VirtualCard vCard;
                isRec = tvServer.IsRecordingSchedule(idSchedule, out vCard);
            }

            if (isRec)
            {
                confirmed = SetupConfirmDelRecDialogue();
            }
            else
            {
                confirmed = true;
            }
            return(confirmed);
        }
        public string GetRecordingURL(int idRecording)
        {
            TvServer server = new TvServer();
            string   url    = server.GetStreamUrlForFileName(idRecording);

            return(url);
        }
Ejemplo n.º 4
0
        private void mpButtonDel_Click(object sender, EventArgs e)
        {
            mpListView1.BeginUpdate();
            try
            {
                IList <Schedule> schedules = Schedule.ListAll();
                TvServer         server    = new TvServer();

                //Since it takes a very long time to add channels, make sure the user really wants to delete them
                if (mpListView1.SelectedItems.Count > 0)
                {
                    string holder = String.Format("Are you sure you want to delete these {0:d} channels?",
                                                  mpListView1.SelectedItems.Count);

                    if (MessageBox.Show(holder, "", MessageBoxButtons.YesNo) == DialogResult.No)
                    {
                        //mpListView1.EndUpdate();
                        return;
                    }
                }
                NotifyForm dlg = new NotifyForm("Deleting selected tv channels...",
                                                "This can take some time\n\nPlease be patient...");
                dlg.Show(this);
                dlg.WaitForDisplay();

                foreach (ListViewItem item in mpListView1.SelectedItems)
                {
                    Channel channel = (Channel)item.Tag;

                    //also delete any still active schedules
                    if (schedules != null)
                    {
                        for (int i = schedules.Count - 1; i > -1; i--)
                        {
                            Schedule schedule = schedules[i];
                            if (schedule.IdChannel == channel.IdChannel)
                            {
                                server.StopRecordingSchedule(schedule.IdSchedule);
                                schedule.Delete();
                                schedules.RemoveAt(i);
                            }
                        }
                    }

                    channel.Delete();
                    mpListView1.Items.Remove(item);
                }

                dlg.Close();
                ReOrder();
                mpListView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
            }
            finally
            {
                mpListView1.EndUpdate();
            }
        }
Ejemplo n.º 5
0
        private void LoadDirectory()
        {
            GUIControl.ClearControl(GetID, listPriorities.GetID);
            SqlBuilder sb = new SqlBuilder(StatementType.Select, typeof(Schedule));

            sb.AddOrderByField(false, "priority");
            SqlStatement stmt     = sb.GetStatement(true);
            IList        itemlist = ObjectFactory.GetCollection(typeof(Schedule), stmt.Execute());

            int total = 0;

            foreach (Schedule rec in itemlist)
            {
                if (rec.IsSerieIsCanceled(rec.StartTime, rec.IdChannel))
                {
                    continue;
                }
                GUIListItem item = new GUIListItem();
                item.Label = String.Format("{0}.{1}", total, rec.ProgramName);
                item.TVTag = rec;
                string strLogo = Utils.GetCoverArt(Thumbs.TVChannel, rec.ReferencedChannel().DisplayName);
                if (string.IsNullOrEmpty(strLogo))
                {
                    strLogo = "defaultVideoBig.png";
                }
                TvServer    server = new TvServer();
                VirtualCard card;
                if (server.IsRecordingSchedule(rec.IdSchedule, out card))
                {
                    if (rec.ScheduleType != (int)ScheduleRecordingType.Once)
                    {
                        item.PinImage = Thumbs.TvRecordingSeriesIcon;
                    }
                    else
                    {
                        item.PinImage = Thumbs.TvRecordingIcon;
                    }
                }
                else if (rec.ReferringConflicts().Count > 0)
                {
                    item.PinImage = Thumbs.TvConflictRecordingIcon;
                }
                item.ThumbnailImage = strLogo;
                item.IconImageBig   = strLogo;
                item.IconImage      = strLogo;
                listPriorities.Add(item);
                total++;
            }

            //set object count label
            GUIPropertyManager.SetProperty("#itemcount", Utils.GetObjectCountLabel(total));

            GUIControl.SelectItemControl(GetID, listPriorities.GetID, m_iSelectedItem);
        }
Ejemplo n.º 6
0
        private static bool StopRecAndDeleteEntireSchedule(Schedule schedule, Schedule parentSchedule, DateTime canceledStartTime)
        {
            int idChannel = schedule.IdChannel;

            CancelEpisode(canceledStartTime, parentSchedule, idChannel);
            TvServer server        = new TvServer();
            bool     wasRecStopped = StopRecording(schedule);
            bool     wasDeleted    = DeleteEntireOrOnceSchedule(schedule, parentSchedule);

            server.OnNewSchedule();
            return(wasRecStopped || wasDeleted);
        }
Ejemplo n.º 7
0
        private static bool StopRecording(Schedule schedule)
        {
            bool stoppedRec = false;
            bool isRec      = TvDatabase.Schedule.IsScheduleRecording(schedule.IdSchedule);

            if (isRec)
            {
                TvServer server = new TvServer();
                server.StopRecordingSchedule(schedule.IdSchedule);
                stoppedRec = true;
            }
            return(stoppedRec);
        }
Ejemplo n.º 8
0
        private void mpButtonDel_Click(object sender, EventArgs e)
        {
            foreach (ListViewItem item in listView1.SelectedItems)
            {
                Schedule schedule = (Schedule)item.Tag;
                TvServer server   = new TvServer();
                server.StopRecordingSchedule(schedule.IdSchedule);
                schedule.Delete();

                listView1.Items.Remove(item);
            }
            listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
        }
Ejemplo n.º 9
0
        public void GrabData(object ParamTo)
        {
            DataGrabArgs ParamToUse = (DataGrabArgs)ParamTo;
            int          ChannelID  = ParamToUse.ChannelID;
            int          Seconds    = ParamToUse.Seconds;
            List <int>   Pids       = ParamToUse.Pids;
            string       Filename   = "Custom_" + ChannelID.ToString() + ".ts";

            Complete = false;
            TvServer server = new TvServer();
            IUser    user   = new User(Filename, false);

            WantedPIDS = Pids;
            TvResult result = default(TvResult);

            //Used to start and ensure we can tune the channel
            result = server.StartTimeShifting(ref user, ChannelID, out _card);

            if ((result == TvResult.Succeeded))
            {
                Thread.Sleep(2000);
                _card.StopTimeShifting();

                result = server.StartTimeShiftingWithCustom(ref user, ChannelID, out _card, Filename, Pids);

                if ((result == TvResult.Succeeded))
                {
                    string NewFile = _card.TimeshiftFolder + "\\" + Filename;
                    TimeStamp = DateTime.Now.AddSeconds(Seconds);
                    ProcessPackets(NewFile);
                    Decoders.Remove(ChannelID);
                }
                else
                {
                    Decoders.Remove(ChannelID);
                    if (OnComplete != null)
                    {
                        OnComplete(true, result.ToString());
                    }
                }
            }
            else
            {
                Decoders.Remove(ChannelID);
                if (OnComplete != null)
                {
                    OnComplete(true, result.ToString());
                }
            }
        }
Ejemplo n.º 10
0
        private void OnMoveUp(int item)
        {
            if (item == 0)
            {
                return;
            }
            m_iSelectedItem = item - 1;
            GUIListItem pItem = GetItem(GetSelectedItemNo());

            if (pItem == null)
            {
                return;
            }
            Schedule rec = pItem.TVTag as Schedule;

            if (rec == null)
            {
                return;
            }
            GUIListItem tmpItem;
            Schedule    tmprec;

            for (int i = 0; i < item - 1; ++i)
            {
                tmpItem         = GetItem(i);
                tmprec          = tmpItem.TVTag as Schedule;
                tmprec.Priority = Schedule.HighestPriority - i;
            }
            for (int i = item - 1; i < GetItemCount(); ++i)
            {
                if (item == i)
                {
                    continue;
                }
                tmpItem         = GetItem(i);
                tmprec          = tmpItem.TVTag as Schedule;
                tmprec.Priority = Schedule.HighestPriority - i - 1;
            }

            rec.Priority = Schedule.HighestPriority - item + 1;

            rec.Persist();
            TvServer server = new TvServer();

            server.OnNewSchedule();
            LoadDirectory();
        }
Ejemplo n.º 11
0
        private void ScanForUsableChannels()
        {
            _abortScanning = false;
            _isScanning    = true;
            NotifyForm dlg = new NotifyForm("Testing all checked tv channels...", "Please be patient...");

            dlg.Show(this);
            dlg.WaitForDisplay();

            // Create tunning objects Server, User and Card
            TvServer    _server = new TvServer();
            IUser       _user   = new User();
            VirtualCard _card;

            foreach (ListViewItem item in mpListView1.Items)
            {
                if (item.Checked == false)
                {
                    continue;                         // do not test "un-checked" channels
                }
                Channel _channel = (Channel)item.Tag; // get channel
                dlg.SetMessage(
                    string.Format("Please be patient...\n\nTesting channel {0} ( {1} of {2} )",
                                  _channel.DisplayName, item.Index + 1, mpListView1.Items.Count));
                Application.DoEvents();
                TvResult result = _server.StartTimeShifting(ref _user, _channel.IdChannel, out _card);
                if (result == TvResult.Succeeded)
                {
                    _card.StopTimeShifting();
                }
                else
                {
                    item.Checked            = false;
                    _channel.VisibleInGuide = false;
                    _channel.Persist();
                }
                if (_abortScanning)
                {
                    break;
                }
            }
            mpButtonTestAvailable.Text = "Test";
            dlg.Close();
            _isScanning    = false;
            _abortScanning = false;
        }
Ejemplo n.º 12
0
        public static void OnSetEpisodesToKeep(Schedule rec)
        {
            Schedule      schedule = Schedule.Retrieve(rec.IdSchedule);
            GUIDialogMenu dlg      = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU);

            if (dlg == null)
            {
                return;
            }
            dlg.Reset();
            dlg.SetHeading(887);         //quality settings
            dlg.ShowQuickNumbers = false;
            dlg.AddLocalizedString(889); //All episodes
            for (int i = 1; i < 40; ++i)
            {
                dlg.Add(i.ToString() + " " + GUILocalizeStrings.Get(874));
            }
            if (schedule.MaxAirings == Int32.MaxValue)
            {
                dlg.SelectedLabel = 0;
            }
            else
            {
                dlg.SelectedLabel = schedule.MaxAirings;
            }

            dlg.DoModal(GUIWindowManager.ActiveWindow);
            if (dlg.SelectedLabel == -1)
            {
                return;
            }

            if (dlg.SelectedLabel == 0)
            {
                schedule.MaxAirings = Int32.MaxValue;
            }
            else
            {
                schedule.MaxAirings = dlg.SelectedLabel;
            }
            schedule.Persist();
            TvServer server = new TvServer();

            server.OnNewSchedule();
        }
Ejemplo n.º 13
0
        private static bool StopRecAndDeleteSchedule(Schedule schedule, Schedule parentSchedule, int idChannel, DateTime canceledStartTime)
        {
            bool wasCanceled = CancelEpisode(canceledStartTime, parentSchedule, idChannel);
            bool wasDeleted  = false;

            if (canceledStartTime == schedule.StartTime)
            {
                bool isScheduleTypeOnce = IsScheduleTypeOnce(schedule.IdSchedule);

                wasDeleted = StopRecording(schedule);
                if (isScheduleTypeOnce && !wasDeleted)
                {
                    wasDeleted = DeleteSchedule(schedule.IdSchedule);
                }
            }

            TvServer server = new TvServer();

            server.OnNewSchedule();
            return(wasDeleted || wasCanceled);
        }
Ejemplo n.º 14
0
        public new DialogResult ShowDialog(IWin32Window owner)
        {
            Text = "Preview " + _channel.DisplayName;

            TvServer server = new TvServer();
            IUser    user   = new User("setuptv", false);
            TvResult result = server.StartTimeShifting(ref user, _channel.IdChannel, out _card);

            if (result != TvResult.Succeeded)
            {
                MessageBox.Show("Preview failed:" + result);
                Close();
                return(DialogResult.None);
            }

            Log.Info("preview {0} user:{1} {2} {3} {4}", _channel.DisplayName, user.CardId, user.SubChannel, user.Name,
                     _card.TimeShiftFileName);
            _player = new Player();
            _player.Play(_card.TimeShiftFileName, this);

            return(base.ShowDialog(owner));
        }
        public void ShowVideo(IWin32Window owner)
        {
            Text = "Preview " + _channel.DisplayName;

            TvServer server = new TvServer();
            IUser    user   = UserFactory.CreateBasicUser("setuptv");
            TvResult result = server.StartTimeShifting(ref user, _channel.IdChannel, out _card);

            if (result != TvResult.Succeeded)
            {
                MessageBox.Show("Preview failed:" + result);
                Close();
                throw new Exception(result.ToString());
            }

            Log.Info("preview {0} user:{1} {2} {3} {4}", _channel.DisplayName, user.CardId, user.SubChannel, user.Name,
                     _card.TimeShiftFileName);
            _player = new Player();
            _player.Play(_card.TimeShiftFileName, this);

            this.Show(owner);
        }
Ejemplo n.º 16
0
        private void OnEdit(Schedule rec)
        {
            GUIDialogDateTime dlg = (GUIDialogDateTime)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_DATETIME);

            if (dlg != null)
            {
                IList <Channel> channels = Channel.ListAll();
                dlg.SetHeading(637);
                dlg.Items.Clear();
                dlg.EnableChannel   = true;
                dlg.EnableStartTime = true;
                TvServer server = new TvServer();

                if (rec.IsRecordingProgram(rec.ReferencedChannel().CurrentProgram, true))
                {
                    dlg.EnableChannel   = false;
                    dlg.EnableStartTime = false;
                }
                foreach (Channel chan in channels)
                {
                    dlg.Items.Add(chan.DisplayName);
                }
                dlg.Channel       = rec.ReferencedChannel().DisplayName;
                dlg.StartDateTime = rec.StartTime;
                dlg.EndDateTime   = rec.EndTime;
                dlg.DoModal(GetID);
                if (dlg.IsConfirmed)
                {
                    //@rec.Channel = dlg.Channel;
                    rec.EndTime  = dlg.EndDateTime;
                    rec.Canceled = Schedule.MinSchedule;
                    rec.Persist();
                    server.OnNewSchedule();
                    LoadDirectory();
                }
            }
        }
Ejemplo n.º 17
0
        private void OnClick(int iItem)
        {
            m_iSelectedItem = GetSelectedItemNo();
            GUIListItem item = GetItem(iItem);

            if (item == null)
            {
                return;
            }
            if (item.IsFolder)
            {
                if (item.Label == "..")
                {
                    if (selectedItem != null)
                    {
                        selectedItem = null;
                    }
                    LoadDirectory();
                    return;
                }
                if (selectedItem == null)
                {
                    selectedItem = item;
                }
                LoadDirectory();
                return;
            }

            Schedule schedule = item.TVTag as Schedule;

            if (schedule == null)
            {
                return;
            }

            if (schedule.ScheduleType == (int)ScheduleRecordingType.Once)
            {
                GUIDialogYesNo dlgYesNo = (GUIDialogYesNo)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_YES_NO);
                if (null != dlgYesNo)
                {
                    dlgYesNo.SetHeading(GUILocalizeStrings.Get(653)); //Delete this recording?
                    dlgYesNo.SetLine(1, schedule.ReferencedChannel().DisplayName);
                    dlgYesNo.SetLine(2, schedule.ProgramName);
                    dlgYesNo.SetLine(3, GUILocalizeStrings.Get(732)); //are you sure
                    dlgYesNo.DoModal(GUIWindowManager.ActiveWindow);

                    if (dlgYesNo.IsConfirmed)
                    {
                        if (schedule.ScheduleType == (int)ScheduleRecordingType.Once)
                        {
                            schedule.Delete();
                            selectedItem = null;
                        }
                    }
                }
            }
            else // advanced recording
            {
                GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU);
                if (dlg != null)
                {
                    dlg.Reset();
                    dlg.SetHeading(schedule.ProgramName);
                    dlg.AddLocalizedString(981); //Delete this recording
                    dlg.AddLocalizedString(982); //Delete series recording
                    dlg.DoModal(GetID);
                    if (dlg.SelectedLabel == -1)
                    {
                        return;
                    }
                    switch (dlg.SelectedId)
                    {
                    case 981: //delete specific series
                        CanceledSchedule canceledSchedule = new CanceledSchedule(schedule.IdSchedule, schedule.IdChannel, schedule.StartTime);
                        canceledSchedule.Persist();
                        selectedItem = null;
                        TvServer server = new TvServer();
                        server.OnNewSchedule();
                        break;

                    case 982: //Delete entire recording
                        schedule.Delete();
                        selectedItem = null;
                        break;
                    }
                }
            }
            LoadDirectory();
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Ensures that the navigator has the correct current channel (retrieved from the Recorder).
        /// </summary>
        public void UpdateCurrentChannel()
        {
            Channel newChannel = null;
            //if current card is watching tv then use that channel
            int id;

            if (TVHome.Connected)
            {
                if (TVHome.Card.IsTimeShifting || TVHome.Card.IsRecording)
                {
                    id = TVHome.Card.IdChannel;
                    if (id >= 0)
                    {
                        newChannel = Channel.Retrieve(id);
                    }
                }
                else
                {
                    // else if any card is recording
                    // then get & use that channel
                    if (TVHome.IsAnyCardRecording)
                    {
                        TvServer server = new TvServer();
                        for (int i = 0; i < server.Count; ++i)
                        {
                            User        user = new User();
                            VirtualCard card = server.CardByIndex(user, i);
                            if (card.IsRecording)
                            {
                                id = card.IdChannel;
                                if (id >= 0)
                                {
                                    newChannel = Channel.Retrieve(id);
                                    break;
                                }
                            }
                        }
                    }
                }
                if (newChannel == null)
                {
                    newChannel = m_currentChannel;
                }

                int currentChannelId = 0;
                int newChannelId     = 0;

                if (m_currentChannel != null)
                {
                    currentChannelId = m_currentChannel.IdChannel;
                }

                if (newChannel != null)
                {
                    newChannelId = newChannel.IdChannel;
                }

                if (currentChannelId != newChannelId)
                {
                    m_currentChannel = newChannel;
                    m_currentChannel.CurrentGroup = CurrentGroup;
                }
            }
        }
Ejemplo n.º 19
0
        private void OnShowContextMenu(int iItem, bool clicked)
        {
            m_iSelectedItem = iItem;
            GUIListItem item = GetItem(iItem);

            if (item == null)
            {
                return;
            }

            if (item.IsFolder && clicked)
            {
                bool noitems = false;
                if (item.Label == "..")
                {
                    if (selectedItem != null)
                    {
                        selectedItem = null;
                    }
                    LoadDirectory();
                    return;
                }
                if (selectedItem == null)
                {
                    IList <Schedule> seriesList = TVHome.Util.GetRecordingTimes(item.TVTag as Schedule);
                    if (seriesList.Count < 1)
                    {
                        noitems = true; // no items existing
                    }
                    else
                    {
                        selectedItem = item.TVTag as Schedule;
                    }
                }
                if (noitems == false)
                {
                    LoadDirectory();
                    return;
                }
            }

            bool showSeries = btnSeries.Selected;

            Schedule rec = item.TVTag as Schedule;

            if (rec == null)
            {
                return;
            }

            Log.Info("OnShowContextMenu: Rec = {0}", rec.ToString());
            GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU);

            if (dlg == null)
            {
                return;
            }

            dlg.Reset();
            dlg.SetHeading(rec.ProgramName);

            if (showSeries && item.IsFolder)
            {
                dlg.AddLocalizedString(982); //Cancel this show (618=delete)
                dlg.AddLocalizedString(888); //Episodes management
            }
            else if (rec.Series == false)
            {
                dlg.AddLocalizedString(618); //delete
            }
            else
            {
                dlg.AddLocalizedString(981); //Cancel this show
                dlg.AddLocalizedString(982); //Delete this entire recording
                dlg.AddLocalizedString(888); //Episodes management
            }
            VirtualCard card;
            TvServer    server = new TvServer();

            bool isRec = Schedule.IsScheduleRecording(rec.IdSchedule); //TVHome.IsRecordingSchedule(rec, null, out card);

            if (isRec)
            {
                dlg.AddLocalizedString(979); //Play recording from beginning
                dlg.AddLocalizedString(980); //Play recording from live point
            }

            //Schedule schedDB = Schedule.Retrieve(rec.IdSchedule);
            //if (schedDB.ScheduleType != (int)ScheduleRecordingType.Once)
            //{
            dlg.AddLocalizedString(1048); // settings
            //}

            dlg.DoModal(GetID);
            if (dlg.SelectedLabel == -1)
            {
                return;
            }

            bool isSchedRec = TvDatabase.Schedule.IsScheduleRecording(rec.IdSchedule);
            //TVHome.IsRecordingSchedule(rec, null, out card);

            string fileName = "";

            if (isSchedRec)
            {
                bool isCardRec = server.IsRecording(rec.ReferencedChannel().IdChannel, out card);
                if (isCardRec && card != null)
                {
                    fileName = card.RecordingFileName;
                }
            }
            Log.Info("recording fname:{0}", fileName);
            switch (dlg.SelectedId)
            {
            case 888: ////Episodes management
                TvPriorities.OnSetEpisodesToKeep(rec);
                break;

            case 1048: ////settings
                Schedule schedule = item.MusicTag as Schedule;
                if (schedule == null)
                {
                    schedule = item.TVTag as Schedule;
                }
                if (schedule != null)
                {
                    TVProgramInfo.CurrentRecording = schedule;
                    GUIWindowManager.ActivateWindow((int)Window.WINDOW_TV_PROGRAM_INFO);
                }
                return;

            case 882: ////Quality settings
                TvPriorities.OnSetQuality(rec);
                break;

            case 981: //Cancel this show
            {
                var layer = new TvBusinessLayer();
                // get the program that this episode is for
                var progs = layer.GetPrograms(rec.ReferencedChannel(), rec.StartTime, rec.EndTime);
                // pick up the schedule that is actually used for recording
                // see TVUtil.GetRecordingTimes where schedules are all spawend as one off types
                // and this is what rec is (ie. it does not actually exist in the database)
                var  realSchedule = Schedule.Retrieve(rec.IdParentSchedule) ?? rec;
                bool res          = TVUtil.DeleteRecAndSchedWithPrompt(realSchedule, progs[0]);
                if (res)
                {
                    LoadDirectory();
                }
            }
            break;

            case 982: //Delete series recording
                goto case 618;

            case 618: // delete entire recording
            {
                bool res = TVUtil.DeleteRecAndEntireSchedWithPrompt(rec, rec.StartTime);
                if (res)
                {
                    if (showSeries && !item.IsFolder)
                    {
                        OnShowContextMenu(0, true);
                        return;
                    }
                    else
                    {
                        LoadDirectory();
                    }
                }
            }
            break;

            case 979: // Play recording from beginning
            {
                Recording recDB = Recording.Retrieve(fileName);
                if (recDB != null)
                {
                    TVUtil.PlayRecording(recDB);
                }
            }
                return;

            case 980: // Play recording from live point
            {
                TVHome.ViewChannelAndCheck(rec.ReferencedChannel());
                if (g_Player.Playing)
                {
                    g_Player.ShowFullScreenWindow();
                }

                /*
                 * g_Player.Stop();
                 * if (System.IO.File.Exists(fileName))
                 * {
                 * g_Player.Play(fileName, g_Player.MediaType.Recording);
                 * g_Player.SeekAbsolute(g_Player.Duration);
                 * g_Player.ShowFullScreenWindow();
                 * return;
                 * }
                 * else
                 * {
                 * string url = server.GetRtspUrlForFile(fileName);
                 * Log.Info("recording url:{0}", url);
                 * if (url.Length > 0)
                 * {
                 *  g_Player.Play(url, g_Player.MediaType.Recording);
                 *
                 *  if (g_Player.Playing)
                 *  {
                 *    g_Player.SeekAbsolute(g_Player.Duration);
                 *    g_Player.SeekAbsolute(g_Player.Duration);
                 *    g_Player.ShowFullScreenWindow();
                 *    return;
                 *  }
                 * }
                 * }*/
            }
            break;
            }
            while (m_iSelectedItem >= GetItemCount() && m_iSelectedItem > 0)
            {
                m_iSelectedItem--;
            }
            GUIControl.SelectItemControl(GetID, listSchedules.GetID, m_iSelectedItem);
        }
Ejemplo n.º 20
0
        private void ChangeType(Schedule rec)
        {
            GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU);

            if (dlg != null)
            {
                dlg.Reset();
                dlg.SetHeading(GUILocalizeStrings.Get(616)); //616=Select Recording type
                //611=Record once
                //612=Record everytime on this channel
                //613=Record everytime on every channel
                //614=Record every week at this time
                //615=Record every day at this time
                for (int i = 611; i <= 615; ++i)
                {
                    dlg.Add(GUILocalizeStrings.Get(i));
                }
                dlg.Add(GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.Record_WorkingDays)));
                dlg.Add(GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.Record_WeekendDays)));
                switch ((ScheduleRecordingType)rec.ScheduleType)
                {
                case ScheduleRecordingType.Once:
                    dlg.SelectedLabel = 0;
                    break;

                case ScheduleRecordingType.EveryTimeOnThisChannel:
                    dlg.SelectedLabel = 1;
                    break;

                case ScheduleRecordingType.EveryTimeOnEveryChannel:
                    dlg.SelectedLabel = 2;
                    break;

                case ScheduleRecordingType.Weekly:
                    dlg.SelectedLabel = 3;
                    break;

                case ScheduleRecordingType.Daily:
                    dlg.SelectedLabel = 4;
                    break;

                case ScheduleRecordingType.WorkingDays:
                    dlg.SelectedLabel = 5;
                    break;

                case ScheduleRecordingType.Weekends:
                    dlg.SelectedLabel = 6;
                    break;

                case ScheduleRecordingType.WeeklyEveryTimeOnThisChannel:
                    dlg.SelectedLabel = 7;
                    break;
                }
                dlg.DoModal(GetID);
                if (dlg.SelectedLabel == -1)
                {
                    return;
                }
                switch (dlg.SelectedLabel)
                {
                case 0: //once
                    rec.ScheduleType = (int)ScheduleRecordingType.Once;
                    rec.Canceled     = Schedule.MinSchedule;
                    break;

                case 1: //everytime, this channel
                    rec.ScheduleType = (int)ScheduleRecordingType.EveryTimeOnThisChannel;
                    rec.Canceled     = Schedule.MinSchedule;
                    break;

                case 2: //everytime, all channels
                    rec.ScheduleType = (int)ScheduleRecordingType.EveryTimeOnEveryChannel;
                    rec.Canceled     = Schedule.MinSchedule;
                    break;

                case 3: //weekly
                    rec.ScheduleType = (int)ScheduleRecordingType.Weekly;
                    rec.Canceled     = Schedule.MinSchedule;
                    break;

                case 4: //daily
                    rec.ScheduleType = (int)ScheduleRecordingType.Daily;
                    rec.Canceled     = Schedule.MinSchedule;
                    break;

                case 5: //WorkingDays
                    rec.ScheduleType = (int)ScheduleRecordingType.WorkingDays;
                    rec.Canceled     = Schedule.MinSchedule;
                    break;

                case 6: //Weekends
                    rec.ScheduleType = (int)ScheduleRecordingType.Weekends;
                    rec.Canceled     = Schedule.MinSchedule;
                    break;

                case 7://Weekly everytime, this channel
                    rec.ScheduleType = (int)ScheduleRecordingType.WeeklyEveryTimeOnThisChannel;
                    rec.Canceled     = Schedule.MinSchedule;
                    break;
                }
                rec.Persist();
                TvServer server = new TvServer();
                server.OnNewSchedule();
                LoadDirectory();
            }
        }
Ejemplo n.º 21
0
        private void ShowPrograms()
        {
            if (lblOnTvNow != null)
            {
                lblOnTvNow.EnableUpDown = false;
                lblOnTvNow.Clear();
            }
            if (lblOnTvNext != null)
            {
                lblOnTvNext.EnableUpDown = false;
                lblOnTvNext.Clear();
            }

            // Set recorder status
            if (imgRecIcon != null)
            {
                VirtualCard card;
                TvServer    server = new TvServer();
                imgRecIcon.IsVisible = server.IsRecording(idChannel, out card);
            }

            if (lblZapToCannelNo != null)
            {
                lblZapToCannelNo.Label   = channelNr;
                lblZapToCannelNo.Visible = !string.IsNullOrEmpty(channelNr);
            }
            if (LastError != null)
            {
                lblStartTime.Label = "";
                lblEndTime.Label   = "";
                if (LastError.FailingChannel != null)
                {
                    lblCurrentChannel.Label = LastError.FailingChannel.DisplayName;
                }
                if (LastError.Messages.Count > 0)
                {
                    lblOnTvNow.Label = LastError.Messages[0]; // first line in "NOW"
                    if (LastError.Messages.Count > 1)
                    {
                        lblOnTvNext.Label = String.Join(", ", LastError.Messages.ToArray(), 1, LastError.Messages.Count - 1);
                        // 2nd and later in "NEXT"
                    }
                }
                m_lastError = null; // reset member only, not the failing channel info in Navigator
            }
            else
            {
                if (lblCurrentChannel != null)
                {
                    lblCurrentChannel.Label = channelName;
                }
                Channel chan = TVHome.Navigator.GetChannel(idChannel, true);
                Program prog = chan.GetProgramAt(m_dateTime);
                if (prog != null)
                {
                    string strTime = String.Format("{0}-{1}",
                                                   prog.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat),
                                                   prog.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat));

                    if (lblCurrentTime != null)
                    {
                        lblCurrentTime.Label = strTime;
                    }

                    if (lblOnTvNow != null)
                    {
                        lblOnTvNow.Label = prog.Title;
                    }
                    if (lblStartTime != null)
                    {
                        strTime            = String.Format("{0}", prog.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat));
                        lblStartTime.Label = strTime;
                    }
                    if (lblEndTime != null)
                    {
                        strTime          = String.Format("{0} ", prog.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat));
                        lblEndTime.Label = strTime;
                    }

                    // next program
                    prog = chan.GetProgramAt(prog.EndTime.AddMinutes(1));
                    //prog = TVHome.Navigator.GetChannel(channelName).GetProgramAt(prog.EndTime.AddMinutes(1));
                    if (prog != null)
                    {
                        if (lblOnTvNext != null)
                        {
                            lblOnTvNext.Label = prog.Title;
                        }
                    }
                }
                else
                {
                    lblOnTvNow.Label = GUILocalizeStrings.Get(736); // no epg for this channel

                    if (lblStartTime != null)
                    {
                        lblStartTime.Label = String.Empty;
                    }
                    if (lblEndTime != null)
                    {
                        lblEndTime.Label = String.Empty;
                    }
                    if (lblCurrentTime != null)
                    {
                        lblCurrentTime.Label = String.Empty;
                    }
                }
            }
            UpdateProgressBar();
        }
Ejemplo n.º 22
0
        private void OnMoveDown(int item)
        {
            if (item == GetItemCount() - 1)
            {
                return;
            }
            m_iSelectedItem = item + 1;
            GUIListItem pItem = GetItem(GetSelectedItemNo());

            if (pItem == null)
            {
                return;
            }
            Schedule rec = pItem.TVTag as Schedule;

            if (rec == null)
            {
                return;
            }
            GUIListItem tmpItem;
            Schedule    tmprec;
            //0
            //1
            //2 ---->3
            //3 ----
            //4
            //5
            int tempPriority;

            for (int i = 0; i < item; ++i)
            {
                tmpItem         = GetItem(i);
                tmprec          = tmpItem.TVTag as Schedule;
                tempPriority    = tmprec.Priority;
                tmprec.Priority = Schedule.HighestPriority - i;
                if (tempPriority != tmprec.Priority)
                {
                    tmprec.Persist();
                }
            }
            tmpItem         = GetItem(item + 1);
            tmprec          = tmpItem.TVTag as Schedule;
            tempPriority    = tmprec.Priority;
            tmprec.Priority = Schedule.HighestPriority - item;
            if (tempPriority != tmprec.Priority)
            {
                tmprec.Persist();
            }

            for (int i = item + 2; i < GetItemCount(); ++i)
            {
                tmpItem         = GetItem(i);
                tmprec          = tmpItem.TVTag as Schedule;
                tempPriority    = tmprec.Priority;
                tmprec.Priority = Schedule.HighestPriority - i;
                if (tempPriority != tmprec.Priority)
                {
                    tmprec.Persist();
                }
            }

            rec.Priority = Schedule.HighestPriority - item - 1;
            rec.Persist();
            TvServer server = new TvServer();

            server.OnNewSchedule();
            LoadDirectory();
        }
Ejemplo n.º 23
0
        private void OnClick(int iItem)
        {
            m_iSelectedItem = GetSelectedItemNo();
            GUIListItem item = GetItem(iItem);

            if (item == null)
            {
                return;
            }
            Schedule rec = (Schedule)item.TVTag;

            GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU);

            if (dlg == null)
            {
                return;
            }

            dlg.Reset();
            dlg.SetHeading(rec.ProgramName);

            if (rec.Series == false)
            {
                dlg.AddLocalizedString(618); //delete
            }
            else
            {
                dlg.AddLocalizedString(981); //Delete this recording
                dlg.AddLocalizedString(982); //Delete series recording
                dlg.AddLocalizedString(888); //Episodes management
            }
            VirtualCard card;
            TvServer    server = new TvServer();

            if (server.IsRecordingSchedule(rec.IdSchedule, out card))
            {
                dlg.AddLocalizedString(979); //Play recording from beginning
                dlg.AddLocalizedString(980); //Play recording from live point
            }
            else
            {
                IList <TuningDetail> details = Channel.Retrieve(rec.IdChannel).ReferringTuningDetail();
                foreach (TuningDetail detail in details)
                {
                    if (detail.ChannelType == 0)
                    {
                        dlg.AddLocalizedString(882); //Quality settings
                        break;
                    }
                }
            }

            dlg.DoModal(GetID);
            if (dlg.SelectedLabel == -1)
            {
                return;
            }
            switch (dlg.SelectedId)
            {
            case 888: ////Episodes management
                OnSetEpisodesToKeep(rec);
                break;

            case 882:
                OnSetQuality(rec);
                break;

            case 981: //Delete this recording only
            {
                if (server.IsRecordingSchedule(rec.IdSchedule, out card))
                {
                    GUIDialogYesNo dlgYesNo = (GUIDialogYesNo)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_YES_NO);
                    if (null != dlgYesNo)
                    {
                        dlgYesNo.SetHeading(GUILocalizeStrings.Get(653)); //Delete this recording?
                        dlgYesNo.SetLine(1, GUILocalizeStrings.Get(730)); //This schedule is recording. If you delete
                        dlgYesNo.SetLine(2, GUILocalizeStrings.Get(731)); //the schedule then the recording is stopped.
                        dlgYesNo.SetLine(3, GUILocalizeStrings.Get(732)); //are you sure
                        dlgYesNo.DoModal(GUIWindowManager.ActiveWindow);

                        if (dlgYesNo.IsConfirmed)
                        {
                            server.StopRecordingSchedule(rec.IdSchedule);
                            CanceledSchedule schedule = new CanceledSchedule(rec.IdSchedule, rec.IdChannel, rec.StartTime);
                            rec.Persist();
                            server.OnNewSchedule();
                        }
                    }
                }
                else
                {
                    server.StopRecordingSchedule(rec.IdSchedule);
                    CanceledSchedule schedule = new CanceledSchedule(rec.IdSchedule, rec.IdChannel, rec.StartTime);
                    rec.Persist();
                    server.OnNewSchedule();
                }
                LoadDirectory();
            }
            break;

            case 982: //Delete series recording
                goto case 618;

            case 618: // delete entire recording
            {
                if (server.IsRecordingSchedule(rec.IdSchedule, out card))
                {
                    GUIDialogYesNo dlgYesNo = (GUIDialogYesNo)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_YES_NO);
                    if (null != dlgYesNo)
                    {
                        dlgYesNo.SetHeading(GUILocalizeStrings.Get(653)); //Delete this recording?
                        dlgYesNo.SetLine(1, GUILocalizeStrings.Get(730)); //This schedule is recording. If you delete
                        dlgYesNo.SetLine(2, GUILocalizeStrings.Get(731)); //the schedule then the recording is stopped.
                        dlgYesNo.SetLine(3, GUILocalizeStrings.Get(732)); //are you sure
                        dlgYesNo.DoModal(GUIWindowManager.ActiveWindow);

                        if (dlgYesNo.IsConfirmed)
                        {
                            server.StopRecordingSchedule(rec.IdSchedule);
                            rec.Delete();
                            server.OnNewSchedule();
                        }
                    }
                }
                else
                {
                    rec.Delete();
                    server.OnNewSchedule();
                }
                LoadDirectory();
            }
            break;

            case 979: // Play recording from beginning
                if (g_Player.Playing && g_Player.IsTVRecording)
                {
                    g_Player.Stop(true);
                }
                //TVHome.IsTVOn = true;
                TVHome.ViewChannel(rec.ReferencedChannel());
                g_Player.SeekAbsolute(0);
                if (TVHome.Card.IsTimeShifting)
                {
                    g_Player.ShowFullScreenWindow();
                    return;
                }
                break;

            case 980: // Play recording from live point
                //TVHome.IsTVOn = true;
                TVHome.ViewChannel(rec.ReferencedChannel());
                if (TVHome.Card.IsTimeShifting)
                {
                    if (g_Player.Playing)
                    {
                        g_Player.SeekAsolutePercentage(99);
                    }
                    g_Player.ShowFullScreenWindow();
                    return;
                }
                break;
            }
            while (m_iSelectedItem >= GetItemCount() && m_iSelectedItem > 0)
            {
                m_iSelectedItem--;
            }
            GUIControl.SelectItemControl(GetID, listPriorities.GetID, m_iSelectedItem);
        }
Ejemplo n.º 24
0
        private void OnQuickRecord()
        {
            GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU);

            if (dlg == null)
            {
                return;
            }
            dlg.Reset();
            dlg.SetHeading(GUILocalizeStrings.Get(891)); //Select TV Channel
            IList <GroupMap> channels = TVHome.Navigator.CurrentGroup.ReferringGroupMap();

            foreach (GroupMap chan in channels)
            {
                GUIListItem item    = new GUIListItem(chan.ReferencedChannel().DisplayName);
                string      strLogo = Utils.GetCoverArt(Thumbs.TVChannel, chan.ReferencedChannel().DisplayName);
                if (string.IsNullOrEmpty(strLogo))
                {
                    strLogo = "defaultVideoBig.png";
                }
                item.ThumbnailImage = strLogo;
                item.IconImageBig   = strLogo;
                item.IconImage      = strLogo;
                dlg.Add(item);
            }
            dlg.DoModal(GetID);
            if (dlg.SelectedLabel < 0)
            {
                return;
            }

            Channel selectedChannel = (channels[dlg.SelectedLabel]).ReferencedChannel();

            dlg.Reset();
            dlg.SetHeading(616); //select recording type
            for (int i = 611; i <= 615; ++i)
            {
                dlg.Add(GUILocalizeStrings.Get(i));
            }
            dlg.Add(GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.Record_WorkingDays)));
            dlg.Add(GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.Record_WeekendDays)));

            Schedule rec = new Schedule(selectedChannel.IdChannel, "", Schedule.MinSchedule, Schedule.MinSchedule);

            TvBusinessLayer layer = new TvBusinessLayer();

            rec.PreRecordInterval  = Int32.Parse(layer.GetSetting("preRecordInterval", "5").Value);
            rec.PostRecordInterval = Int32.Parse(layer.GetSetting("postRecordInterval", "5").Value);
            rec.ScheduleType       = (int)ScheduleRecordingType.Once;

            DateTime dtNow = DateTime.Now;
            int      day;

            day = 0;

            dlg.Reset();
            dlg.SetHeading(142); //select time
            dlg.ShowQuickNumbers = false;
            //time
            //int no = 0;
            int hour, minute, steps;

            steps = 15;
            dlg.Add("00:00");
            for (hour = 0; hour <= 23; hour++)
            {
                for (minute = 0; minute < 60; minute += steps)
                {
                    if (hour == 0 && minute == 0)
                    {
                        continue;
                    }
                    string time;
                    if (hour < 10)
                    {
                        time = "0" + hour;
                    }
                    else
                    {
                        time = hour.ToString();
                    }
                    time += ":";
                    if (minute < 10)
                    {
                        time = time + "0" + minute;
                    }
                    else
                    {
                        time += minute.ToString();
                    }

                    //if (hour < 1) time = String.Format("{0} {1}", minute, GUILocalizeStrings.Get(3004));
                    dlg.Add(time);
                }
            }
            // pre-select the current time
            dlg.SelectedLabel = (DateTime.Now.Hour * (60 / steps)) + (Convert.ToInt16(DateTime.Now.Minute / steps));
            dlg.DoModal(GetID);
            if (dlg.SelectedLabel == -1)
            {
                return;
            }

            int mins = (dlg.SelectedLabel) * steps;

            hour   = (mins) / 60;
            minute = ((mins) % 60);


            dlg.Reset();
            dlg.SetHeading(180); //select time
            dlg.ShowQuickNumbers = false;
            //duration
            for (float hours = 0.5f; hours <= 24f; hours += 0.5f)
            {
                dlg.Add(String.Format("{0} {1}", hours.ToString("f2"), GUILocalizeStrings.Get(3002)));
            }
            dlg.DoModal(GetID);
            if (dlg.SelectedLabel == -1)
            {
                return;
            }
            int duration = (dlg.SelectedLabel + 1) * 30;


            dtNow           = DateTime.Now.AddDays(day);
            rec.StartTime   = new DateTime(dtNow.Year, dtNow.Month, dtNow.Day, hour, minute, 0, 0);
            rec.EndTime     = rec.StartTime.AddMinutes(duration);
            rec.ProgramName = GUILocalizeStrings.Get(413) + " (" + rec.ReferencedChannel().DisplayName + ")";

            rec.Persist();
            TvServer server = new TvServer();

            server.OnNewSchedule();
            GUIWindowManager.ShowPreviousWindow();
        }
Ejemplo n.º 25
0
        public static void OnSetQuality(Schedule rec)
        {
            GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU);

            if (dlg != null)
            {
                dlg.Reset();
                dlg.SetHeading(882);

                dlg.ShowQuickNumbers = true;
                dlg.AddLocalizedString(968);
                dlg.AddLocalizedString(965);
                dlg.AddLocalizedString(966);
                dlg.AddLocalizedString(967);
                VIDEOENCODER_BITRATE_MODE _newBitRate = rec.BitRateMode;
                switch (_newBitRate)
                {
                case VIDEOENCODER_BITRATE_MODE.NotSet:
                    dlg.SelectedLabel = 0;
                    break;

                case VIDEOENCODER_BITRATE_MODE.ConstantBitRate:
                    dlg.SelectedLabel = 1;
                    break;

                case VIDEOENCODER_BITRATE_MODE.VariableBitRateAverage:
                    dlg.SelectedLabel = 2;
                    break;

                case VIDEOENCODER_BITRATE_MODE.VariableBitRatePeak:
                    dlg.SelectedLabel = 3;
                    break;
                }

                dlg.DoModal(GUIWindowManager.ActiveWindow);

                if (dlg.SelectedLabel == -1)
                {
                    return;
                }
                switch (dlg.SelectedLabel)
                {
                case 0: // Not Set
                    _newBitRate = VIDEOENCODER_BITRATE_MODE.NotSet;
                    break;

                case 1: // CBR
                    _newBitRate = VIDEOENCODER_BITRATE_MODE.ConstantBitRate;
                    break;

                case 2: // VBR
                    _newBitRate = VIDEOENCODER_BITRATE_MODE.VariableBitRateAverage;
                    break;

                case 3: // VBR Peak
                    _newBitRate = VIDEOENCODER_BITRATE_MODE.VariableBitRatePeak;
                    break;
                }

                rec.BitRateMode = _newBitRate;
                rec.Persist();

                dlg.Reset();
                dlg.SetHeading(882);

                dlg.ShowQuickNumbers = true;
                dlg.AddLocalizedString(968);
                dlg.AddLocalizedString(886); //Default
                dlg.AddLocalizedString(993); // Custom
                dlg.AddLocalizedString(893); //Portable
                dlg.AddLocalizedString(883); //Low
                dlg.AddLocalizedString(884); //Medium
                dlg.AddLocalizedString(885); //High
                QualityType _newQuality = rec.QualityType;
                switch (_newQuality)
                {
                case QualityType.NotSet:
                    dlg.SelectedLabel = 0;
                    break;

                case QualityType.Default:
                    dlg.SelectedLabel = 1;
                    break;

                case QualityType.Custom:
                    dlg.SelectedLabel = 2;
                    break;

                case QualityType.Portable:
                    dlg.SelectedLabel = 3;
                    break;

                case QualityType.Low:
                    dlg.SelectedLabel = 4;
                    break;

                case QualityType.Medium:
                    dlg.SelectedLabel = 5;
                    break;

                case QualityType.High:
                    dlg.SelectedLabel = 6;
                    break;
                }

                dlg.DoModal(GUIWindowManager.ActiveWindow);

                if (dlg.SelectedLabel == -1)
                {
                    return;
                }
                switch (dlg.SelectedLabel)
                {
                case 0: // Not Set
                    _newQuality = QualityType.NotSet;
                    break;

                case 1: // Default
                    _newQuality = QualityType.Default;
                    break;

                case 2: // Custom
                    _newQuality = QualityType.Custom;
                    break;

                case 3: // Protable
                    _newQuality = QualityType.Portable;
                    break;

                case 4: // Low
                    _newQuality = QualityType.Low;
                    break;

                case 5: // Medium
                    _newQuality = QualityType.Medium;
                    break;

                case 6: // High
                    _newQuality = QualityType.High;
                    break;
                }

                rec.QualityType = _newQuality;
                rec.Persist();
            }
            TvServer server = new TvServer();

            server.OnNewSchedule();
        }
Ejemplo n.º 26
0
        private void SetLabels()
        {
            for (int i = 0; i < GetItemCount(); ++i)
            {
                GUIListItem item = GetItem(i);
                Schedule    rec  = (Schedule)item.TVTag;
                //@

                /*
                 * switch (rec.Status)
                 * {
                 * case Schedule.RecordingStatus.Waiting:
                 *  item.Label3 = GUILocalizeStrings.Get(681);//waiting
                 *  break;
                 * case Schedule.RecordingStatus.Finished:
                 *  item.Label3 = GUILocalizeStrings.Get(683);//Finished
                 *  break;
                 * case Schedule.RecordingStatus.Canceled:
                 *  item.Label3 = GUILocalizeStrings.Get(684);//Canceled
                 *  break;
                 * }*/

                // check with recorder.
                VirtualCard card;
                TvServer    server = new TvServer();
                if (server.IsRecordingSchedule(rec.IdSchedule, out card))
                {
                    item.Label3 = GUILocalizeStrings.Get(682); //Recording
                    if (rec.ScheduleType != (int)ScheduleRecordingType.Once)
                    {
                        item.PinImage = Thumbs.TvRecordingSeriesIcon;
                    }
                    else
                    {
                        item.PinImage = Thumbs.TvRecordingIcon;
                    }
                }
                else if (rec.ReferringConflicts().Count > 0)
                {
                    item.PinImage = Thumbs.TvConflictRecordingIcon;
                }
                else
                {
                    item.PinImage = String.Empty;
                }

                string strType = String.Empty;
                item.Label = rec.ProgramName;
                string strTime = String.Format("{0} {1} - {2}",
                                               rec.StartTime.ToShortDateString(),
                                               rec.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat),
                                               rec.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat));
                string day;
                switch ((ScheduleRecordingType)rec.ScheduleType)
                {
                case ScheduleRecordingType.Once:
                    item.Label2 = String.Format("{0} {1} - {2}",
                                                Utils.GetShortDayString(rec.StartTime),
                                                rec.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat),
                                                rec.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat));
                    ;
                    break;

                case ScheduleRecordingType.Daily:
                    strTime = String.Format("{0}-{1}",
                                            rec.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat),
                                            rec.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat));
                    strType     = GUILocalizeStrings.Get(648);
                    item.Label2 = String.Format("{0} {1}", strType, strTime);
                    break;

                case ScheduleRecordingType.WorkingDays:
                    strTime = String.Format("{0}-{1} {2}-{3}",
                                            GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.FirstWorkingDay)),
                                            GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.LastWorkingDay)),
                                            rec.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat),
                                            rec.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat));
                    strType     = GUILocalizeStrings.Get(648);
                    item.Label2 = String.Format("{0} {1}", strType, strTime);
                    break;

                case ScheduleRecordingType.Weekends:
                    strTime = String.Format("{0}-{1} {2}-{3}",
                                            GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.FirstWeekendDay)),
                                            GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.LastWeekendDay)),
                                            rec.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat),
                                            rec.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat));
                    strType     = GUILocalizeStrings.Get(649);
                    item.Label2 = String.Format("{0} {1}", strType, strTime);
                    break;

                case ScheduleRecordingType.Weekly:
                    switch (rec.StartTime.DayOfWeek)
                    {
                    case DayOfWeek.Monday:
                        day = GUILocalizeStrings.Get(11);
                        break;

                    case DayOfWeek.Tuesday:
                        day = GUILocalizeStrings.Get(12);
                        break;

                    case DayOfWeek.Wednesday:
                        day = GUILocalizeStrings.Get(13);
                        break;

                    case DayOfWeek.Thursday:
                        day = GUILocalizeStrings.Get(14);
                        break;

                    case DayOfWeek.Friday:
                        day = GUILocalizeStrings.Get(15);
                        break;

                    case DayOfWeek.Saturday:
                        day = GUILocalizeStrings.Get(16);
                        break;

                    default:
                        day = GUILocalizeStrings.Get(17);
                        break;
                    }

                    strTime = String.Format("{0}-{1}",
                                            rec.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat),
                                            rec.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat));
                    strType     = GUILocalizeStrings.Get(649);
                    item.Label2 = String.Format("{0} {1} {2}", strType, day, strTime);
                    break;

                case ScheduleRecordingType.WeeklyEveryTimeOnThisChannel:
                    switch (rec.StartTime.DayOfWeek)
                    {
                    case DayOfWeek.Monday: day = GUILocalizeStrings.Get(11); break;

                    case DayOfWeek.Tuesday: day = GUILocalizeStrings.Get(12); break;

                    case DayOfWeek.Wednesday: day = GUILocalizeStrings.Get(13); break;

                    case DayOfWeek.Thursday: day = GUILocalizeStrings.Get(14); break;

                    case DayOfWeek.Friday: day = GUILocalizeStrings.Get(15); break;

                    case DayOfWeek.Saturday: day = GUILocalizeStrings.Get(16); break;

                    default: day = GUILocalizeStrings.Get(17); break;
                    }

                    item.Label  = rec.ProgramName;
                    item.Label2 = GUILocalizeStrings.Get(990001, new object[] { day, rec.ReferencedChannel().DisplayName });
                    break;

                case ScheduleRecordingType.EveryTimeOnThisChannel:
                    item.Label  = rec.ProgramName;
                    item.Label2 = GUILocalizeStrings.Get(650);
                    break;

                case ScheduleRecordingType.EveryTimeOnEveryChannel:
                    item.Label  = rec.ProgramName;
                    item.Label2 = GUILocalizeStrings.Get(651);
                    break;
                }
            }
        }
Ejemplo n.º 27
0
        private void mpButtonTimeShift_Click(object sender, EventArgs e)
        {
            if (ServiceHelper.IsStopped)
            {
                return;
            }
            if (mpComboBoxChannels.SelectedItem == null)
            {
                return;
            }
            int id = ((ComboBoxExItem)mpComboBoxChannels.SelectedItem).Id;

            TvServer    server = new TvServer();
            VirtualCard card   = GetCardTimeShiftingChannel(id);

            if (card != null)
            {
                card.StopTimeShifting();
                mpButtonRec.Enabled = false;
            }
            else
            {
                string timeShiftingFilename = string.Empty;
                int    cardId = -1;
                foreach (ListViewItem listViewItem in mpListView1.SelectedItems)
                {
                    if (listViewItem.SubItems[2].Text != "disabled")
                    {
                        cardId = Convert.ToInt32(listViewItem.SubItems[0].Tag);
                        break; // Keep the first card enabled selected only
                    }
                }
                IUser user = UserFactory.CreateSchedulerUser();
                user.Name   = "setuptv-" + id + "-" + cardId;
                user.CardId = cardId;

                TvResult result = server.StartTimeShifting(ref user, id, out card, cardId != -1);
                if (result != TvResult.Succeeded)
                {
                    switch (result)
                    {
                    case TvResult.NoPmtFound:
                        MessageBox.Show(this, "No PMT found");
                        break;

                    case TvResult.NoSignalDetected:
                        MessageBox.Show(this, "No signal");
                        break;

                    case TvResult.CardIsDisabled:
                        MessageBox.Show(this, "Card is not enabled");
                        break;

                    case TvResult.AllCardsBusy:
                        MessageBox.Show(this, "All cards are busy");
                        break;

                    case TvResult.ChannelIsScrambled:
                        MessageBox.Show(this, "Channel is scrambled");
                        break;

                    case TvResult.NoVideoAudioDetected:
                        MessageBox.Show(this, "No Video/Audio detected");
                        break;

                    case TvResult.UnableToStartGraph:
                        MessageBox.Show(this, "Unable to create/start graph");
                        break;

                    case TvResult.ChannelNotMappedToAnyCard:
                        MessageBox.Show(this, "Channel is not mapped to any card");
                        break;

                    case TvResult.NoTuningDetails:
                        MessageBox.Show(this, "No tuning information available for this channel");
                        break;

                    case TvResult.UnknownChannel:
                        MessageBox.Show(this, "Unknown channel");
                        break;

                    case TvResult.UnknownError:
                        MessageBox.Show(this, "Unknown error occured");
                        break;

                    case TvResult.ConnectionToSlaveFailed:
                        MessageBox.Show(this, "Cannot connect to slave server");
                        break;

                    case TvResult.NotTheOwner:
                        MessageBox.Show(this, "Failed since card is in use and we are not the owner");
                        break;

                    case TvResult.GraphBuildingFailed:
                        MessageBox.Show(this, "Unable to create graph");
                        break;

                    case TvResult.SWEncoderMissing:
                        MessageBox.Show(this, "No suppported software encoder installed");
                        break;

                    case TvResult.NoFreeDiskSpace:
                        MessageBox.Show(this, "No free disk space");
                        break;

                    case TvResult.TuneCancelled:
                        MessageBox.Show(this, "Tune cancelled");
                        break;
                    }
                }
                else
                {
                    mpButtonRec.Enabled = true;
                }
            }
        }