int CIcqProto::setSettingBlob(HANDLE hContact, const char *szSetting, const BYTE *pValue, const int cbValue) { return DBWriteContactSettingBlob(hContact, m_szModuleName, szSetting, (void*)pValue, cbValue); }
int replaceModule(HWND hwnd, HANDLE hContact, const char *module, const char *find, const char *replace, int mode) { ModuleSettingLL msll; struct ModSetLinkLinkItem *setting; char *myreplace = NULL; char *newModule; int count = 0; if (mode & RW_FULL) newModule = (char*)replace; else { myreplace = multiReplace(module, find, replace, mode & RW_CASE); newModule = myreplace; } if (newModule[0]==0) { ItemFound(hwnd,hContact,module,NULL,NULL,FW_MODULE|FW_DELETED); deleteModule((char*)module, hContact, 1); replaceTreeItem(GetDlgItem(hwnd2mainWindow,IDC_MODULES), hContact, module, NULL); mir_free(myreplace); return 1; } if (!IsModuleEmpty(hContact, newModule)) return 0; if (EnumSettings(hContact,(char*)module,&msll)) { setting = msll.first; while(setting) { DBVARIANT dbv; if (!GetSetting(hContact, module, setting->name, &dbv)) { switch (dbv.type) { case DBVT_BYTE: DBWriteContactSettingByte(hContact, newModule, setting->name, dbv.bVal); break; case DBVT_WORD: DBWriteContactSettingWord(hContact, newModule, setting->name, dbv.wVal); break; case DBVT_DWORD: DBWriteContactSettingDword(hContact, newModule, setting->name, dbv.dVal); break; case DBVT_ASCIIZ: DBWriteContactSettingString(hContact, newModule, setting->name, dbv.pszVal); break; case DBVT_UTF8: DBWriteContactSettingStringUtf(hContact, newModule, setting->name, dbv.pszVal); break; case DBVT_BLOB: DBWriteContactSettingBlob(hContact, newModule, setting->name, dbv.pbVal, dbv.cpbVal); break; } DBFreeVariant(&dbv); DBDeleteContactSetting(hContact, module, setting->name); } setting = (struct ModSetLinkLinkItem *)setting->next; } FreeModuleSettingLL(&msll); replaceTreeItem(GetDlgItem(hwnd2mainWindow,IDC_MODULES), hContact, module, newModule); ItemFound(hwnd,hContact,newModule,NULL,NULL,FW_MODULE|FW_REPLACED); count++; } mir_free(myreplace); return count; }