From f04d64869f3b1de54fb343f28f955584780001b8 Mon Sep 17 00:00:00 2001 From: mataes2007 Date: Sat, 26 Nov 2011 15:41:10 +0000 Subject: Project folders rename part 3 git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@215 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- Svc_dbepp/modules.cpp | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 Svc_dbepp/modules.cpp (limited to 'Svc_dbepp/modules.cpp') diff --git a/Svc_dbepp/modules.cpp b/Svc_dbepp/modules.cpp new file mode 100644 index 0000000..4053180 --- /dev/null +++ b/Svc_dbepp/modules.cpp @@ -0,0 +1,109 @@ +#include "headers.h" + + +void renameModule(char* oldName, char* newName, HANDLE hContact) +{ + DBVARIANT dbv; + ModuleSettingLL settinglist; + struct ModSetLinkLinkItem *setting; + + if (!EnumSettings(hContact,oldName,&settinglist)) { msg(Translate("Error Loading Setting List"),modFullname); return;} + + setting = settinglist.first; + while (setting) + { + if (!GetSetting(hContact,oldName,setting->name,&dbv)) + { + switch (dbv.type) + { + case DBVT_BYTE: + DBWriteContactSettingByte(hContact, newName, setting->name, dbv.bVal); + break; + case DBVT_WORD: + DBWriteContactSettingWord(hContact, newName, setting->name, dbv.wVal); + break; + case DBVT_DWORD: + DBWriteContactSettingDword(hContact, newName, setting->name, dbv.dVal); + break; + case DBVT_ASCIIZ: + DBWriteContactSettingString(hContact, newName, setting->name, dbv.pszVal); + break; + case DBVT_UTF8: + DBWriteContactSettingStringUtf(hContact, newName, setting->name, dbv.pszVal); + break; + case DBVT_BLOB: + DBWriteContactSettingBlob(hContact, newName, setting->name, dbv.pbVal, dbv.cpbVal); + break; + + } + DBDeleteContactSetting(hContact, oldName, setting->name); + } + DBFreeVariant(&dbv); + setting = (struct ModSetLinkLinkItem *)setting->next; + } + FreeModuleSettingLL(&settinglist); +} + +INT_PTR CALLBACK AddModDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + if (msg == WM_INITDIALOG) + { + SetWindowLongPtr(hwnd,GWLP_USERDATA,lParam); + TranslateDialogDefault(hwnd); + } + if (msg == WM_COMMAND) + { + switch(LOWORD(wParam)) + { + case IDOK: + { + if (GetWindowTextLength(GetDlgItem(hwnd, IDC_MODNAME))) + { + char modulename[256]; + GetDlgItemText(hwnd, IDC_MODNAME, modulename, 256); + if (IsDlgButtonChecked(hwnd,CHK_ADD2ALL)) + { + HANDLE hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); + // null contact + DBWriteContactSettingByte(NULL, modulename, "(Default)", 0); + while (hContact) + { + DBWriteContactSettingByte(hContact, modulename, "(Default)", 0); + hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)(HANDLE)hContact, 0); + } + } + else + { + DBWriteContactSettingByte((HANDLE)GetWindowLongPtr(hwnd,GWLP_USERDATA), modulename, "(Default)", 0); + } + refreshTree(1); + } + } + // fall through + case IDCANCEL: + DestroyWindow(hwnd); + break; + } + } + return 0; +} + +int CloneContact(HANDLE hContact) +{ + HANDLE newContact = (HANDLE)CallService(MS_DB_CONTACT_ADD,0,0); + + ModuleSettingLL modlist; + struct ModSetLinkLinkItem *mod; + if (!newContact) return 0; + // enum all the modules + if (!EnumModules(&modlist)) { msg(Translate("Error Loading Module List"),modFullname); return 0;} + + mod = modlist.first; + while (mod) + { + copyModule(mod->name,hContact,newContact); + mod = (struct ModSetLinkLinkItem *)mod->next; + } + FreeModuleSettingLL(&modlist); + return 1; +} \ No newline at end of file -- cgit v1.2.3