private unsafe int RaiseContactSettingEvent(UIntPtr hContact, IntPtr pDbWriteSetting) { DBCONTACTWRITESETTING dbWriteSetting = *(DBCONTACTWRITESETTING*)pDbWriteSetting.ToPointer(); ContactInfo contactInfo = GetContactInfo(hContact); string name = Translate.ToString(dbWriteSetting.Name, StringEncoding.Ansi); string moduleName = Translate.ToString(dbWriteSetting.Module, StringEncoding.Ansi); object value = null; if ((DatabaseSettingType)dbWriteSetting.Value.Type != DatabaseSettingType.Blob) value = DBCONTACTWRITESETTING.ExtractValue(pDbWriteSetting); else Debugger.Log(10, Loader.LogCategory, "Blob settings are not yet supported, the value will be null."); MirandaContactSettingEventArgs eventArgs = new MirandaContactSettingEventArgs(contactInfo, name, moduleName, value, (DatabaseSettingType)dbWriteSetting.Value.Type); bool retValue = InvokeChainCancelable<MirandaContactSettingEventArgs>(ContactSettingChangedEventHandler, eventArgs); return Convert.ToInt32(retValue); }
private bool HandleContactSettingChange(object sender, MirandaContactSettingEventArgs e) { if (e.ValueType != DatabaseSettingType.Blob || e.ValueType == DatabaseSettingType.Deleted) { Delta delta = Engine.CurrentDelta; lock (delta) { if (DeltaSyncEngine.GetContactToken(e.ContactInfo.MirandaHandle) != null) delta.Entries.AddLast(new DeltaSettingEntry(e.ContactInfo.MirandaHandle, e.SettingName, e.SettingOwner, e.Value, e.ValueType)); } } return false; }