/// <summary> /// Sets the current filters for the subscription. /// </summary> /// <param name="filters">The new filters to use for the subscription.</param> public void SetFilters(TsCAeSubscriptionFilters filters) { lock (this) { // verify state and arguments. if (m_subscription == null) { throw new NotConnectedException(); } // invoke COM method. try { ((IOPCEventSubscriptionMgt)m_subscription).SetFilter( filters.EventTypes, filters.Categories.Count, filters.Categories.ToArray(), filters.LowSeverity, filters.HighSeverity, filters.Areas.Count, filters.Areas.ToArray(), filters.Sources.Count, filters.Sources.ToArray()); } catch (Exception e) { throw Technosoftware.DaAeHdaClient.Com.Interop.CreateException("IOPCEventSubscriptionMgt.SetFilter", e); } } }
//====================================================================== // Filter Management /// <summary> /// Returns the current filters for the subscription. /// </summary> /// <returns>The current filters for the subscription.</returns> public TsCAeSubscriptionFilters GetFilters() { lock (this) { // verify state and arguments. if (m_subscription == null) { throw new NotConnectedException(); } // initialize arguments. int pdwEventType = 0; int pdwNumCategories = 0; IntPtr ppdwEventCategories = IntPtr.Zero; int pdwLowSeverity = 0; int pdwHighSeverity = 0; int pdwNumAreas = 0; IntPtr ppszAreaList = IntPtr.Zero; int pdwNumSources = 0; IntPtr ppszSourceList = IntPtr.Zero; // invoke COM method. try { ((IOPCEventSubscriptionMgt)m_subscription).GetFilter( out pdwEventType, out pdwNumCategories, out ppdwEventCategories, out pdwLowSeverity, out pdwHighSeverity, out pdwNumAreas, out ppszAreaList, out pdwNumSources, out ppszSourceList); } catch (Exception e) { throw Technosoftware.DaAeHdaClient.Com.Interop.CreateException("IOPCEventSubscriptionMgt.GetFilter", e); } // unmarshal results int[] categoryIDs = Technosoftware.DaAeHdaClient.Com.Interop.GetInt32s(ref ppdwEventCategories, pdwNumCategories, true); string[] areaIDs = Technosoftware.DaAeHdaClient.Com.Interop.GetUnicodeStrings(ref ppszAreaList, pdwNumAreas, true); string[] sourceIDs = Technosoftware.DaAeHdaClient.Com.Interop.GetUnicodeStrings(ref ppszSourceList, pdwNumSources, true); // build results. TsCAeSubscriptionFilters filters = new TsCAeSubscriptionFilters(); filters.EventTypes = pdwEventType; filters.LowSeverity = pdwLowSeverity; filters.HighSeverity = pdwHighSeverity; filters.Categories.AddRange(categoryIDs); filters.Areas.AddRange(areaIDs); filters.Sources.AddRange(sourceIDs); // return results. return(filters); } }
/// <summary> /// Copy values from control into object - throw exceptions on error. /// </summary> public object Get() { TsCAeSubscriptionFilters filters = new TsCAeSubscriptionFilters { EventTypes = 0 }; if (simpleEventChk_.Checked) { filters.EventTypes |= (int)TsCAeEventType.Simple; } if (trackingEventsChk_.Checked) { filters.EventTypes |= (int)TsCAeEventType.Tracking; } if (conditionEventsChk_.Checked) { filters.EventTypes |= (int)TsCAeEventType.Condition; } filters.HighSeverity = (int)highSeverityCtrl_.Value; filters.LowSeverity = (int)lowSeverityCtrl_.Value; return(filters); }
/// <summary> /// Creates a new object. /// </summary> public object Create() { TsCAeSubscriptionFilters filters = new TsCAeSubscriptionFilters { EventTypes = (int)TsCAeEventType.All }; return(filters); }
/// <summary> /// Prompts a user to create a new subscription with a modal dialog. /// </summary> public TsCAeSubscription ShowDialog(TsCAeServer server, TsCAeSubscription subscription) { if (server == null) { throw new ArgumentNullException("server"); } mServer_ = server; mSubscription_ = subscription; // go to the initial stage. mStage_ = 0; ChangeStage(0); // initialize controls. stateCtrl_.SetDefaults(); filtersCtrl_.SetDefaults(); categoriesCtrl_.ShowCategories(mServer_); attributesCtrl_.ShowAttributes(mServer_); browseCtrl_.ShowAreas(mServer_); if (mSubscription_ != null) { mState_ = mSubscription_.GetState(); mFilters_ = mSubscription_.GetFilters(); mAttributes_ = mSubscription_.GetAttributes(); mAreas_ = mSubscription_.Areas.ToArray(); mSources_ = mSubscription_.Sources.ToArray(); } else { mState_.Name = String.Format("Subscription{0,3:000}", ++mCount_); } // set current values. stateCtrl_.Set(mState_); filtersCtrl_.Set(mFilters_); categoriesCtrl_.SetSelectedCategories(mFilters_.Categories.ToArray()); attributesCtrl_.SetSelectedAttributes(mAttributes_); areaSourcesListCtrl_.AddAreas(mAreas_); areaSourcesListCtrl_.AddSources(mSources_); // show dialog. if (ShowDialog() != DialogResult.OK) { return(null); } // return updated/created subscription. return(mSubscription_); }
/// <summary> /// Called when the next button is clicked. /// </summary> private void NextBTN_Click(object sender, System.EventArgs e) { if (mStage_ == 0) { mState_ = (TsCAeSubscriptionState)stateCtrl_.Get(); mFilters_ = (TsCAeSubscriptionFilters)filtersCtrl_.Get(); mFilters_.Categories.Clear(); mFilters_.Categories.AddRange(categoriesCtrl_.GetSelectedCategories()); mAttributes_ = attributesCtrl_.GetSelectedAttributes(); } ChangeStage(++mStage_); }
/// <summary> /// Copy object values into controls. /// </summary> public void Set(object value) { // check for null value. if (value == null) { SetDefaults(); return; } TsCAeSubscriptionFilters filters = (TsCAeSubscriptionFilters)value; simpleEventChk_.Checked = (filters.EventTypes & (int)TsCAeEventType.Simple) != 0; trackingEventsChk_.Checked = (filters.EventTypes & (int)TsCAeEventType.Tracking) != 0; conditionEventsChk_.Checked = (filters.EventTypes & (int)TsCAeEventType.Condition) != 0; highSeverityCtrl_.Value = filters.HighSeverity; lowSeverityCtrl_.Value = filters.LowSeverity; }