private void RadioSetupForm_Load(object sender, EventArgs e)
        {
            LoadSettings();

            string gentle = String.Format(@"{0}\gentle.config", Config.GetFolder(Config.Dir.Config));
            NameValueCollection appSettings = ConfigurationManager.AppSettings;

            appSettings.Set("GentleConfigFile", gentle);

            cbTurnOnRadio.Checked          = _autoTurnOnRadio;
            cbShowAllChannelsGroup.Checked = _showAllChannelsGroup;
            cbRememberLastGroup.Checked    = _rememberLastGroup;
            comboBoxGroups.Items.Clear();
            comboBoxGroups.Items.Add("(none)");
            int selectedIdx = 0;
            IList <RadioChannelGroup> groups = RadioChannelGroup.ListAll();

            foreach (RadioChannelGroup group in groups)
            {
                int idx = comboBoxGroups.Items.Add(group.GroupName);
                if (group.GroupName == _rootGroup)
                {
                    selectedIdx = idx;
                }
            }
            comboBoxGroups.SelectedIndex = selectedIdx;
        }
예제 #2
0
        private static void LoadChannelGroups()
        {
            if (!TVHome.Connected)
            {
                return;
            }
            Settings xmlreader          = new MPSettings();
            string   currentchannelName = xmlreader.GetValueAsString("myradio", "channel", String.Empty);

            TvBusinessLayer layer    = new TvBusinessLayer();
            IList <Channel> channels = layer.GetChannelsByName(currentchannelName);

            if (channels != null && channels.Count > 0)
            {
                _currentChannel = channels[0];
            }

            if (AllRadioGroups.Count == 0)
            {
                IList <RadioChannelGroup> allGroups = RadioChannelGroup.ListAll();

                foreach (RadioChannelGroup group in allGroups)
                {
                    if (hideAllChannelsGroup && group.GroupName.Equals(TvConstants.RadioGroupNames.AllChannels) &&
                        allGroups.Count > 1)
                    {
                        continue;
                    }

                    AllRadioGroups.Add(group);
                }
            }
        }
예제 #3
0
        public override async Task <AsyncResult <IList <IChannel> > > GetChannelsAsync(IChannelGroup group)
        {
            await _initComplete.Task;

            List <IChannel> channels;

            if (group.ChannelGroupId < 0)
            {
                var radioGroup    = RadioChannelGroup.Retrieve(-group.ChannelGroupId);
                var radioChannels = radioGroup.ReferringRadioGroupMap().OrderBy(rgm => rgm.SortOrder).Select(rgm => rgm.ReferencedChannel());
                channels = radioChannels
                           .Where(c => c.VisibleInGuide)
                           .Select(c => c.ToChannel())
                           .Where(c => c != null)
                           .ToList();
            }
            else
            {
                channels = _tvBusiness.GetChannelsInGroup(TvDatabase.ChannelGroup.Retrieve(group.ChannelGroupId))
                           .Where(c => c != null)
                           // Bug? SortOrder contains logical channel number, not the group sort order?
                           // .OrderBy(c => c.SortOrder)
                           .Where(c => c.VisibleInGuide)
                           .Select(c => c.ToChannel())
                           .ToList();
            }
            return(new AsyncResult <IList <IChannel> >(true, channels));
        }
