/// <summary> /// Called when the close button is clicked. /// </summary> private void DoneBTN_Click(object sender, System.EventArgs e) { try { m_areas = AreaSourcesListCTRL.GetAreas(); m_sources = AreaSourcesListCTRL.GetSources(); // don't activate until all the filters are applied. bool active = m_state.Active; bool update = m_subscription != null; // create new subscription. if (m_subscription == null) { m_state.Active = false; m_state.ClientHandle = Guid.NewGuid().ToString(); m_subscription = (Ae.TsCAeSubscription)m_server.CreateSubscription(m_state); } // update existing subscription. else { m_subscription.ModifyState(((int)TsCAeStateMask.All & ~(int)TsCAeStateMask.Active), m_state); } // select filters. m_filters.Areas.Clear(); m_filters.Areas.AddRange(m_areas); m_filters.Sources.Clear(); m_filters.Sources.AddRange(m_sources); m_subscription.SetFilters(m_filters); // select attributes. IDictionaryEnumerator enumerator = m_attributes.GetEnumerator(); while (enumerator.MoveNext()) { int categoryID = (int)enumerator.Key; OpcClientSdk.Ae.TsCAeAttributeCollection attributeIDs = (OpcClientSdk.Ae.TsCAeAttributeCollection)enumerator.Value; m_subscription.SelectReturnedAttributes(categoryID, attributeIDs.ToArray()); } // activate the subscription. if (active || update) { m_state.Active = active; m_subscription.ModifyState((int)TsCAeStateMask.Active, m_state); } // close the dialog. DialogResult = DialogResult.OK; Close(); } catch (Exception exception) { MessageBox.Show(exception.Message); } }
/// <summary> /// Toggles the active/inactive state for a subscription. /// </summary> private void ActiveMI_Click(object sender, System.EventArgs e) { try { ListViewItem item = SubscriptionsLV.SelectedItems[0]; Ae.TsCAeSubscription subscription = (Ae.TsCAeSubscription)item.Tag; Ae.TsCAeSubscriptionState state = new Ae.TsCAeSubscriptionState(); state.Active = !ActiveMI.Checked; subscription.ModifyState((int)TsCAeStateMask.Active, state); // toggle checkbox. ActiveMI.Checked = !ActiveMI.Checked; // update list. Update(item); // receive notifications. if (m_SubscriptionAction != null) { m_SubscriptionAction(subscription, !subscription.Active); } // adjust columns. AdjustColumns(SubscriptionsLV); } catch (Exception exception) { MessageBox.Show(exception.Message); } }