Index: CardDvbC.cs
===================================================================
--- CardDvbC.cs	(revision 26874)
+++ CardDvbC.cs	(working copy)
@@ -516,98 +516,103 @@
           {
             Channel dbChannel;
             DVBCChannel channel = (DVBCChannel)channels[i];
-            //TuningDetail currentDetail = layer.GetChannel(channel);
-            TuningDetail currentDetail = layer.GetChannel(channel.Provider, channel.Name, channel.ServiceId);
-            bool exists;
-            if (currentDetail == null)
+            if (channel.FreeToAir)
             {
-              //add new channel
-              exists = false;
-              dbChannel = layer.AddNewChannel(channel.Name);
-              dbChannel.SortOrder = 10000;
-              if (channel.LogicalChannelNumber >= 1)
-              {
-                dbChannel.SortOrder = channel.LogicalChannelNumber;
-              }
-            }
-            else
-            {
-              exists = true;
-              dbChannel = currentDetail.ReferencedChannel();
-            }
 
-            dbChannel.IsTv = channel.IsTv;
-            dbChannel.IsRadio = channel.IsRadio;
-            dbChannel.Persist();
-
-            if (dbChannel.IsTv)
-            {
-              layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels);
-              if (checkBoxCreateSignalGroup.Checked)
+              //TuningDetail currentDetail = layer.GetChannel(channel);
+              TuningDetail currentDetail = layer.GetChannel(channel.Provider, channel.Name, channel.ServiceId);
+              bool exists;
+              if (currentDetail == null)
               {
-                layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.DVBC);
+                //add new channel
+                exists = false;
+                dbChannel = layer.AddNewChannel(channel.Name);
+                dbChannel.SortOrder = 10000;
+                if (channel.LogicalChannelNumber >= 1)
+                {
+                  dbChannel.SortOrder = channel.LogicalChannelNumber;
+                }
               }
-              if (checkBoxCreateGroups.Checked)
+              else
               {
-                layer.AddChannelToGroup(dbChannel, channel.Provider);
+                exists = true;
+                dbChannel = currentDetail.ReferencedChannel();
               }
-            }
-            if (dbChannel.IsRadio)
-            {
-              layer.AddChannelToRadioGroup(dbChannel, TvConstants.RadioGroupNames.AllChannels);
-              if (checkBoxCreateSignalGroup.Checked)
+
+              dbChannel.IsTv = channel.IsTv;
+              dbChannel.IsRadio = channel.IsRadio;
+              dbChannel.Persist();
+
+              if (dbChannel.IsTv)
               {
-                layer.AddChannelToRadioGroup(dbChannel, TvConstants.RadioGroupNames.DVBC);
+                layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels);
+                if (checkBoxCreateSignalGroup.Checked)
+                {
+                  layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.DVBC);
+                }
+                if (checkBoxCreateGroups.Checked)
+                {
+                  layer.AddChannelToGroup(dbChannel, channel.Provider);
+                }
               }
-              if (checkBoxCreateGroups.Checked)
+              if (dbChannel.IsRadio)
               {
-                layer.AddChannelToRadioGroup(dbChannel, channel.Provider);
+                layer.AddChannelToRadioGroup(dbChannel, TvConstants.RadioGroupNames.AllChannels);
+                if (checkBoxCreateSignalGroup.Checked)
+                {
+                  layer.AddChannelToRadioGroup(dbChannel, TvConstants.RadioGroupNames.DVBC);
+                }
+                if (checkBoxCreateGroups.Checked)
+                {
+                  layer.AddChannelToRadioGroup(dbChannel, channel.Provider);
+                }
               }
-            }
 
-            if (currentDetail == null)
-            {
-              layer.AddTuningDetails(dbChannel, channel);
-            }
-            else
-            {
-              //update tuning details...
-              TuningDetail td = layer.UpdateTuningDetails(dbChannel, channel, currentDetail);
-              td.Persist();
-            }
-
-            if (channel.IsTv)
-            {
-              if (exists)
+              if (currentDetail == null)
               {
-                tv.updChannel++;
+                layer.AddTuningDetails(dbChannel, channel);
               }
               else
               {
-                tv.newChannel++;
-                tv.newChannels.Add(channel);
+                //update tuning details...
+                TuningDetail td = layer.UpdateTuningDetails(dbChannel, channel, currentDetail);
+                td.Persist();
               }
-            }
-            if (channel.IsRadio)
-            {
-              if (exists)
+
+              if (channel.IsTv)
               {
-                radio.updChannel++;
+                if (exists)
+                {
+                  tv.updChannel++;
+                }
+                else
+                {
+                  tv.newChannel++;
+                  tv.newChannels.Add(channel);
+                }
               }
-              else
+              if (channel.IsRadio)
               {
-                radio.newChannel++;
-                radio.newChannels.Add(channel);
+                if (exists)
+                {
+                  radio.updChannel++;
+                }
+                else
+                {
+                  radio.newChannel++;
+                  radio.newChannels.Add(channel);
+                }
               }
+              layer.MapChannelToCard(card, dbChannel, false);
+              line = String.Format("{0}tp- {1} {2} {3}:New TV/Radio:{4}/{5} Updated TV/Radio:{6}/{7}", 1 + index,
+                                   tuneChannel.Frequency, tuneChannel.ModulationType, tuneChannel.SymbolRate,
+                                   tv.newChannel, radio.newChannel, tv.updChannel, radio.updChannel);
+              item.Text = line;
             }
-            layer.MapChannelToCard(card, dbChannel, false);
-            line = String.Format("{0}tp- {1} {2} {3}:New TV/Radio:{4}/{5} Updated TV/Radio:{6}/{7}", 1 + index,
-                                 tuneChannel.Frequency, tuneChannel.ModulationType, tuneChannel.SymbolRate,
-                                 tv.newChannel, radio.newChannel, tv.updChannel, radio.updChannel);
-            item.Text = line;
           }
-          tv.updChannelSum += tv.updChannel;
-          radio.updChannelSum += radio.updChannel;
+            tv.updChannelSum += tv.updChannel;
+            radio.updChannelSum += radio.updChannel;
+          
         }
       }
       catch (Exception ex)
