Exemple #1
0
        private void messagesGrid_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
        {
            for (int i = 0; i < messagesGrid.Rows.Count; i++)
            {
                dal.Message currMessage = ((dal.Message)messagesGrid.Rows[i].DataBoundItem);
                ((DataGridViewTextBoxCell)messagesGrid.Rows[i].Cells[0]).Value = currMessage.TopicName + Environment.NewLine + Environment.NewLine + Encoding.UTF8.GetString(currMessage.Content);
                if (currMessage.Incoming)
                {
                    switch (currMessage.QOS)
                    {
                    case QOS.AT_MOST_ONCE:
                        ((DataGridViewImageCell)messagesGrid.Rows[i].Cells[1]).Value = (System.Drawing.Image)Properties.Resources.icon_in_qos_0;
                        break;

                    case QOS.AT_LEAST_ONCE:
                        ((DataGridViewImageCell)messagesGrid.Rows[i].Cells[1]).Value = (System.Drawing.Image)Properties.Resources.icon_in_qos_1;
                        break;

                    case QOS.EXACTLY_ONCE:
                        ((DataGridViewImageCell)messagesGrid.Rows[i].Cells[1]).Value = (System.Drawing.Image)Properties.Resources.icon_in_qos_2;
                        break;
                    }
                }
                else
                {
                    switch (currMessage.QOS)
                    {
                    case QOS.AT_MOST_ONCE:
                        ((DataGridViewImageCell)messagesGrid.Rows[i].Cells[1]).Value = (System.Drawing.Image)Properties.Resources.icon_out_qos_0;
                        break;

                    case QOS.AT_LEAST_ONCE:
                        ((DataGridViewImageCell)messagesGrid.Rows[i].Cells[1]).Value = (System.Drawing.Image)Properties.Resources.icon_out_qos_1;
                        break;

                    case QOS.EXACTLY_ONCE:
                        ((DataGridViewImageCell)messagesGrid.Rows[i].Cells[1]).Value = (System.Drawing.Image)Properties.Resources.icon_out_qos_2;
                        break;
                    }
                }
            }
        }
Exemple #2
0
        private void sendButton_Click(object sender, EventArgs e)
        {
            if (txtContent.Text.Length == 0)
            {
                MessageBox.Show("Content is required");
                return;
            }

            if (txtTopic.Text.Length == 0)
            {
                MessageBox.Show("Topic is required");
                return;
            }

            if (cmbQOS.SelectedIndex == -1)
            {
                MessageBox.Show("Please choose QOS");
                return;
            }

            QOS messageQOS = QOS.AT_MOST_ONCE;

            switch (cmbQOS.SelectedIndex)
            {
            case 1:
                messageQOS = QOS.AT_LEAST_ONCE;
                break;

            case 2:
                messageQOS = QOS.EXACTLY_ONCE;
                break;
            }

            MQTTModel mqtt     = new MQTTModel();
            var       accounts = from a in mqtt.Accounts where a.IsDefault == true select a;

            dal.Message newMessage = new dal.Message();
            newMessage.Content   = Encoding.UTF8.GetBytes(txtContent.Text);
            newMessage.Incoming  = false;
            newMessage.QOS       = messageQOS;
            newMessage.TopicName = txtTopic.Text;
            newMessage.Account   = accounts.First();

            _client.Publish(new mqtt.avps.Topic(newMessage.TopicName, newMessage.QOS), newMessage.Content, chkRetain.Checked, chkDuplicate.Checked);
            mqtt.Accounts.Attach(newMessage.Account);
            mqtt.Messages.Add(newMessage);
            mqtt.Entry(newMessage.Account).State = EntityState.Unchanged;
            mqtt.SaveChanges();

            txtContent.Text      = String.Empty;
            txtTopic.Text        = String.Empty;
            cmbQOS.SelectedIndex = -1;
            chkDuplicate.Checked = false;
            chkRetain.Checked    = false;
            MessageBox.Show("Message Sent Succesfully", "Message Sent", MessageBoxButtons.OK, MessageBoxIcon.Information);

            List <dal.Message> messages = (from m in mqtt.Messages.Include("Account") where m.Account.ID == _account.ID orderby m.ID descending select m).ToList();

            this.Invoke((MethodInvoker) delegate { this.messagesGrid.DataSource = messages; });
            mqtt.Dispose();
        }