예제 #4
0
        public List <WebChannel> GetChannelsInRadioGroup(int idGroup)
        {
            List <WebChannel> channels = new List <WebChannel>();

            if (!ConnectToDatabase())
            {
                return(channels);
            }
            RadioChannelGroup group = null;

            try
            {
                group = RadioChannelGroup.Retrieve(idGroup);
            }
            catch (Exception)
            {
            }
            if (group == null)
            {
                return(channels);
            }
            IList <RadioGroupMap> maps = group.ReferringRadioGroupMap();

            foreach (RadioGroupMap map in maps)
            {
                channels.Add(new WebChannel(map.ReferencedChannel()));
            }
            return(channels);
        }
 public bool Connect(string hostname)
 {
     try
     {
         string connStr;
         string provider;
         if (!GetDatabaseConnectionString(out connStr, out provider))
         {
             return(false);
         }
         RemoteControl.HostName = hostname;
         Gentle.Framework.ProviderFactory.SetDefaultProviderConnectionString(connStr);
         me          = new User();
         me.IsAdmin  = true;
         groups      = ChannelGroup.ListAll();
         radioGroups = RadioChannelGroup.ListAll();
         channels    = Channel.ListAll();
         mappings    = GroupMap.ListAll();
         cards       = Card.ListAll();
     }
     catch (Exception ex)
     {
         lastException = ex;
         RemoteControl.Clear();
         return(false);
     }
     return(true);
 }
        private void RefreshTabs()
        {
            // bugfix for tab removal, RemoveAt fails sometimes
            tabControl1.TabPages.Clear();
            tabControl1.TabPages.Add(tabPage1);

            IList <RadioChannelGroup> groups = RadioChannelGroup.ListAll();

            foreach (RadioChannelGroup group in groups)
            {
                TabPage page = new TabPage(group.GroupName);
                page.SuspendLayout();

                ChannelsInRadioGroupControl channelsInRadioGroupControl = new ChannelsInRadioGroupControl();
                channelsInRadioGroupControl.Location = new System.Drawing.Point(9, 9);
                channelsInRadioGroupControl.Anchor   = ((AnchorStyles.Top | AnchorStyles.Bottom)
                                                        | AnchorStyles.Left)
                                                       | AnchorStyles.Right;

                page.Controls.Add(channelsInRadioGroupControl);

                page.Tag      = group;
                page.Location = new System.Drawing.Point(4, 22);
                page.Padding  = new Padding(3);
                page.Size     = new System.Drawing.Size(457, 374);
                page.UseVisualStyleBackColor = true;
                page.PerformLayout();
                page.ResumeLayout(false);

                tabControl1.TabPages.Add(page);
            }
        }
예제 #7
0
        public List <WebMiniEPG> GetRadioMiniEPGForGroup(int idGroup)
        {
            List <WebMiniEPG> ret = new List <WebMiniEPG>();

            if (!ConnectToDatabase())
            {
                return(ret);
            }
            RadioChannelGroup group = null;

            try
            {
                group = RadioChannelGroup.Retrieve(idGroup);
            }
            catch (Exception)
            {
            }
            if (group == null)
            {
                return(ret);
            }

            IList <RadioGroupMap> maps = group.ReferringRadioGroupMap();

            foreach (RadioGroupMap map in maps)
            {
                ret.Add(new WebMiniEPG(map.ReferencedChannel()));
            }
            return(ret);
        }
 public void LoadGroups()
 {
     // load all distinct groups
     try
     {
         GroupComboBox.Items.Clear();
         GroupComboBox.Items.Add(new CBChannelGroup("", -1));
         GroupComboBox.Tag = "";
         if (IsTvMapping)
         {
             IList <ChannelGroup> channelGroups = ChannelGroup.ListAll();
             foreach (ChannelGroup cg in channelGroups)
             {
                 GroupComboBox.Items.Add(new CBChannelGroup(cg.GroupName, cg.IdGroup));
             }
         }
         else
         {
             IList <RadioChannelGroup> channelGroups = RadioChannelGroup.ListAll();
             foreach (RadioChannelGroup cg in channelGroups)
             {
                 GroupComboBox.Items.Add(new CBChannelGroup(cg.GroupName, cg.IdGroup));
             }
         }
     }
     catch (Exception e)
     {
         Log.Error("Failed to load groups {0}", e.Message);
     }
 }
예제 #9
0
 public WebCount GetRadioGroupCount()
 {
     return(new WebCount()
     {
         Count = RadioChannelGroup.ListAll().Count
     });
 }
