void OnProgress(NikonDevice sender, eNkMAIDDataObjType type, int done, int total) { if (_progress != null) { _progress(sender, type, done, total); } }
void HandleAddChild(IntPtr id) { NikonObject item = new NikonObject(Md3, Object, (uint)id.ToInt32()); List <uint> dataIds = new List <uint>(); item.Open(); item.Event += (NikonObject obj, IntPtr refClient, eNkMAIDEvent currentEvent, IntPtr data) => { if (currentEvent == eNkMAIDEvent.kNkMAIDEvent_AddChild) { dataIds.Add((uint)data.ToInt32()); } }; item.EnumChildren(); _currentItemId = item.Id; foreach (var dataId in dataIds) { eNkMAIDDataObjType dataObjectType = (eNkMAIDDataObjType)dataId; NikonObject data = new NikonObject(Md3, item, dataId); data.Open(); switch (dataObjectType) { case eNkMAIDDataObjType.kNkMAIDDataObjType_Thumbnail: case eNkMAIDDataObjType.kNkMAIDDataObjType_File | eNkMAIDDataObjType.kNkMAIDDataObjType_Thumbnail: // Note: // We do a 'thread-unsafe' check of the thumbnail-ready event here. No // need to acquire if the user hasn't hooked up the thumbnail event. if (_thumbnailReady != null) { DataItemAcquire(data); } break; case eNkMAIDDataObjType.kNkMAIDDataObjType_Image: case eNkMAIDDataObjType.kNkMAIDDataObjType_Sound: case eNkMAIDDataObjType.kNkMAIDDataObjType_File: case eNkMAIDDataObjType.kNkMAIDDataObjType_File | eNkMAIDDataObjType.kNkMAIDDataObjType_Image: case eNkMAIDDataObjType.kNkMAIDDataObjType_File | eNkMAIDDataObjType.kNkMAIDDataObjType_Sound: DataItemAcquire(data); break; case eNkMAIDDataObjType.kNkMAIDDataObjType_Video: // Note: // We do a 'thread-unsafe' check of the videofragment-ready event here. No // need to download videos if the user hasn't hooked up the event. if (_videoFragmentReady != null) { DataItemGetVideoImage(data); } break; default: Debug.Print("Unknown data object type: " + dataObjectType.ToString()); break; } data.Close(); } item.Close(); }