From 2e65438b712e9e6ed81c75765cd0c4aae2ea7e5a Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 17 May 2012 16:18:42 +0000 Subject: oops git-svn-id: http://svn.miranda-ng.org/main/trunk@15 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/dbeditorpp/settinglist.cpp | 1261 ------------------------------------ 1 file changed, 1261 deletions(-) delete mode 100644 plugins/dbeditorpp/settinglist.cpp (limited to 'plugins/dbeditorpp/settinglist.cpp') diff --git a/plugins/dbeditorpp/settinglist.cpp b/plugins/dbeditorpp/settinglist.cpp deleted file mode 100644 index 9225fe04a8..0000000000 --- a/plugins/dbeditorpp/settinglist.cpp +++ /dev/null @@ -1,1261 +0,0 @@ -#include "headers.h" - -int UOS; - -void setupSettingsList(HWND hwnd2List) -{ - LVCOLUMN sLC; - - ListView_SetUnicodeFormat(hwnd2List, UOS); - - sLC.fmt = LVCFMT_LEFT; - ListView_SetExtendedListViewStyle(hwnd2List, 32|LVS_EX_SUBITEMIMAGES); //LVS_EX_FULLROWSELECT - sLC.mask = LVCF_FMT | LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH; - - sLC.pszText = Translate("Name"); - sLC.cx = DBGetContactSettingWord(NULL, modname, "Column0width", 145); - ListView_InsertColumn(hwnd2List,0,&sLC); - sLC.pszText = Translate("Data"); - sLC.cx = DBGetContactSettingWord(NULL, modname, "Column1width", 145); - ListView_InsertColumn(hwnd2List,1,&sLC); - sLC.pszText = Translate("Type"); - sLC.cx = DBGetContactSettingWord(NULL, modname, "Column2width", 60); - ListView_InsertColumn(hwnd2List,2,&sLC); - sLC.pszText = Translate("Size"); - sLC.cx = DBGetContactSettingWord(NULL, modname, "Column3width", 80); - ListView_InsertColumn(hwnd2List,3,&sLC); -} - - -void saveListSettings(HWND hwnd2List) -{ - int i; - LVCOLUMN sLC = {0}; - char tmp[33]; tmp[32] = 0; - - sLC.mask = LVCF_WIDTH; - - for (i=0; i <= 3; i++) - if (ListView_GetColumn(hwnd2List,i,&sLC)) - { - mir_snprintf(tmp, SIZEOF(tmp), "Column%dwidth", i); - DBWriteContactSettingWord(NULL, modname, tmp, (WORD)sLC.cx); - } - -} - - -void ClearListview(HWND hwnd2Settings) -{ - SettingListInfo *info = (SettingListInfo*)GetWindowLongPtr(hwnd2Settings,GWLP_USERDATA); - if (info && ListView_GetItemCount(hwnd2Settings)) - { - mir_free(info->module); - if (info->hwnd2Edit) - { - SendMessage(info->hwnd2Edit,WM_COMMAND,MAKEWPARAM(IDCANCEL,0),0); - info->hwnd2Edit = NULL; - } - mir_free(info); - SetWindowLongPtr(hwnd2Settings,GWLP_USERDATA, 0); - } - ListView_DeleteAllItems(hwnd2Settings); -} - -void DeleteSettingsFromList(HWND hSettings, HANDLE hContact, char *module, char *setting) -{ - int count = ListView_GetSelectedCount(hSettings); - - if (!count) return; - else - if (count == 1) - { - DBDeleteContactSetting(hContact,module,setting); - } - else - { - int items = ListView_GetItemCount(hSettings); - int i = 0; - char text[256]; - - while(i")); - ListView_SetItemText(hwnd2Settings,index,2,Translate("UNICODE")); - ListView_SetItemText(hwnd2Settings,index,3,Translate("")); - } - else - ListView_DeleteItem(hwnd2Settings,index); - - DBFreeVariant(&dbv); - mir_free(data); -} - -void PopulateSettings(HWND hwnd2Settings, HANDLE hContact, char* module) -{ - SettingListInfo* info = (SettingListInfo*)mir_calloc(sizeof(SettingListInfo)); - LVITEM lvItem; - - struct ModSetLinkLinkItem *setting; - ModuleSettingLL setlist; - if (!EnumSettings(hContact,module,&setlist)) { msg(Translate("Error Loading Setting List"),modFullname); mir_free(info); return;} - - // clear any settings that may be there... - ClearListview(hwnd2Settings); - - info->hContact = hContact; - info->module = mir_tstrdup(module); - SetWindowLongPtr(hwnd2Settings,GWLP_USERDATA, (LONG)info); - - // icons - if (himl2) ListView_SetImageList(hwnd2Settings, himl2, LVSIL_SMALL); - - lvItem.mask = LVIF_TEXT; - lvItem.iItem = 0; - lvItem.iSubItem = 0; - setting = setlist.first; - - while (setting) - { - lvItem.pszText = setting->name; - additem(hwnd2Settings,hContact,module, setting->name, ListView_InsertItem(hwnd2Settings,&lvItem)); - setting = (struct ModSetLinkLinkItem *)setting->next; - } - - FreeModuleSettingLL(&setlist); -} - - -void SelectSetting(char* setting) -{ - LVITEM lvItem; - LVFINDINFO lvfi; - HWND hwnd2Settings = GetDlgItem(hwnd2mainWindow,IDC_SETTINGS); - - lvfi.flags = LVFI_STRING; - lvfi.psz = setting; - lvfi.vkDirection = VK_DOWN; - - lvItem.mask = LVIF_TEXT; - lvItem.iItem = ListView_FindItem(hwnd2Settings,-1,&lvfi); - if (lvItem.iItem != -1) - { - lvItem.mask = LVIF_STATE; - lvItem.state = LVIS_SELECTED | LVIS_FOCUSED; - lvItem.stateMask = LVIS_SELECTED | LVIS_FOCUSED; - ListView_SetItem(hwnd2Settings,&lvItem); - } -} - -void settingChanged(HWND hwnd2Settings, HANDLE hContact, char* module, char* setting) -{ - LVITEM lvItem; - LVFINDINFO lvfi; - - lvfi.flags = LVFI_STRING; - lvfi.psz = setting; - lvfi.vkDirection = VK_DOWN; - - lvItem.mask = LVIF_TEXT|LVIF_IMAGE; - lvItem.iItem = ListView_FindItem(hwnd2Settings,-1,&lvfi); - lvItem.iSubItem = 0; - - if (lvItem.iItem == -1) - { - lvItem.iItem = 0; - lvItem.pszText = setting; - lvItem.cchTextMax = mir_strlen(setting); - lvItem.iItem = ListView_InsertItem(hwnd2Settings,&lvItem); - } - additem(hwnd2Settings,hContact,module, setting,lvItem.iItem); -} - -static WNDPROC SettingLabelEditSubClass; - -typedef struct { - HANDLE hContact; - char module[256]; - char setting[256]; - int item; - int subitem; - HWND hwnd; - int unicode; -} EditLabelInfoStruct; - -void writeStandardTextfromLabel(EditLabelInfoStruct* info, char* value, WCHAR *wc, int type) -{ - if (type != DBVT_ASCIIZ && type != DBVT_UTF8) - DBDeleteContactSetting(info->hContact,info->module,info->setting); - if (type == DBVT_UTF8 && wc) - { - DBWriteContactSettingWString(info->hContact,info->module,info->setting,wc); - mir_free(wc); - } - else - DBWriteContactSettingString(info->hContact,info->module,info->setting,value); - -} - -static LRESULT CALLBACK SettingLabelEditSubClassProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) -{ - EditLabelInfoStruct* info = (EditLabelInfoStruct*)GetWindowLongPtr(hwnd,GWLP_USERDATA); - switch(msg) { - case WM_KEYDOWN: - switch (wParam) - { - case VK_RETURN: - if (GetKeyState(VK_CONTROL)&0x8000) // ctrl is pressed - break; - SendMessage(hwnd,WM_COMMAND,MAKEWPARAM(IDOK,0),0); - return 0; - case VK_ESCAPE: - SendMessage(hwnd,WM_COMMAND,MAKEWPARAM(IDCANCEL,0),0); - return 0; - } - break; - case WM_USER: - SetWindowLongPtr(hwnd,GWLP_USERDATA,lParam); - SetFocus(hwnd); - SendMessage(hwnd, WM_SETFONT, SendMessage(GetParent(hwnd), WM_GETFONT, 0, 0), 1); - info = ((EditLabelInfoStruct*)lParam); - if (info->subitem) - SendMessage(hwnd, EM_LIMITTEXT, (WPARAM)65535, 0); - else - SendMessage(hwnd, EM_LIMITTEXT, (WPARAM)255, 0); - SendMessage(hwnd, EM_SETSEL,0,-1); - break; - case WM_PAINT: - break; - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDOK: - { - int len = GetWindowTextLength(hwnd)+1; - char *value = (char*)_alloca(len); - WCHAR *wc = NULL; - DBVARIANT dbv = {0}; - - GetWindowText(hwnd,value,len); - - if (info->unicode) - wc = mir_a2u(value); - - if (len <= 1 || GetSetting(info->hContact,info->module,info->setting,&dbv)) - { - SendMessage(hwnd,WM_COMMAND,MAKEWPARAM(IDCANCEL,0),0); - return 0; - } - - switch (info->subitem) - { - case 0:// setting name - if (!mir_strcmp(info->setting,value) || mir_strlen(value)>255) - { - DBFreeVariant(&dbv); - SendMessage(hwnd,WM_COMMAND,MAKEWPARAM(IDCANCEL,0),0); - return 0; - } - switch (dbv.type) - { - case DBVT_UTF8: - DBWriteContactSettingStringUtf(info->hContact,info->module,value,dbv.pszVal); - break; - case DBVT_ASCIIZ: - DBWriteContactSettingString(info->hContact,info->module,value,dbv.pszVal); - break; - case DBVT_BYTE: - DBWriteContactSettingByte(info->hContact,info->module,value,dbv.bVal); - break; - case DBVT_WORD: - DBWriteContactSettingWord(info->hContact,info->module,value,dbv.wVal); - break; - case DBVT_DWORD: - DBWriteContactSettingDword(info->hContact,info->module,value,dbv.dVal); - break; - case DBVT_BLOB: - DBWriteContactSettingBlob(info->hContact,info->module,value,dbv.pbVal,dbv.cpbVal); - break; - } - DBDeleteContactSetting(info->hContact,info->module,info->setting); - { - LVFINDINFO lvfi; - int item; - - lvfi.flags = LVFI_STRING; - lvfi.psz = info->setting; - lvfi.vkDirection = VK_DOWN; - - item = ListView_FindItem(info->hwnd,-1,&lvfi); - ListView_DeleteItem(info->hwnd,item); - } - break; - case 1: // value - { - int val; - int i = 0; - - if (dbv.type == DBVT_BLOB) - { - WriteBlobFromString(info->hContact,info->module,info->setting,value,len); - break; - } - - switch (value[0]) - { - case 'b': - case 'B': - if (value[1] == '0' && (value[2] == 'x' || value[2] == 'X')) - sscanf(&value[3],"%x",&val); - else if (value[1] >= '0' && value[1] <= '9') - { - val = atoi(&value[1]); - if (dbv.type == DBVT_ASCIIZ || dbv.type == DBVT_UTF8) - DBDeleteContactSetting(info->hContact,info->module,info->setting); - - DBWriteContactSettingByte(info->hContact,info->module,info->setting,(BYTE)val); - } - else - writeStandardTextfromLabel(info, value, wc, dbv.type); - break; - case 'w': - case 'W': - if (value[1] == '0' && (value[2] == 'x' || value[2] == 'X')) - sscanf(&value[3],"%x",&val); - else if (value[1] >= '0' && value[1] <= '9') - { - val = atoi(&value[1]); - if (dbv.type == DBVT_ASCIIZ || dbv.type == DBVT_UTF8) - DBDeleteContactSetting(info->hContact,info->module,info->setting); - DBWriteContactSettingWord(info->hContact,info->module,info->setting,(WORD)val); - } - else - writeStandardTextfromLabel(info, value, wc, dbv.type); - break; - case 'd': - case 'D': - if (value[1] == '0' && (value[2] == 'x' || value[2] == 'X')) - sscanf(&value[3],"%x",&val); - else if (value[1] >= '0' && value[1] <= '9') - { - val = atoi(&value[1]); - if (dbv.type == DBVT_ASCIIZ || dbv.type == DBVT_UTF8) - DBDeleteContactSetting(info->hContact,info->module,info->setting); - DBWriteContactSettingDword(info->hContact,info->module,info->setting,val); - } - else - writeStandardTextfromLabel(info, value, wc, dbv.type); - break; - case '0': - i=1; - case 'x': - case 'X': - if (value[i] == 'x' || value[i] == 'X') - { - - sscanf(&value[i+1],"%x",&val); - switch (dbv.type) - { - case DBVT_UTF8: - case DBVT_ASCIIZ: - writeStandardTextfromLabel(info, value, wc, dbv.type); - break; - case DBVT_BYTE: - DBWriteContactSettingByte(info->hContact,info->module,info->setting,(BYTE)val); - break; - case DBVT_WORD: - DBWriteContactSettingWord(info->hContact,info->module,info->setting,(WORD)val); - break; - case DBVT_DWORD: - DBWriteContactSettingDword(info->hContact,info->module,info->setting,(DWORD)val); - break; - } - } - else - { - val = atoi(value); - switch (dbv.type) - { - case DBVT_ASCIIZ: - case DBVT_UTF8: - writeStandardTextfromLabel(info, value, wc, dbv.type); - break; - case DBVT_BYTE: - DBWriteContactSettingByte(info->hContact,info->module,info->setting,(BYTE)val); - break; - case DBVT_WORD: - DBWriteContactSettingWord(info->hContact,info->module,info->setting,(WORD)val); - break; - case DBVT_DWORD: - DBWriteContactSettingDword(info->hContact,info->module,info->setting,(DWORD)val); - break; - } - } - break; - case '\"': - case '\'': - { - int nlen = mir_strlen(value); - int sh = 0; - if (nlen > 3) - { - if (value[nlen-1] == value[0]) - { - value[nlen-1] = '\0'; - sh = 1; - } - } - writeStandardTextfromLabel(info, &value[sh], wc, dbv.type); - } - break; - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case '-': - val = atoi(value); - switch (dbv.type) - { - case DBVT_ASCIIZ: - case DBVT_UTF8: - writeStandardTextfromLabel(info, value, wc, dbv.type); - break; - case DBVT_BYTE: - DBWriteContactSettingByte(info->hContact,info->module,info->setting,(BYTE)val); - break; - case DBVT_WORD: - DBWriteContactSettingWord(info->hContact,info->module,info->setting,(WORD)val); - break; - case DBVT_DWORD: - DBWriteContactSettingDword(info->hContact,info->module,info->setting,(DWORD)val); - break; - } - break; - default: - writeStandardTextfromLabel(info, value, wc, dbv.type); - break; - } // switch (value[0]) - } - break; // case 1: - } - DBFreeVariant(&dbv); - } // fall through - case IDCANCEL: - { - SettingListInfo *sli = (SettingListInfo*)GetWindowLongPtr(info->hwnd,GWLP_USERDATA); - - if (sli && sli->hwnd2Edit==hwnd) - sli->hwnd2Edit = NULL; - - mir_free(info); - DestroyWindow(hwnd); - } - return 0; - } - break; // wm_command - case WM_GETDLGCODE: - return DLGC_WANTALLKEYS; - } - if (UOS) - return CallWindowProcW(SettingLabelEditSubClass,hwnd,msg,wParam,lParam); - else - return CallWindowProc(SettingLabelEditSubClass,hwnd,msg,wParam,lParam); -} - - -void EditLabel(HWND hwnd2List, int item, int subitem) -{ - RECT rc; - LVITEM lvi; - char setting[256], value[16] = {0}; - DBVARIANT dbv; - SettingListInfo* info = (SettingListInfo*)GetWindowLongPtr(hwnd2List,GWLP_USERDATA); - EditLabelInfoStruct *data = (EditLabelInfoStruct*)mir_calloc(sizeof(EditLabelInfoStruct)); - if (!data || !info) return; - if (info->hwnd2Edit) - { - SendMessage(info->hwnd2Edit,WM_COMMAND,MAKEWPARAM(IDCANCEL,0),0); // ignore the new value of the last edit - info->hwnd2Edit = NULL; - } - lvi.mask = LVIF_TEXT; - lvi.iItem = item; - lvi.iSubItem = 0; - lvi.pszText = setting; - lvi.cchTextMax = 256; - - if (!ListView_GetItem(hwnd2List, &lvi) || - !ListView_GetSubItemRect - (hwnd2List,item,subitem,LVIR_LABEL,&rc) || - GetSetting(info->hContact,info->module,setting,&dbv)) - { - mir_free(data); - return; - } - - data->hContact = info->hContact; - strcpy(data->module, info->module); - strcpy(data->setting, setting); - data->item = item; - data->subitem = subitem; - data->hwnd = hwnd2List; - - // fix size for long strings - - switch (dbv.type) - { - case DBVT_UTF8: - if (subitem && UOS) - { - int len = mir_strlen(dbv.pszVal)+1; - WCHAR *wc = (WCHAR*)_alloca(len*sizeof(WCHAR)); - MultiByteToWideChar(CP_UTF8, 0, dbv.pszVal, -1, wc, len); - data->unicode = 1; - info->hwnd2Edit = CreateWindowW(L"EDIT",wc,WS_BORDER|WS_VISIBLE|WS_CHILD|WS_VSCROLL|ES_MULTILINE|ES_AUTOHSCROLL, rc.left,rc.top,(int)((rc.right - rc.left)*1.5),(rc.bottom - rc.top)*3,hwnd2List, 0,hInst,0); - break; - } - // fall through - case DBVT_ASCIIZ: - if (subitem) { - // convert from UTF8 - info->hwnd2Edit = CreateWindow("EDIT",dbv.pszVal,WS_BORDER|WS_VISIBLE|WS_CHILD|WS_VSCROLL|ES_MULTILINE|ES_AUTOHSCROLL, rc.left,rc.top,(int)((rc.right - rc.left)*1.5),(rc.bottom - rc.top)*3,hwnd2List, 0,hInst,0); - } - else - info->hwnd2Edit = CreateWindow("EDIT",setting,WS_BORDER|WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL, rc.left,rc.top,(rc.right - rc.left),(rc.bottom - rc.top),hwnd2List, 0,hInst,0); - break; - case DBVT_BYTE: - if (Hex&HEX_BYTE) - mir_snprintf(value, SIZEOF(value), "0x%02X", dbv.bVal); - else - itoa(dbv.bVal,value,10); - info->hwnd2Edit = CreateWindow("EDIT",!subitem?setting:value,WS_BORDER|WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL, rc.left,rc.top,(rc.right - rc.left),(rc.bottom - rc.top),hwnd2List, 0,hInst,0); - break; - case DBVT_WORD: - if (Hex&HEX_WORD) - mir_snprintf(value, SIZEOF(value), "0x%04X", dbv.wVal); - else - itoa(dbv.wVal,value,10); - info->hwnd2Edit = CreateWindow("EDIT",!subitem?setting:value,WS_BORDER|WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL, rc.left,rc.top,(rc.right - rc.left),(rc.bottom - rc.top),hwnd2List, 0,hInst,0); - break; - case DBVT_DWORD: - if (Hex&HEX_DWORD) - mir_snprintf(value, SIZEOF(value), "0x%08X", dbv.dVal); - else - itoa(dbv.dVal,value,10); - info->hwnd2Edit = CreateWindow("EDIT",!subitem?setting:value,WS_BORDER|WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL, rc.left,rc.top,(rc.right - rc.left),(rc.bottom - rc.top),hwnd2List, 0,hInst,0); - break; - case DBVT_BLOB: - if (!subitem) - info->hwnd2Edit = CreateWindow("EDIT",setting,WS_BORDER|WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL, rc.left,rc.top,(rc.right - rc.left),(rc.bottom - rc.top),hwnd2List, 0,hInst,0); - else - { - int j; - char tmp[16]; - char *data = (char*)_alloca(3*(dbv.cpbVal+1)+10); - - if (!data) {msg(Translate("Couldnt allocate enough memory!"), modFullname); return;} - data[0] = '\0'; - - for(j=0; jhwnd2Edit = CreateWindow("EDIT",data,WS_BORDER|WS_VISIBLE|WS_CHILD|WS_VSCROLL|ES_MULTILINE, rc.left,rc.top,(int)((rc.right - rc.left)*1.5),(rc.bottom - rc.top)*3,hwnd2List,0,hInst,0); - } - break; - default: return; - } - - DBFreeVariant(&dbv); - - if (UOS) - SettingLabelEditSubClass=(WNDPROC)SetWindowLongPtrW(info->hwnd2Edit,GWLP_WNDPROC,(LONG)SettingLabelEditSubClassProc); - else - SettingLabelEditSubClass=(WNDPROC)SetWindowLongPtr(info->hwnd2Edit,GWLP_WNDPROC,(LONG)SettingLabelEditSubClassProc); - - SendMessage(info->hwnd2Edit,WM_USER,0,(LPARAM)data); -} - -static int test; -void SettingsListRightClick(HWND hwnd, WPARAM wParam,LPARAM lParam); -static int lastColumn = -1; - -struct SettingsSortParams{ - HWND hList; - int column; -}; - -INT_PTR CALLBACK SettingsCompare(LPARAM lParam1, LPARAM lParam2, LPARAM myParam) -{ - SettingsSortParams params = *(SettingsSortParams *) myParam; - const int maxSize = 1024; - TCHAR text1[maxSize]; - TCHAR text2[maxSize]; - ListView_GetItemText(params.hList, (int) lParam1, params.column, text1, maxSize); - ListView_GetItemText(params.hList, (int) lParam2, params.column, text2, maxSize); - - int res = _tcsicmp(text1, text2); - res = (params.column == lastColumn) ? -res : res; - return res; -} - -void SettingsListWM_NOTIFY(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) -{ - switch(((NMHDR*)lParam)->code) - { - case NM_CLICK: - { - SettingListInfo* info = (SettingListInfo*)GetWindowLongPtr(GetDlgItem(hwnd,IDC_SETTINGS),GWLP_USERDATA); - - LVHITTESTINFO hti; - hti.pt=((NMLISTVIEW*)lParam)->ptAction; - if (DBGetContactSettingByte(NULL,modname,"DontAllowInLineEdit",0) || !IsWinVer2000Plus()) /* fix for TioDuke and win98 */ - break; - if (info && ListView_SubItemHitTest(GetDlgItem(hwnd,IDC_SETTINGS),&hti) >-1) - { - if (hti.iSubItem < 2 && hti.flags != LVHT_ONITEMICON) - { - if (info->selectedItem == hti.iItem) - EditLabel(GetDlgItem(hwnd,IDC_SETTINGS),hti.iItem,hti.iSubItem); - else if (info->hwnd2Edit) - { - SendMessage(info->hwnd2Edit,WM_COMMAND,MAKEWPARAM(IDOK,0),0); - info->hwnd2Edit = NULL; - info->selectedItem = hti.iItem; - } - else info->selectedItem = hti.iItem; - } - else - { - if (info->hwnd2Edit) - { - SendMessage(info->hwnd2Edit,WM_COMMAND,MAKEWPARAM(IDOK,0),0); - info->hwnd2Edit = NULL; - } - info->selectedItem = hti.iItem; - } - } - else if (info && info->hwnd2Edit) - { - SendMessage(info->hwnd2Edit,WM_COMMAND,MAKEWPARAM(IDOK,0),0); - info->hwnd2Edit = NULL; - info->selectedItem = 0; - } - break; - } - - case NM_DBLCLK: - { - SettingListInfo* info = (SettingListInfo*)GetWindowLongPtr(GetDlgItem(hwnd,IDC_SETTINGS),GWLP_USERDATA); - - LVHITTESTINFO hti; - - hti.pt=((NMLISTVIEW*)lParam)->ptAction; - if (info && ListView_SubItemHitTest(GetDlgItem(hwnd,IDC_SETTINGS),&hti) >-1) - { - if ((hti.iSubItem > 1 || hti.flags == LVHT_ONITEMICON) || (DBGetContactSettingByte(NULL,modname,"DontAllowInLineEdit",0) || !IsWinVer2000Plus()/* fix for TioDuke and win98 */ )) - { - char setting[256]; - SendMessage(info->hwnd2Edit,WM_COMMAND,MAKEWPARAM(IDOK,0),0); - info->hwnd2Edit = NULL; - ListView_GetItemText(GetDlgItem(hwnd, IDC_SETTINGS), hti.iItem, 0, setting, 256); - editSetting(info->hContact,info->module, setting); - } - else EditLabel(GetDlgItem(hwnd,IDC_SETTINGS),hti.iItem,hti.iSubItem); - } - break; - } - - case NM_RCLICK: - SettingsListRightClick(hwnd,wParam,lParam); - break; - - case LVN_COLUMNCLICK: - { - LPNMLISTVIEW lv = (LPNMLISTVIEW) lParam; - SettingsSortParams params = {0}; - params.hList = GetDlgItem(hwnd, IDC_SETTINGS); - params.column = lv->iSubItem; - ListView_SortItemsEx(params.hList, SettingsCompare, (LPARAM) ¶ms); - lastColumn = (params.column == lastColumn) ? -1 : params.column; - break; - } - - } // switch(((NMHDR*)lParam)->code) -} - -void SettingsListRightClick(HWND hwnd, WPARAM wParam,LPARAM lParam) // hwnd here is to the main window, NOT the listview -{ - HWND hSettings = GetDlgItem(hwnd,IDC_SETTINGS); - SettingListInfo* info = (SettingListInfo*)GetWindowLongPtr(hSettings,GWLP_USERDATA); - char setting[256], *module; - HANDLE hContact; - LVHITTESTINFO hti; - POINT pt; - HMENU hMenu, hSubMenu; - - if (!info) return; - module = info->module; - hContact = info->hContact; - - hti.pt=((NMLISTVIEW*)lParam)->ptAction; - if (ListView_SubItemHitTest(hSettings,&hti) == -1) - { - // nowhere.. new item menu - GetCursorPos(&pt); - hMenu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_CONTEXTMENU)); - hSubMenu = GetSubMenu(hMenu, 6); - CallService(MS_LANGPACK_TRANSLATEMENU, (WPARAM) hSubMenu, 0); - - if (!UDB) - RemoveMenu(hSubMenu, MENU_ADD_UNICODE, MF_BYCOMMAND); - - switch (TrackPopupMenu(hSubMenu, TPM_RETURNCMD, pt.x, pt.y, 0, hwnd, NULL)) - { - case MENU_ADD_BYTE: - { - struct DBsetting *dbsetting = (struct DBsetting *)mir_alloc(sizeof(struct DBsetting)); // gets safe_free()ed in the window proc - DBVARIANT dbv = {0}; // freed in the dialog - dbv.type = DBVT_BYTE; - dbsetting->dbv = dbv; - dbsetting->hContact = hContact; - dbsetting->module = mir_tstrdup(module); - dbsetting->setting = mir_tstrdup(""); - CreateDialogParam(hInst,MAKEINTRESOURCE(IDD_EDIT_SETTING),hwnd,EditSettingDlgProc, (LPARAM)dbsetting); - } - break; - case MENU_ADD_WORD: - { - struct DBsetting *dbsetting = (struct DBsetting *)mir_alloc(sizeof(struct DBsetting)); // gets safe_free()ed in the window proc - DBVARIANT dbv = {0}; // freed in the dialog - dbv.type = DBVT_WORD; - dbsetting->dbv = dbv; - dbsetting->hContact = hContact; - dbsetting->module = mir_tstrdup(module); - dbsetting->setting = mir_tstrdup(""); - CreateDialogParam(hInst,MAKEINTRESOURCE(IDD_EDIT_SETTING),hwnd,EditSettingDlgProc, (LPARAM)dbsetting); - } - break; - case MENU_ADD_DWORD: - { - struct DBsetting *dbsetting = (struct DBsetting *)mir_alloc(sizeof(struct DBsetting)); // gets safe_free()ed in the window proc - DBVARIANT dbv = {0}; // freed in the dialog - dbv.type = DBVT_DWORD; - dbsetting->dbv = dbv; - dbsetting->hContact = hContact; - dbsetting->module = mir_tstrdup(module); - dbsetting->setting = mir_tstrdup(""); - CreateDialogParam(hInst,MAKEINTRESOURCE(IDD_EDIT_SETTING),hwnd,EditSettingDlgProc, (LPARAM)dbsetting); - } - break; - case MENU_ADD_STRING: - { - struct DBsetting *dbsetting = (struct DBsetting *)mir_alloc(sizeof(struct DBsetting)); // gets safe_free()ed in the window proc - DBVARIANT dbv = {0}; // freed in the dialog - dbv.type = DBVT_ASCIIZ; - dbsetting->dbv = dbv; - dbsetting->hContact = hContact; - dbsetting->module = mir_tstrdup(module); - dbsetting->setting = mir_tstrdup(""); - CreateDialogParam(hInst,MAKEINTRESOURCE(IDD_EDIT_SETTING),hwnd,EditSettingDlgProc, (LPARAM)dbsetting); - } - break; - case MENU_ADD_UNICODE: - if (UDB) - { - struct DBsetting *dbsetting = (struct DBsetting *)mir_alloc(sizeof(struct DBsetting)); // gets safe_free()ed in the window proc - DBVARIANT dbv = {0}; // freed in the dialog - dbv.type = DBVT_UTF8; - dbsetting->dbv = dbv; - dbsetting->hContact = hContact; - dbsetting->module = mir_tstrdup(module); - dbsetting->setting = mir_tstrdup(""); - if (UOS) - CreateDialogParamW(hInst,MAKEINTRESOURCEW(IDD_EDIT_SETTING),hwnd,EditSettingDlgProc, (LPARAM)dbsetting); - else - CreateDialogParam(hInst,MAKEINTRESOURCE(IDD_EDIT_SETTING),hwnd,EditSettingDlgProc, (LPARAM)dbsetting); - } - break; - case MENU_ADD_BLOB: - { - struct DBsetting *dbsetting = (struct DBsetting *)mir_alloc(sizeof(struct DBsetting)); // gets safe_free()ed in the window proc - DBVARIANT dbv = {0}; // freed in the dialog - dbv.type = DBVT_BLOB; - dbsetting->dbv = dbv; - dbsetting->hContact = hContact; - dbsetting->module = mir_tstrdup(module); - dbsetting->setting = mir_tstrdup(""); - CreateDialogParam(hInst,MAKEINTRESOURCE(IDD_EDIT_SETTING),hwnd,EditSettingDlgProc, (LPARAM)dbsetting); - } - break; - - } // switch - } - else // on item - { - char type[8]; - LVITEM lvi; - int i; - int watching = 0; - GetCursorPos(&pt); - hMenu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_CONTEXTMENU)); - hSubMenu = GetSubMenu(hMenu, 0); - CallService(MS_LANGPACK_TRANSLATEMENU, (WPARAM) hSubMenu, 0); - - lvi.mask = LVIF_IMAGE|LVIF_TEXT; - lvi.iItem = hti.iItem; - lvi.iSubItem = 0; - lvi.pszText = setting; - lvi.cchTextMax = 256; - - ListView_GetItem(hSettings,&lvi); - ListView_GetItemText(hSettings, hti.iItem, 2, type, 8); - - if (!UDB) - { - RemoveMenu(hSubMenu, MENU_ADD_UNICODE, MF_BYCOMMAND); - RemoveMenu(hSubMenu, MENU_CHANGE2UNICODE, MF_BYCOMMAND); - } - - switch(lvi.iImage) { - case 4: // STRING - RemoveMenu(hSubMenu, MENU_CHANGE2STRING, MF_BYCOMMAND); - break; - case 1: // BYTE - RemoveMenu(hSubMenu, 4, MF_BYPOSITION); - RemoveMenu(hSubMenu, MENU_CHANGE2BYTE, MF_BYCOMMAND); - RemoveMenu(hSubMenu, MENU_CHANGE2UNICODE, MF_BYCOMMAND); - break; - case 2: // WORD - RemoveMenu(hSubMenu, 4, MF_BYPOSITION); - RemoveMenu(hSubMenu, MENU_CHANGE2WORD, MF_BYCOMMAND); - RemoveMenu(hSubMenu, MENU_CHANGE2UNICODE, MF_BYCOMMAND); - break; - case 3: // DWORD - RemoveMenu(hSubMenu, 4, MF_BYPOSITION); - RemoveMenu(hSubMenu, MENU_CHANGE2DWORD, MF_BYCOMMAND); - RemoveMenu(hSubMenu, MENU_CHANGE2UNICODE, MF_BYCOMMAND); - break; - case 0: // BLOB - RemoveMenu(hSubMenu, 3, MF_BYPOSITION); - RemoveMenu(hSubMenu, 1, MF_BYPOSITION); - RemoveMenu(hSubMenu, 2, MF_BYPOSITION); - RemoveMenu(hSubMenu, MENU_EDIT_SET, MF_BYCOMMAND); - break; - case 5: // UTF8 - RemoveMenu(hSubMenu, 4, MF_BYPOSITION); - RemoveMenu(hSubMenu, MENU_CHANGE2DWORD, MF_BYCOMMAND); - RemoveMenu(hSubMenu, MENU_CHANGE2WORD, MF_BYCOMMAND); - RemoveMenu(hSubMenu, MENU_CHANGE2BYTE, MF_BYCOMMAND); - if (!UDB) - { - RemoveMenu(hSubMenu, 3, MF_BYPOSITION); - RemoveMenu(hSubMenu, 1, MF_BYPOSITION); - RemoveMenu(hSubMenu, 2, MF_BYPOSITION); - RemoveMenu(hSubMenu, MENU_EDIT_SET, MF_BYCOMMAND); - RemoveMenu(hSubMenu, MENU_WATCH_ITEM, MF_BYCOMMAND); - } - else - RemoveMenu(hSubMenu, MENU_CHANGE2UNICODE, MF_BYCOMMAND); - break; - } - - // watch list stuff - - if (ListView_GetSelectedCount(hSettings) >1) - { - RemoveMenu(hSubMenu, 3, MF_BYPOSITION); - RemoveMenu(hSubMenu, 1, MF_BYPOSITION); - RemoveMenu(hSubMenu, 3, MF_BYPOSITION); - RemoveMenu(hSubMenu, MENU_EDIT_SET, MF_BYCOMMAND); - } - - // check if the setting is being watched and if it is then check the menu item - for (i=0; ihContact,info->module, setting); - break; -///////////////////////// divider -//////////////////////// NEW item submenu - case MENU_ADD_BYTE: - { - struct DBsetting *dbsetting = (struct DBsetting *)mir_alloc(sizeof(struct DBsetting)); // gets safe_free()ed in the window proc - DBVARIANT dbv = {0}; // freed in the dialog - dbv.type = DBVT_BYTE; - dbsetting->dbv = dbv; - dbsetting->hContact = hContact; - dbsetting->module = mir_tstrdup(module); - dbsetting->setting = mir_tstrdup(""); - CreateDialogParam(hInst,MAKEINTRESOURCE(IDD_EDIT_SETTING),hwnd,EditSettingDlgProc, (LPARAM)dbsetting); - } - break; - case MENU_ADD_WORD: - { - struct DBsetting *dbsetting = (struct DBsetting *)mir_alloc(sizeof(struct DBsetting)); // gets safe_free()ed in the window proc - DBVARIANT dbv = {0}; // freed in the dialog - dbv.type = DBVT_WORD; - dbsetting->dbv = dbv; - dbsetting->hContact = hContact; - dbsetting->module = mir_tstrdup(module); - dbsetting->setting = mir_tstrdup(""); - CreateDialogParam(hInst,MAKEINTRESOURCE(IDD_EDIT_SETTING),hwnd,EditSettingDlgProc, (LPARAM)dbsetting); - } - break; - case MENU_ADD_DWORD: - { - struct DBsetting *dbsetting = (struct DBsetting *)mir_alloc(sizeof(struct DBsetting)); // gets safe_free()ed in the window proc - DBVARIANT dbv = {0}; // freed in the dialog - dbv.type = DBVT_DWORD; - dbsetting->dbv = dbv; - dbsetting->hContact = hContact; - dbsetting->module = mir_tstrdup(module); - dbsetting->setting = mir_tstrdup(""); - CreateDialogParam(hInst,MAKEINTRESOURCE(IDD_EDIT_SETTING),hwnd,EditSettingDlgProc, (LPARAM)dbsetting); - } - break; - case MENU_ADD_STRING: - { - struct DBsetting *dbsetting = (struct DBsetting *)mir_alloc(sizeof(struct DBsetting)); // gets safe_free()ed in the window proc - DBVARIANT dbv = {0}; // freed in the dialog - dbv.type = DBVT_ASCIIZ; - dbsetting->dbv = dbv; - dbsetting->hContact = hContact; - dbsetting->module = mir_tstrdup(module); - dbsetting->setting = mir_tstrdup(""); - CreateDialogParam(hInst,MAKEINTRESOURCE(IDD_EDIT_SETTING),hwnd,EditSettingDlgProc, (LPARAM)dbsetting); - } - break; - case MENU_ADD_UNICODE: - if (UDB) - { - struct DBsetting *dbsetting = (struct DBsetting *)mir_alloc(sizeof(struct DBsetting)); // gets safe_free()ed in the window proc - DBVARIANT dbv = {0}; // freed in the dialog - dbv.type = DBVT_UTF8; - dbsetting->dbv = dbv; - dbsetting->hContact = hContact; - dbsetting->module = mir_tstrdup(module); - dbsetting->setting = mir_tstrdup(""); - if (UOS) - CreateDialogParamW(hInst,MAKEINTRESOURCEW(IDD_EDIT_SETTING),hwnd,EditSettingDlgProc, (LPARAM)dbsetting); - else - CreateDialogParam(hInst,MAKEINTRESOURCE(IDD_EDIT_SETTING),hwnd,EditSettingDlgProc, (LPARAM)dbsetting); - } - break; - case MENU_ADD_BLOB: - { - struct DBsetting *dbsetting = (struct DBsetting *)mir_alloc(sizeof(struct DBsetting)); // gets safe_free()ed in the window proc - DBVARIANT dbv = {0}; // freed in the dialog - dbv.type = DBVT_BLOB; - dbsetting->dbv = dbv; - dbsetting->hContact = hContact; - dbsetting->module = mir_tstrdup(module); - dbsetting->setting = mir_tstrdup(""); - CreateDialogParam(hInst,MAKEINTRESOURCE(IDD_EDIT_SETTING),hwnd,EditSettingDlgProc, (LPARAM)dbsetting); - } - break; -///////////////////////// convert to submenu - case MENU_CHANGE2BYTE: - if (convertSetting(hContact, module, setting, 0)) - { - lvi.iImage = 1; - ListView_SetItem(hSettings,&lvi); - } - break; - case MENU_CHANGE2WORD: - if (convertSetting(hContact, module, setting, 1)) - { - lvi.iImage = 2; - ListView_SetItem(hSettings,&lvi); - } - break; - case MENU_CHANGE2DWORD: - if (convertSetting(hContact, module, setting, 2)) - { - lvi.iImage = 3; - ListView_SetItem(hSettings,&lvi); - } - break; - case MENU_CHANGE2STRING: - if (convertSetting(hContact, module, setting, 3)) - { - lvi.iImage = 4; - ListView_SetItem(hSettings,&lvi); - } - break; - case MENU_CHANGE2UNICODE: - if (convertSetting(hContact, module, setting, 4)) - { - lvi.iImage = 5; - ListView_SetItem(hSettings,&lvi); - } - break; -///////////////////////// convert to submenu - case MENU_VIEWDECRYPT: - { - DBVARIANT dbv; - if (!DBGetContactSetting(hContact,module,setting,&dbv) && dbv.type==DBVT_ASCIIZ) - { - if (lstrcmpA(setting, "LoginPassword")) - { - char *text = mir_strdup(dbv.pszVal); - CallService(MS_DB_CRYPT_DECODESTRING, (WPARAM)lstrlenA(dbv.pszVal)+1, (LPARAM)text); - msg(text, Translate("Decoded string..")); - mir_free(text); - } - else - { - char *str = mir_strdup(dbv.pszVal); - char *str1 = str; - for (;*str1; ++str1) - { - const char c = *str1 ^ 0xc3; - if (c) *str1 = c; - } - if (UOS) - { - WCHAR *res = mir_utf8decodeW(str); - MessageBoxW(0, res, TranslateW(L"Decoded string.."),MB_OK); - mir_free(res); - } - else - { - mir_utf8decode(str, NULL); - MessageBoxA(0, str, Translate("Decoded string.."),MB_OK); - } - mir_free(str); - } - } - DBFreeVariant(&dbv); - } - break; - case MENU_VIEWENCRYPT: - { - DBVARIANT dbv; - char *text; - if (!DBGetContactSetting(hContact,module,setting,&dbv) && dbv.type==DBVT_ASCIIZ) - { - text = mir_tstrdup(dbv.pszVal); - CallService(MS_DB_CRYPT_ENCODESTRING, (WPARAM)strlen(dbv.pszVal)+1, (LPARAM)text); - msg(text, Translate("Encoded string..")); - mir_free(text); - } - DBFreeVariant(&dbv); - } - break; - case MENU_DECRYPT: - { - DBVARIANT dbv; - char *text; - if (!DBGetContactSetting(hContact,module,setting,&dbv) && dbv.type==DBVT_ASCIIZ) - { - text = mir_tstrdup(dbv.pszVal); - CallService(MS_DB_CRYPT_DECODESTRING, (WPARAM)strlen(dbv.pszVal)+1, (LPARAM)text); - DBWriteContactSettingString(hContact,module,setting,text); - mir_free(text); - } - DBFreeVariant(&dbv); - } - break; - case MENU_ENCRYPT: - { - DBVARIANT dbv; - char *text; - if (!DBGetContactSetting(hContact,module,setting,&dbv) && dbv.type==DBVT_ASCIIZ) - { - text = mir_tstrdup(dbv.pszVal); - CallService(MS_DB_CRYPT_ENCODESTRING, (WPARAM)strlen(dbv.pszVal)+1, (LPARAM)text); - DBWriteContactSettingString(hContact,module,setting,text); - mir_free(text); - } - DBFreeVariant(&dbv); - } - break; -///////////////////////// divider - case MENU_WATCH_ITEM: - - if (!watching) - { - addSettingToWatchList(hContact,module,setting); - } - else freeWatchListItem(i); - if (hwnd2watchedVarsWindow) - PopulateWatchedWindow(GetDlgItem(hwnd2watchedVarsWindow, IDC_VARS)); - break; - case MENU_DELETE_SET: - DeleteSettingsFromList(hSettings, hContact, module, setting); - break; - } - } -} \ No newline at end of file -- cgit v1.2.3