예제 #10
0
        public static RadioChannelGroup ToRadioChannelGroup(this WebChannelGroup group)
        {
            if (group == null)
            {
                return(null);
            }

            return(RadioChannelGroup.Retrieve(group.Id));
        }
        private void ReOrderGroups()
        {
            for (int i = 1; i < tabControl1.TabPages.Count; i++)
            {
                RadioChannelGroup group = (RadioChannelGroup)tabControl1.TabPages[i].Tag;

                group.SortOrder = i - 1;
                group.Persist();
            }
        }
        private void tabControl1_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Right)
            {
                return;
            }

            int targetIndex = -1;

            System.Drawing.Point pt = new System.Drawing.Point(e.X, e.Y);

            for (int i = 0; i < tabControl1.TabPages.Count; i++)
            {
                if (tabControl1.GetTabRect(i).Contains(pt))
                {
                    targetIndex = i;
                    break;
                }
            }

            //first tab isn't a group tab
            if (targetIndex < 1)
            {
                return;
            }

            RadioChannelGroup group = tabControl1.TabPages[targetIndex].Tag as RadioChannelGroup;

            if (group == null)
            {
                return;
            }

            bool isFixedGroupName = (
                group.GroupName == TvConstants.TvGroupNames.AllChannels ||
                group.GroupName == TvConstants.TvGroupNames.Analog ||
                group.GroupName == TvConstants.TvGroupNames.DVBC ||
                group.GroupName == TvConstants.TvGroupNames.DVBS ||
                group.GroupName == TvConstants.TvGroupNames.DVBT
                );

            bool isGlobalChannelsGroup = (
                group.GroupName == TvConstants.TvGroupNames.AllChannels
                );

            renameGroupToolStripMenuItem.Tag = tabControl1.TabPages[targetIndex];
            deleteGroupToolStripMenuItem.Tag = renameGroupToolStripMenuItem.Tag;

            renameGroupToolStripMenuItem.Enabled = !isFixedGroupName;
            deleteGroupToolStripMenuItem.Enabled = !isGlobalChannelsGroup;

            pt = tabControl1.PointToScreen(pt);

            groupTabContextMenuStrip.Show(pt);
        }
        private void OnAddToFavoritesMenuItem_Click(object sender, EventArgs e)
        {
            RadioChannelGroup group;
            ToolStripMenuItem menuItem = (ToolStripMenuItem)sender;

            if (menuItem.Tag == null)
            {
                GroupNameForm dlg = new GroupNameForm();
                dlg.IsRadio = true;
                if (dlg.ShowDialog(this) != DialogResult.OK)
                {
                    return;
                }
                group = new RadioChannelGroup(dlg.GroupName, 9999);
                group.Persist();

                this.RefreshContextMenu();
                this.RefreshTabs();
            }
            else
            {
                group = (RadioChannelGroup)menuItem.Tag;
            }

            ListView.SelectedIndexCollection indexes = mpListView1.SelectedIndices;
            if (indexes.Count == 0)
            {
                return;
            }
            TvBusinessLayer layer = new TvBusinessLayer();

            for (int i = 0; i < indexes.Count; ++i)
            {
                ListViewItem item = mpListView1.Items[indexes[i]];

                Channel channel = (Channel)item.Tag;
                layer.AddChannelToRadioGroup(channel, group);

                IList <string> groups     = channel.GroupNames;
                List <string>  groupNames = new List <string>();
                foreach (string groupName in groups)
                {
                    if (groupName != TvConstants.TvGroupNames.AllChannels &&
                        groupName != TvConstants.RadioGroupNames.AllChannels)
                    {
                        //Don't add "All Channels"
                        groupNames.Add(groupName);
                    }
                }
                item.SubItems[2].Text = String.Join(", ", groupNames.ToArray());
            }

            mpListView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
        }
예제 #14
0
        private void OnAddToFavoritesMenuItem_Click(object sender, EventArgs e)
        {
            RadioChannelGroup group;
            ToolStripMenuItem menuItem = (ToolStripMenuItem)sender;

            if (menuItem.Tag == null)
            {
                GroupNameForm dlg = new GroupNameForm();
                dlg.IsRadio = true;
                if (dlg.ShowDialog(this) != DialogResult.OK)
                {
                    return;
                }
                group = new RadioChannelGroup(dlg.GroupName, 9999);
                group.Persist();

                this.RefreshContextMenu();
                this.RefreshTabs();
            }
            else
            {
                group = (RadioChannelGroup)menuItem.Tag;
            }

            ListView.SelectedIndexCollection indexes = mpListView1.SelectedIndices;
            if (indexes.Count == 0)
            {
                return;
            }
            TvBusinessLayer layer = new TvBusinessLayer();

            for (int i = 0; i < indexes.Count; ++i)
            {
                ListViewItem item = mpListView1.Items[indexes[i]];

                Channel channel = (Channel)item.Tag;
                layer.AddChannelToRadioGroup(channel, group);

                string groupString = item.SubItems[1].Text;
                if (groupString == string.Empty)
                {
                    groupString = group.GroupName;
                }
                else
                {
                    groupString += ", " + group.GroupName;
                }

                item.SubItems[1].Text = groupString;
            }

            mpListView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
        }
