/// <summary>
        /// Checks the channels.
        /// </summary>
        private void CheckChannels()
        {
            try
            {
                List <ChannelStatusView> channels = new List <ChannelStatusView>();
                while (true)
                {
                    channels.Clear();
                    foreach (GatewayConfig gwConfig in GatewayConfig.All().OrderBy(gw => gw.Id))
                    {
                        try
                        {
                            EventAction action = new EventAction(StringEnum.GetStringValue(EventNotificationType.QueryGatewayStatus));
                            action.ActionType = EventAction.Synchronous;
                            action.Values.Add(EventParameter.GatewayId, gwConfig.Id);
                            EventResponse response = RemotingHelper.NotifyEvent(ServiceEventListenerUrl, action);

                            ChannelStatusView channel = new ChannelStatusView();
                            channel.Name = gwConfig.Id;
                            channel.Port = gwConfig.ComPort;

                            if (StringEnum.GetStringValue(EventNotificationResponse.Failed).Equals(response.Status))
                            {
                                channel.Status = StringEnum.GetStringValue(GatewayStatus.Stopped);
                            }
                            else
                            {
                                channel.Status         = response.Results[EventParameter.GatewayStatus];
                                channel.Operator       = response.Results[EventParameter.GatewayOperator];
                                channel.SignalStrength = response.Results[EventParameter.GatewaySignalStrength];
                            }

                            channels.Add(channel);
                        }
                        catch (Exception ex)
                        {
                            log.Error(string.Format("Error checking channel - [{0}]", gwConfig.Id));
                            log.Error(ex.Message, ex);
                        }
                    }
                    RefreshView(channels);
                    Thread.Sleep(ChannelPollingInterval);
                }
            }
            catch (Exception ex)
            {
                log.Error(ex.Message, ex);
            }
        }
        /// <summary>
        /// Shows the channels.
        /// </summary>
        private void ShowChannels()
        {
            lvwChannels.BeginUpdate();

            this.olvColumn1.ImageGetter = delegate(object row)
            {
                return(1);
            };
            this.olvColumn1.AspectGetter = delegate(object x) { return(((GatewayConfig)x).Id); };
            this.olvColumn2.AspectGetter = delegate(object x) { return(((GatewayConfig)x).ComPort); };
            this.olvColumn3.AspectGetter = delegate(object x) { return(((GatewayConfig)x).BaudRate); };
            this.olvColumn4.AspectGetter = delegate(object x) { return(Resources.MsgTypeSms); };
            this.olvColumn5.AspectGetter = delegate(object x) { return(Resources.ProtocolTypeGsm); };

            lvwChannels.SetObjects(GatewayConfig.All());
            //lvwChannels.AutoResizeColumn(0, ColumnHeaderAutoResizeStyle.ColumnContent);
            //lvwChannels.AutoResizeColumn(2, ColumnHeaderAutoResizeStyle.HeaderSize);

            lvwChannels.EndUpdate();
        }
 /// <summary>
 /// Shows the messages.
 /// </summary>
 public void RefreshView()
 {
     if (this.lvwChannels.InvokeRequired)
     {
         SetListCallback callback = new SetListCallback(RefreshView);
         this.Invoke(callback);
     }
     else
     {
         GatewayConfig selectedConfig = lvwChannels.SelectedObject as GatewayConfig;
         lvwChannels.BeginUpdate();
         lvwChannels.ClearObjects();
         lvwChannels.SetObjects(GatewayConfig.All());
         //lvwChannels.AutoResizeColumn(0, ColumnHeaderAutoResizeStyle.ColumnContent);
         //lvwChannels.AutoResizeColumn(2, ColumnHeaderAutoResizeStyle.HeaderSize);
         if (selectedConfig != null)
         {
             lvwChannels.SelectObject(selectedConfig);
         }
         lvwChannels.EndUpdate();
         lvwChannels.Refresh();
     }
 }
        /// <summary>
        /// Setups the message settings.
        /// </summary>
        public void SetupMessageSettings()
        {   
            // First option is any channels
            if (cboChannel.Items.Count > 0)
                cboChannel.Items.Clear();
            cboChannel.Items.Add(Resources.AnyChannels);

            // Load all channels
            foreach (GatewayConfig g in GatewayConfig.All().OrderBy(gw => gw.Id))
            {
                cboChannel.Items.Add(string.Join(GuiHelper.FieldSplitter, new string[]{g.Id, g.ComPort}));
            }
            cboChannel.SelectedIndex = 0;

            // Load message format
            cboMessageFormat.Items.Clear();
            StringEnum e = new StringEnum(typeof(MessageFormat));    
            foreach (string s in e.GetStringValues())
            {
                cboMessageFormat.Items.Add(s);
            }
            cboMessageFormat.SelectedIndex = 0;

            // Load message status report
            cboStatusReport.Items.Clear();
            e = new StringEnum(typeof(MessageStatusReport));
            foreach (string s in e.GetStringValues())
            {
                cboStatusReport.Items.Add(s);
            }
            cboStatusReport.SelectedIndex = 0;
   
            // Load message type
            cboMessageType.Items.Clear();
            e = new StringEnum(typeof(OutgoingMessageType));
            foreach (string s in e.GetStringValues())
            {
                cboMessageType.Items.Add(s);
            }
            cboMessageType.SelectedIndex = 0;

            // Load priority
            cboPriority.Items.Clear();
            cboPriority.Items.AddRange(EnumMatcher.MessagePriority.Keys.ToArray());
            cboPriority.SelectedIndex = 1;

            cboMessageClass.Items.Clear();
            cboMessageClass.Items.AddRange(EnumMatcher.MessageClass.Keys.ToArray());
            cboMessageClass.SelectedIndex = 0;

            npdQuantity.Value = 1;
            dtpScheduleTime.Value = DateTime.Now;
            //txtMessageContent.Text = string.Empty;

            // WAP push signal
            cboWapPushSignal.Items.Clear();
            cboWapPushSignal.Items.AddRange(EnumMatcher.ServiceIndication.Keys.ToArray());
            cboWapPushSignal.SelectedIndex = 0;

            if (this.Message != null)
            {
                PresetMessageDetails(this.Message);
            }
        }
 /// <summary>
 /// Refreshes the view.
 /// </summary>
 private void RefreshView()
 {
     List <GatewayConfig> gwList = new List <GatewayConfig>(GatewayConfig.All().OrderBy(gw => gw.Id).AsEnumerable());
 }