Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
            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;
            }