예제 #15
0
 public override bool GetChannelGroups(out IList <IChannelGroup> groups)
 {
     groups = TvDatabase.ChannelGroup.ListAll()
              .OrderBy(tvGroup => tvGroup.SortOrder)
              .Select(tvGroup => tvGroup.ToChannelGroup())
              .Union(
         RadioChannelGroup.ListAll()
         .OrderBy(radioGroup => radioGroup.SortOrder)
         .Select(radioGroup => radioGroup.ToChannelGroup())
         )
              .ToList();
     return(true);
 }
예제 #16
0
        public override async Task <AsyncResult <IList <IChannelGroup> > > GetChannelGroupsAsync()
        {
            await _initComplete.Task;

            var groups = TvDatabase.ChannelGroup.ListAll()
                         .OrderBy(tvGroup => tvGroup.SortOrder)
                         .Select(tvGroup => tvGroup.ToChannelGroup())
                         .Union(
                RadioChannelGroup.ListAll()
                .OrderBy(radioGroup => radioGroup.SortOrder)
                .Select(radioGroup => radioGroup.ToChannelGroup())
                )
                         .ToList();

            return(new AsyncResult <IList <IChannelGroup> >(true, groups));
        }
예제 #17
0
        public List <WebChannelGroup> GetRadioChannelGroups()
        {
            List <WebChannelGroup> ret = new List <WebChannelGroup>();

            if (!ConnectToDatabase())
            {
                return(ret);
            }
            IList <RadioChannelGroup> groups = RadioChannelGroup.ListAll();

            foreach (RadioChannelGroup group in groups)
            {
                ret.Add(new WebChannelGroup(group.IdGroup, group.GroupName));
            }
            return(ret);
        }
예제 #18
0
        private void UpdateMenuAndTabs()
        {
            addToFavoritesToolStripMenuItem.DropDownItems.Clear();

            IList <RadioChannelGroup> groups = RadioChannelGroup.ListAll();

            foreach (RadioChannelGroup group in groups)
            {
                ToolStripMenuItem item = new ToolStripMenuItem(group.GroupName);

                item.Tag    = group;
                item.Click += addToFavoritesToolStripMenuItem_Click;

                addToFavoritesToolStripMenuItem.DropDownItems.Add(item);
            }
        }
        private void renameGroupToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ToolStripDropDownItem menuItem = sender as ToolStripDropDownItem;

            if (menuItem == null)
            {
                return;
            }

            TabPage tab = menuItem.Tag as TabPage;

            if (tab == null)
            {
                return;
            }

            RadioChannelGroup group = tab.Tag as RadioChannelGroup;

            if (group == null)
            {
                return;
            }

            GroupNameForm dlg = new GroupNameForm(group.GroupName);

            dlg.ShowDialog(this);

            if (dlg.GroupName.Length == 0)
            {
                return;
            }

            group.GroupName = dlg.GroupName;
            group.Persist();

            tab.Text = dlg.GroupName;

            if (group.ReferringRadioGroupMap().Count > 0 && tabControl1.SelectedIndex == 0)
            {
                this.RefreshContextMenu();
                this.RefreshAllChannels();
            }
            else
            {
                this.RefreshContextMenu();
            }
        }
        private void deleteGroupToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ToolStripDropDownItem menuItem = sender as ToolStripDropDownItem;

            if (menuItem == null)
            {
                return;
            }

            TabPage tab = menuItem.Tag as TabPage;

            if (tab == null)
            {
                return;
            }

            RadioChannelGroup group = tab.Tag as RadioChannelGroup;

            if (group == null)
            {
                return;
            }

            DialogResult result = MessageBox.Show(string.Format("Are you sure you want to delete the group '{0}'?",
                                                                group.GroupName), "", MessageBoxButtons.YesNo);

            if (result == DialogResult.No)
            {
                return;
            }

            bool groupIsEmpty = (group.ReferringRadioGroupMap().Count <= 0);

            group.Delete();
            tabControl1.TabPages.Remove(tab);

            if (!groupIsEmpty && tabControl1.SelectedIndex == 0)
            {
                this.RefreshContextMenu();
                this.RefreshAllChannels();
            }
            else
            {
                this.RefreshContextMenu();
            }
        }
        private void mpButtonAddGroup_Click(object sender, EventArgs e)
        {
            GroupNameForm dlg = new GroupNameForm();

            dlg.IsRadio = true;

            if (dlg.ShowDialog(this) != DialogResult.OK)
            {
                return;
            }

            RadioChannelGroup group = new RadioChannelGroup(dlg.GroupName, 9999);

            group.Persist();

            this.RefreshContextMenu();
            this.RefreshTabs();
        }
        public static WebChannelGroup ToWebChannelGroup(this RadioChannelGroup group)
        {
            if (group == null)
            {
                Log.Warn("Tried to convert a null ChannelGroup to WebChannelGroup");
                return(null);
            }

            return(new WebChannelGroup
            {
                GroupName = group.GroupName,
                Id = group.IdGroup,
                IsChanged = group.IsChanged,
                SortOrder = group.SortOrder,
                IsRadio = true,
                IsTv = false
            });
        }
