private void NotifyTrackSolutionGroup(IntPtr handle, MDP_NOTIFY_TYPE nType, IntPtr tracksolutiongrouparray, uint count, IntPtr context)
        {
            var trackSolutionGroups = TrackSolutionGroup.FromNativePointerArray(tracksolutiongrouparray, count,
                                                                                _mta);

            switch (nType)
            {
            case MDP_NOTIFY_TYPE.MDP_NOTIFY_SELECT:
            case MDP_NOTIFY_TYPE.MDP_NOTIFY_INSERT:
            case MDP_NOTIFY_TYPE.MDP_NOTIFY_UPDATE:
                trackSolutionGroups.ForEach(tsg => _tracksolutionGroups[tsg.ID] = tsg);
                _allTrackSolutionGroupDataAvailable = true;
                break;

            case MDP_NOTIFY_TYPE.MDP_NOTIFY_DELETE:
                trackSolutionGroups.ForEach(tsg => _tracksolutionGroups.Remove(tsg.ID));
                break;

            case MDP_NOTIFY_TYPE.MDP_NOTIFY_CLEAR:
                _allTrackSolutionGroupDataAvailable = false;
                _tracksolutionGroups.Clear();
                break;
            }

            if (NotifyTrackSolutionGroupHandlers != null)
            {
                NotifyTrackSolutionGroupHandlers(nType, trackSolutionGroups, _mta);
            }
        }
 public bool DeleteTrackSolutionGroup(TrackSolutionGroup trackSolutionGroup)
 {
     return(NativeMethods.mta_tracksolutiongroup_delete(_nativeHandle, trackSolutionGroup.ID));
 }
        /// <summary>
        /// Request a modifier to change a TrackSolutionGroup configuration
        /// </summary>
        /// <param name="trackSolutionGroup">
        /// Instance to be updated/changed
        /// </param>
        /// <exception cref="MylapsException">
        /// Throws an exception whenever it failes to create a TrackSolutionGroupModifier instance
        /// </exception>
        /// <remarks>
        /// To commit the changes, use related MTA.CommitChanges()
        /// </remarks>
        public TrackSolutionGroupModifier UpdateTrackSolutionGroup(TrackSolutionGroup trackSolutionGroup)
        {
            var p = NativeMethods.mta_tracksolutiongroup_update(_nativeHandle, trackSolutionGroup.ID);

            return(AddTrackSolutionGroupModifier(p));
        }