Пример #1
0
 /// <summary>
 /// Event arguments for node callback events.
 /// </summary>
 /// <param name="NodeName">Name of node.</param>
 /// <param name="Configuration">Node configuration.</param>
 /// <param name="e">IQ result event arguments.</param>
 public ConfigurationEventArgs(string NodeName, NodeConfiguration Configuration,
                               DataFormEventArgs e)
     : base(e.Form, e)
 {
     this.nodeName      = NodeName;
     this.configuration = Configuration;
 }
 /// <summary>
 /// Event arguments for node subscription options callback events.
 /// </summary>
 /// <param name="NodeName">Name of node.</param>
 /// <param name="Jid">JID of subscription.</param>
 /// <param name="Options">Subscription options, if available.</param>
 /// <param name="e">IQ result event arguments.</param>
 public SubscriptionOptionsEventArgs(string NodeName, string Jid, SubscriptionOptions Options,
                                     DataFormEventArgs e)
     : base(e.Form, e)
 {
     this.nodeName = NodeName;
     this.jid      = Jid;
     this.options  = Options;
 }
Пример #3
0
 /// <summary>
 /// Event arguments for node subscription callback events.
 /// </summary>
 /// <param name="NodeName">Name of node.</param>
 /// <param name="Jid">JID of subscription.</param>
 /// <param name="SubscriptionId">Subscription ID</param>
 /// <param name="Options">Subscription options, if available.</param>
 /// <param name="Availability">If options are supported.</param>
 /// <param name="Expires">When the subscription expires.</param>
 /// <param name="Status">Status of subscription.</param>
 /// <param name="e">IQ result event arguments.</param>
 public SubscriptionEventArgs(string NodeName, string Jid, string SubscriptionId,
                              SubscriptionOptions Options, OptionsAvailability Availability, DateTime Expires,
                              NodeSubscriptionStatus Status, DataFormEventArgs e)
     : base(NodeName, Jid, Options, e)
 {
     this.availability   = Availability;
     this.expires        = Expires;
     this.subscriptionId = SubscriptionId;
     this.status         = Status;
 }
Пример #4
0
        private async Task GetFormResult(object Sender, IqResultEventArgs e)
        {
            object[] P = (object[])e.State;
            DataFormResultEventHandler Callback = (DataFormResultEventHandler)P[0];

            if (Callback is null)
            {
                return;
            }

            object State = P[1];

            ThingReference[] Nodes = (ThingReference[])P[2];
            DataForm         Form  = null;

            if (e.Ok)
            {
                foreach (XmlNode N in e.Response.ChildNodes)
                {
                    if (N.LocalName == "x")
                    {
                        Form = new DataForm(this.client, (XmlElement)N, this.SubmitForm, this.CancelForm, e.From, e.To);
                        break;
                    }
                }

                if (!(Form is null))
                {
                    Form.State = Nodes;
                }
            }

            if (!(Callback is null))
            {
                DataFormEventArgs e2 = new DataFormEventArgs(Form, e);
                try
                {
                    e2.State = State;
                    await Callback(this, e2);
                }
                catch (Exception ex)
                {
                    Log.Critical(ex);
                }
            }
        }
Пример #5
0
        private async void ControlFormResponse(object Sender, DataFormEventArgs e)
        {
            try
            {
                if (e.Ok)
                {
                    string[] Parameters;

                    lock (this.parametersSorted)
                    {
                        foreach (Field F in e.Form.Fields)
                        {
                            if (!F.ReadOnly && !F.Exclude)
                            {
                                this.parametersSorted[F.Var] = true;
                            }
                        }

                        Parameters = new string[this.parametersSorted.Count];
                        this.parametersSorted.Keys.CopyTo(Parameters, 0);
                    }

                    this.availableParameterNames = Parameters;
                    await Database.Update(this);

                    DispatcherOperation Op = MainWindow.currentInstance.Dispatcher.BeginInvoke(new ThreadStart(() =>
                    {
                        SortedDictionary <string, bool> Selected = null;
                        bool AllSelected = this.parameterNames == null;

                        if (!AllSelected)
                        {
                            Selected = new SortedDictionary <string, bool>(StringComparer.CurrentCultureIgnoreCase);

                            foreach (ListBoxItem Item in this.parametersListBox.Items)
                            {
                                if (Item.IsSelected)
                                {
                                    Selected[(string)Item.Tag] = true;
                                }
                            }
                        }

                        this.parametersListBox.Items.Clear();

                        foreach (string ParameterName in this.availableParameterNames)
                        {
                            this.parametersListBox.Items.Add(new ListBoxItem()
                            {
                                Content    = ParameterName,
                                IsSelected = AllSelected || Selected.ContainsKey(ParameterName),
                                Tag        = ParameterName
                            });
                        }
                    }));
                }
                else
                {
                    MainWindow.ErrorBox(string.IsNullOrEmpty(e.ErrorText) ? "Unable to get control form." : e.ErrorText);
                }
            }
            catch (Exception ex)
            {
                ex = Log.UnnestException(ex);
                MainWindow.ErrorBox(ex.Message);
            }
        }