예제 #23
0
        private void addToFavoritesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            RadioChannelGroup group;
            ToolStripMenuItem menuItem = (ToolStripMenuItem)sender;

            if (menuItem.Tag == null)
            {
                GroupNameForm dlg = new GroupNameForm();
                dlg.IsRadio = true;

                if (dlg.ShowDialog(this) != DialogResult.OK)
                {
                    return;
                }

                group = new RadioChannelGroup(dlg.GroupName, 9999);
                group.Persist();

                UpdateMenuAndTabs();
            }
            else
            {
                group = (RadioChannelGroup)menuItem.Tag;
            }

            ListView.SelectedIndexCollection indexes = listView1.SelectedIndices;
            if (indexes.Count == 0)
            {
                return;
            }

            TvBusinessLayer layer = new TvBusinessLayer();

            for (int i = 0; i < indexes.Count; ++i)
            {
                ListViewItem  item    = listView1.Items[indexes[i]];
                RadioGroupMap map     = (RadioGroupMap)item.Tag;
                Channel       channel = map.ReferencedChannel();
                layer.AddChannelToRadioGroup(channel, group.GroupName);
            }
        }
        private void RefreshContextMenu()
        {
            addToFavoritesToolStripMenuItem.DropDownItems.Clear();

            IList <RadioChannelGroup> groups = RadioChannelGroup.ListAll();

            foreach (RadioChannelGroup group in groups)
            {
                ToolStripMenuItem item = new ToolStripMenuItem(group.GroupName);

                item.Tag    = group;
                item.Click += OnAddToFavoritesMenuItem_Click;

                addToFavoritesToolStripMenuItem.DropDownItems.Add(item);
            }

            ToolStripMenuItem itemNew = new ToolStripMenuItem("New...");

            itemNew.Click += OnAddToFavoritesMenuItem_Click;
            addToFavoritesToolStripMenuItem.DropDownItems.Add(itemNew);
        }
 private void GetGroupNames()
 {
     if (_isRadio)
     {
         IList <RadioChannelGroup> groups = RadioChannelGroup.ListAll();
         _groupNames = new List <string>();
         foreach (RadioChannelGroup group in groups)
         {
             _groupNames.Add(group.GroupName);
         }
     }
     else
     {
         IList <ChannelGroup> groups = ChannelGroup.ListAll();
         _groupNames = new List <string>();
         foreach (ChannelGroup group in groups)
         {
             _groupNames.Add(group.GroupName);
         }
     }
 }
예제 #26
0
 public override bool GetChannels(IChannelGroup group, out IList <IChannel> channels)
 {
     if (group.ChannelGroupId < 0)
     {
         var radioGroup    = RadioChannelGroup.Retrieve(-group.ChannelGroupId);
         var radioChannels = radioGroup.ReferringRadioGroupMap().OrderBy(rgm => rgm.SortOrder).Select(rgm => rgm.ReferencedChannel());
         channels = radioChannels
                    .Where(c => c.VisibleInGuide)
                    .Select(c => c.ToChannel())
                    .ToList();
     }
     else
     {
         channels = _tvBusiness.GetChannelsInGroup(TvDatabase.ChannelGroup.Retrieve(group.ChannelGroupId))
                    // Bug? SortOrder contains logical channel number, not the group sort order?
                    // .OrderBy(c => c.SortOrder)
                    .Where(c => c.VisibleInGuide)
                    .Select(c => c.ToChannel())
                    .ToList();
     }
     return(true);
 }
        private void mpButtonDelGroup_Click(object sender, EventArgs e)
        {
            GroupSelectionForm dlgGrpSel = new GroupSelectionForm();

            if (dlgGrpSel.ShowDialog(typeof(RadioChannelGroup), this) != DialogResult.OK)
            {
                return;
            }

            RadioChannelGroup group = dlgGrpSel.Group as RadioChannelGroup;

            if (group == null)
            {
                return;
            }

            DialogResult result = MessageBox.Show(string.Format("Are you sure you want to delete the group '{0}'?",
                                                                group.GroupName), "", MessageBoxButtons.YesNo);

            if (result == DialogResult.No)
            {
                return;
            }

            bool isGroupEmpty = (group.ReferringRadioGroupMap().Count <= 0);

            group.Delete();

            if (!isGroupEmpty)
            {
                this.RefreshAll();
            }
            else
            {
                this.RefreshContextMenu();
                this.RefreshTabs();
            }
        }
        private void mpButtonRenameGroup_Click(object sender, EventArgs e)
        {
            GroupSelectionForm dlgGrpSel = new GroupSelectionForm();

            dlgGrpSel.Selection = GroupSelectionForm.SelectionType.ForRenaming;

            if (dlgGrpSel.ShowDialog(typeof(RadioChannelGroup), this) != DialogResult.OK)
            {
                return;
            }

            RadioChannelGroup group = dlgGrpSel.Group as RadioChannelGroup;

            if (group == null)
            {
                return;
            }

            GroupNameForm dlgGrpName = new GroupNameForm(group.GroupName);

            if (dlgGrpName.ShowDialog(this) != DialogResult.OK)
            {
                return;
            }

            group.GroupName = dlgGrpName.GroupName;
            group.Persist();

            if (group.ReferringRadioGroupMap().Count > 0)
            {
                this.RefreshAll();
            }
            else
            {
                this.RefreshContextMenu();
                this.RefreshTabs();
            }
        }
예제 #29
0
        public void ReLoad()
        {
            //System.Diagnostics.Debugger.Launch();
            try
            {
                SetupDatabaseConnection();
                Log.Info("get channels from database");
                SqlBuilder sb = new SqlBuilder(StatementType.Select, typeof(Channel));
                sb.AddConstraint(Operator.Equals, "isTv", 1);
                sb.AddOrderByField(true, "sortOrder");
                SqlStatement stmt = sb.GetStatement(true);
                channels = ObjectFactory.GetCollection(typeof(Channel), stmt.Execute());
                Log.Info("found:{0} tv channels", channels.Count);
                TvNotifyManager.OnNotifiesChanged();
                m_groups.Clear();

                TvBusinessLayer   layer = new TvBusinessLayer();
                RadioChannelGroup allRadioChannelsGroup =
                    layer.GetRadioChannelGroupByName(TvConstants.RadioGroupNames.AllChannels);
                IList <Channel> radioChannels = layer.GetAllRadioChannels();
                if (radioChannels != null)
                {
                    if (radioChannels.Count > allRadioChannelsGroup.ReferringRadioGroupMap().Count)
                    {
                        foreach (Channel radioChannel in radioChannels)
                        {
                            layer.AddChannelToRadioGroup(radioChannel, allRadioChannelsGroup);
                        }
                    }
                }
                Log.Info("Done.");

                Log.Info("get all groups from database");
                sb = new SqlBuilder(StatementType.Select, typeof(ChannelGroup));
                sb.AddOrderByField(true, "groupName");
                stmt = sb.GetStatement(true);
                IList <ChannelGroup> groups       = ObjectFactory.GetCollection <ChannelGroup>(stmt.Execute());
                IList <GroupMap>     allgroupMaps = GroupMap.ListAll();

                bool hideAllChannelsGroup = false;
                using (
                    Settings xmlreader =
                        new MPSettings())
                {
                    hideAllChannelsGroup = xmlreader.GetValueAsBool("mytv", "hideAllChannelsGroup", false);
                }


                foreach (ChannelGroup group in groups)
                {
                    if (group.GroupName == TvConstants.TvGroupNames.AllChannels)
                    {
                        foreach (Channel channel in channels)
                        {
                            if (channel.IsTv == false)
                            {
                                continue;
                            }
                            bool groupContainsChannel = false;
                            foreach (GroupMap map in allgroupMaps)
                            {
                                if (map.IdGroup != group.IdGroup)
                                {
                                    continue;
                                }
                                if (map.IdChannel == channel.IdChannel)
                                {
                                    groupContainsChannel = true;
                                    break;
                                }
                            }
                            if (!groupContainsChannel)
                            {
                                layer.AddChannelToGroup(channel, TvConstants.TvGroupNames.AllChannels);
                            }
                        }
                        break;
                    }
                }

                groups = ChannelGroup.ListAll();
                foreach (ChannelGroup group in groups)
                {
                    //group.GroupMaps.ApplySort(new GroupMap.Comparer(), false);
                    if (hideAllChannelsGroup && group.GroupName.Equals(TvConstants.TvGroupNames.AllChannels) && groups.Count > 1)
                    {
                        continue;
                    }
                    m_groups.Add(group);
                }
                Log.Info("loaded {0} tv groups", m_groups.Count);

                //TVHome.Connected = true;
            }
            catch (Exception ex)
            {
                Log.Error("TVHome: Error in Reload");
                Log.Error(ex);
                //TVHome.Connected = false;
            }
        }
예제 #30
0
        protected override void LoadDirectory(string strNewDirectory)
        {
            GUIListItem SelectedItem = facadeLayout.SelectedListItem;

            if (SelectedItem != null)
            {
                if (SelectedItem.IsFolder && SelectedItem.Label != "..")
                {
                    directoryHistory.Set(SelectedItem.Label, currentFolder);
                }
            }
            currentFolder = strNewDirectory;
            GUIControl.ClearControl(GetID, facadeLayout.GetID);

            int totalItems = 0;

            if (currentFolder == null || currentFolder == "..")
            {
                IList <RadioChannelGroup> groups = RadioChannelGroup.ListAll();
                foreach (RadioChannelGroup group in groups)
                {
                    if (hideAllChannelsGroup && group.GroupName.Equals(TvConstants.RadioGroupNames.AllChannels) &&
                        groups.Count > 1)
                    {
                        continue;
                    }

                    if (group.GroupName == rootGroup)
                    {
                        continue;
                    }
                    GUIListItem item = new GUIListItem();
                    item.Label          = group.GroupName;
                    item.IsFolder       = true;
                    item.MusicTag       = group;
                    item.ThumbnailImage = String.Empty;
                    Utils.SetDefaultIcons(item);
                    string thumbnail = Utils.GetCoverArt(Thumbs.Radio, "folder_" + group.GroupName);
                    if (!string.IsNullOrEmpty(thumbnail))
                    {
                        item.IconImageBig   = thumbnail;
                        item.IconImage      = thumbnail;
                        item.ThumbnailImage = thumbnail;
                    }
                    facadeLayout.Add(item);
                    totalItems++;
                }
                if (rootGroup != "(none)")
                {
                    TvBusinessLayer   layer = new TvBusinessLayer();
                    RadioChannelGroup root  = layer.GetRadioChannelGroupByName(rootGroup);
                    if (root != null)
                    {
                        IList <RadioGroupMap> maps = root.ReferringRadioGroupMap();
                        foreach (RadioGroupMap map in maps)
                        {
                            Channel     channel = map.ReferencedChannel();
                            GUIListItem item    = new GUIListItem();

                            if (_currentChannel != null)
                            {
                                if (channel.IdChannel == _currentChannel.IdChannel)
                                {
                                    selectedItemIndex = totalItems - 1;
                                }
                            }

                            item.Label    = channel.DisplayName;
                            item.IsFolder = false;
                            item.MusicTag = channel;
                            if (channel.IsWebstream())
                            {
                                item.IconImageBig = "DefaultMyradioStreamBig.png";
                                item.IconImage    = "DefaultMyradioStream.png";
                            }
                            else
                            {
                                item.IconImageBig = "DefaultMyradioBig.png";
                                item.IconImage    = "DefaultMyradio.png";
                            }
                            string thumbnail = Utils.GetCoverArt(Thumbs.Radio, channel.DisplayName);
                            if (!string.IsNullOrEmpty(thumbnail))
                            {
                                item.IconImageBig   = thumbnail;
                                item.IconImage      = thumbnail;
                                item.ThumbnailImage = thumbnail;
                            }
                            facadeLayout.Add(item);
                            totalItems++;
                        }
                    }
                }
                selectedGroup = null;
            }
            else
            {
                TvBusinessLayer   layer = new TvBusinessLayer();
                RadioChannelGroup group = layer.GetRadioChannelGroupByName(currentFolder);
                if (group == null)
                {
                    return;
                }
                selectedGroup = group;
                lastFolder    = currentFolder;
                GUIListItem item = new GUIListItem();
                item.Label          = "..";
                item.IsFolder       = true;
                item.MusicTag       = null;
                item.ThumbnailImage = String.Empty;
                Utils.SetDefaultIcons(item);
                facadeLayout.Add(item);
                IList <RadioGroupMap> maps = group.ReferringRadioGroupMap();
                foreach (RadioGroupMap map in maps)
                {
                    Channel channel = map.ReferencedChannel();

                    if (channel != null)
                    {
                        item              = new GUIListItem();
                        item.Label        = channel.DisplayName;
                        item.IsFolder     = false;
                        item.MusicTag     = channel;
                        item.AlbumInfoTag = map;
                        if (channel.IsWebstream())
                        {
                            item.IconImageBig = "DefaultMyradioStreamBig.png";
                            item.IconImage    = "DefaultMyradioStream.png";
                        }
                        else
                        {
                            item.IconImageBig = "DefaultMyradioBig.png";
                            item.IconImage    = "DefaultMyradio.png";
                        }
                        string thumbnail = Utils.GetCoverArt(Thumbs.Radio, channel.DisplayName);
                        if (!string.IsNullOrEmpty(thumbnail))
                        {
                            item.IconImageBig   = thumbnail;
                            item.IconImage      = thumbnail;
                            item.ThumbnailImage = thumbnail;
                        }
                        facadeLayout.Add(item);
                        totalItems++;
                    }
                }
            }

            SwitchLayout();
            OnSort();

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

            SelectCurrentItem();
            SetLabels();

            for (int i = 0; i < facadeLayout.Count; ++i)
            {
                GUIListItem item = facadeLayout[i];
                if (item != null)
                {
                    Channel channel = item.MusicTag as Channel;

                    if ((channel != null) && (_currentChannel != null))
                    {
                        if (channel.IdChannel == _currentChannel.IdChannel)
                        {
                            selectedItemIndex = i++;
                            break;
                        }
                    }
                }

                //set selected item
                if (selectedItemIndex >= 0)
                {
                    GUIControl.SelectItemControl(GetID, facadeLayout.GetID, selectedItemIndex);
                }
            }
        }
        public bool ReadAllRadioChannelGroups(out IList<RadioChannelGroup> allgroups)
        {
            allgroups = new List<RadioChannelGroup>();

            try
            {
                IList<WebChannelGroup> radioGroups = TvServer(_server_index).GetRadioGroups();

                foreach (WebChannelGroup myradiochannelgroup in radioGroups)
                {
                    RadioChannelGroup item = new RadioChannelGroup();
                    item.Id = myradiochannelgroup.Id;
                    item.GroupName = myradiochannelgroup.GroupName;
                    allgroups.Add(item);
                }
                return true;
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message);
            }
            return false;
        }
 public bool ReadAllRadioChannelGroups(out IList<IRadioChannelGroup> allRadioChannelGroups)
 {
     allRadioChannelGroups = new List<IRadioChannelGroup>();
     try
     {
         string response = string.Empty;
         string command = PipeCommands.ReadAllRadioChannelGroups.ToString();
         Log.Debug("command=" + command);
         response = PipeClient.Instance.RunSingleCommand(command);
         Log.Debug("response=" + response);
         string[] allRadioChannelGroupsString = response.Split('\n');
         for (int i = 0; i < (allRadioChannelGroupsString.Length-1) / 2; i++)
         {
             RadioChannelGroup myRadiochannelgroup = new RadioChannelGroup();
             myRadiochannelgroup.Id = int.Parse(allRadioChannelGroupsString[2*i]);
             myRadiochannelgroup.GroupName = allRadioChannelGroupsString[2*i + 1];
             allRadioChannelGroups.Add(myRadiochannelgroup);
         }
     }
     catch (Exception exc)
     {
         Log.Debug("***Error ReadAllRadioChannelGroups: Exception=" + exc.Message);
         return false;
     }
     return true;
 }