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/moduletree.cpp | 1135 ------------------------------------- 1 file changed, 1135 deletions(-) delete mode 100644 plugins/dbeditorpp/moduletree.cpp (limited to 'plugins/dbeditorpp/moduletree.cpp') diff --git a/plugins/dbeditorpp/moduletree.cpp b/plugins/dbeditorpp/moduletree.cpp deleted file mode 100644 index a3828b843e..0000000000 --- a/plugins/dbeditorpp/moduletree.cpp +++ /dev/null @@ -1,1135 +0,0 @@ -#include "headers.h" - -static BOOL populating = 0; -int Select = 0; -static ModuleTreeInfoStruct contacts_mtis = {CONTACT_ROOT_ITEM, 0}; -static ModuleTreeInfoStruct settings_mtis = {CONTACT, 0}; - - -int doContacts(HWND hwnd2Tree,HTREEITEM contactsRoot,ModuleSettingLL *modlist, HANDLE hSelectedContact, char *SelectedModule, char *SelectedSetting) -{ - TVINSERTSTRUCT tvi; - char szProto[256]; - HANDLE hContact; - HTREEITEM contact; - ModuleTreeInfoStruct *lParam; - struct ModSetLinkLinkItem *module; - int count = CallService(MS_DB_CONTACT_GETCOUNT, 0, 0); - int itemscount = 0; - int loaded, i = 0, icon = 0; - HWND hwnd = GetParent(hwnd2Tree); - int hItem = -1; - -// char percent[96], title[64]; -// mir_snprintf(title, sizeof(title),Translate("Loading contacts...")); - SetWindowText(hwnd2mainWindow, Translate("Loading contacts...")); - - hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); - - tvi.hInsertAfter = TVI_SORT; - tvi.item.cChildren = 1; - - while (hContact && hwnd2mainWindow) // break after null contact - { - - if (GetValue(hContact,"Protocol","p",szProto,SIZEOF(szProto))) - { - icon = GetProtoIcon(szProto); - loaded = (icon != DEF_ICON); - } - else - { - icon = DEF_ICON; - loaded = 0; - } - - i++; - - // filter - if ((loaded && Mode == MODE_UNLOADED) || (!loaded && Mode == MODE_LOADED)) - { - hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); - continue; - } - - // Caption -// mir_snprintf(percent,sizeof(percent),"%s %d%%",title,(int)(100*i/count)); -// SetWindowText(hwnd2mainWindow, percent); - - // add the contact - lParam = (ModuleTreeInfoStruct *)mir_calloc(sizeof(ModuleTreeInfoStruct)); - lParam->hContact = hContact; - lParam->type = CONTACT; - tvi.item.mask = TVIF_TEXT|TVIF_CHILDREN|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE; - tvi.item.lParam = (LPARAM)lParam; - tvi.hParent = contactsRoot; - - if (hSelectedContact != hContact) - lParam->type |= EMPTY; - - // contacts name - if (UOS) - { - DBVARIANT dbv ={0}; - WCHAR nick[256]; - WCHAR protoW[256]; // unicode proto - - if (szProto[0]) - a2u(szProto, protoW, SIZEOF(protoW)); - else - protoW[0] = 0; - - if (!szProto[0] || !loaded) - { - tvi.item.iSelectedImage = (tvi.item.iImage = 4); - - if (protoW) - { - if (Order) - mir_snwprintf(nick, SIZEOF(nick), L"(%s) %s %s", protoW, GetContactName(hContact, szProto, 1), L"(UNLOADED)"); - else - mir_snwprintf(nick, SIZEOF(nick), L"%s (%s) %s", GetContactName(hContact, szProto, 1), protoW, L"(UNLOADED)"); - } - else - wcscpy(nick, nick_unknownW); - } - else - { - tvi.item.iSelectedImage = (tvi.item.iImage = icon); //GetProtoIcon(szProto, 7)); - if (Order) - mir_snwprintf(nick, SIZEOF(nick), L"(%s) %s", protoW, GetContactName(hContact, szProto, 1)); - else - mir_snwprintf(nick, SIZEOF(nick), L"%s (%s)", GetContactName(hContact, szProto, 1), protoW); - } - - tvi.item.pszText = (char*)nick; - contact = TreeView_InsertItemW(hwnd2Tree, &tvi); - } - else - { - char nick[256]; - - if (!szProto[0] || !loaded) - { - tvi.item.iSelectedImage = (tvi.item.iImage = 4); - - if (szProto[0]) - { - if (Order) - mir_snprintf(nick, SIZEOF(nick), "(%s) %s %s", szProto, (char*)GetContactName(hContact, szProto, 0), "(UNLOADED)"); - else - mir_snprintf(nick, SIZEOF(nick), "%s (%s) %s", (char*)GetContactName(hContact, szProto, 0), szProto, "(UNLOADED)"); - } - else - strcpy(nick, nick_unknown); - } - else - { - tvi.item.iSelectedImage = (tvi.item.iImage = icon); //GetProtoIcon(szProto, 7)); - if (Order) - mir_snprintf(nick, SIZEOF(nick), "(%s) %s", szProto, (char*)GetContactName(hContact, szProto, 0)); - else - mir_snprintf(nick, SIZEOF(nick), "%s (%s)", (char*)GetContactName(hContact, szProto, 0), szProto); - } - - tvi.item.pszText = nick; - contact = TreeView_InsertItem(hwnd2Tree, &tvi); - } - - itemscount++; - - if (hSelectedContact == hContact) - { - - module = modlist->first; - while(module && hwnd2mainWindow) - { - if (module->name[0] && !IsModuleEmpty(hContact,module->name)) - { - tvi.hParent = contact; - tvi.hInsertAfter = TVI_SORT; - tvi.item.mask = TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_PARAM; - tvi.item.pszText = module->name; - - lParam = (ModuleTreeInfoStruct *)mir_calloc(sizeof(ModuleTreeInfoStruct)); - lParam->hContact = hContact; - - if (!module->known) - { - tvi.item.iImage = 5; - tvi.item.iSelectedImage = 6; - lParam->type = UNKNOWN_MODULE; - } - else - { - tvi.item.iImage = 1; - tvi.item.iSelectedImage = 2; - lParam->type = KNOWN_MODULE; - } - - tvi.item.lParam = (LPARAM)lParam; - TreeView_InsertItem(hwnd2Tree, &tvi); - } - module = (struct ModSetLinkLinkItem *)module->next; - } - - hItem = findItemInTree(hwnd2Tree, hSelectedContact, SelectedModule); - - } - - hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); - } - - - if (hItem != -1) - { - TreeView_SelectItem(hwnd2Tree, (HTREEITEM)hItem); - TreeView_Expand(hwnd2Tree,hItem,TVE_EXPAND); - if (SelectedSetting[0]) SelectSetting(SelectedSetting); - } - -// if (UOS) -// SetWindowText(hwnd, Translate("Database Editor++ (unicode mode)")); -// else -// SetWindowText(hwnd, Translate("Database Editor++ (ansi mode)")); - - - return itemscount; -} - - - -void doItems(HWND hwnd2Tree,ModuleSettingLL *modlist, int count) -{ - TVINSERTSTRUCT tvi; - TVITEM item ={0}; - HANDLE hContact; - HTREEITEM contact; - ModuleTreeInfoStruct *lParam; - struct ModSetLinkLinkItem *module; - char percent[96], title[64]; - HWND hwnd = GetParent(hwnd2Tree); - int i = 0; - - mir_snprintf(title, SIZEOF(title), Translate("Loading modules...")); - - item.mask = TVIF_STATE|TVIF_PARAM; - - contact = TreeView_GetChild( hwnd2Tree, TVI_ROOT ); - contact = TreeView_GetNextSibling(hwnd2Tree, contact); - contact = TreeView_GetChild(hwnd2Tree, contact); - - while (contact && hwnd2mainWindow) - { - i++; - item.hItem = contact; - contact = TreeView_GetNextSibling(hwnd2Tree, contact); - - if (TreeView_GetItem( hwnd2Tree, &item ) && - item.lParam) // && item.state != TVE_EXPAND) - { - ModuleTreeInfoStruct *mtis = (ModuleTreeInfoStruct *)item.lParam; - hContact = mtis->hContact; - if (hContact == NULL || mtis->type != (CONTACT|EMPTY)) - continue; - else - mtis->type = CONTACT; - } - else continue; - - // Caption - mir_snprintf(percent, SIZEOF(percent), "%s %d%%", title, (int)(100*i/count)); - SetWindowText(hwnd, percent); - - module = modlist->first; - while(module && hwnd2mainWindow) - { - if (module->name[0] && !IsModuleEmpty(hContact,module->name)) - { - tvi.hParent = item.hItem; - tvi.hInsertAfter = TVI_SORT; - tvi.item.mask = TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_PARAM; - tvi.item.pszText = module->name; - - lParam = (ModuleTreeInfoStruct *)mir_calloc(sizeof(ModuleTreeInfoStruct)); - lParam->hContact = hContact; - - if (!module->known) - { - tvi.item.iImage = 5; - tvi.item.iSelectedImage = 6; - lParam->type = UNKNOWN_MODULE; - } - else - { - tvi.item.iImage = 1; - tvi.item.iSelectedImage = 2; - lParam->type = KNOWN_MODULE; - } - - tvi.item.lParam = (LPARAM)lParam; - TreeView_InsertItem(hwnd2Tree, &tvi); - } - module = (struct ModSetLinkLinkItem *)module->next; - } - - } - - if (UOS) - SetWindowText(hwnd, Translate("Database Editor++ (unicode mode)")); - else - SetWindowText(hwnd, Translate("Database Editor++ (ansi mode)")); - - -} - - -int findItemInTree(HWND hwnd2Tree, HANDLE hContact, char* module) -/* the following code to go through the whole tree is nicked from codeguru.. -http://www.codeguru.com/Cpp/controls/treeview/treetraversal/comments.php/c683/?thread=7680 */ -{ - TVITEM item; - char text[265]; - HTREEITEM lastItem; - if (!TreeView_GetCount(hwnd2Tree)) return 0; - - item.mask = TVIF_STATE|TVIF_PARAM|TVIF_TEXT; - item.hItem = TVI_ROOT; - item.pszText = text; - item.cchTextMax = 264; - do - { - do - { - lastItem = item.hItem; - if (lastItem != TVI_ROOT) - { -/* these next 2 lines are not from code guru..... */ - if (TreeView_GetItem( hwnd2Tree, &item) && item.lParam) - { - if ((hContact == ((ModuleTreeInfoStruct *)item.lParam)->hContact) && (!module[0] || !mir_strcmp(module,text))) - { - //TreeView_SelectItem(hwnd2Tree,item.hItem); - return (int)item.hItem; - } - } -/* back to coduguru's code*/ - } - } while ( (item.hItem = TreeView_GetChild( hwnd2Tree, lastItem )) ); - while ( (! (item.hItem = TreeView_GetNextSibling( hwnd2Tree, lastItem ))) && (lastItem = item.hItem = TreeView_GetParent( hwnd2Tree, lastItem )) ) {} - - } while ( item.hItem ); -/*****************************************************************************/ - - return -1; -} - -void freeTree(HWND hwnd2Tree, HANDLE hContact) -/* the following code to go through the whole tree is nicked from codeguru.. -http://www.codeguru.com/Cpp/controls/treeview/treetraversal/comments.php/c683/?thread=7680 */ -{ - TVITEM item; - HTREEITEM lastItem; - if (!TreeView_GetCount(hwnd2Tree)) return; - - item.mask = TVIF_STATE|TVIF_PARAM; - item.hItem = TVI_ROOT; - do - { - do - { - lastItem = item.hItem; - if (lastItem != TVI_ROOT) - { - TreeView_GetItem( hwnd2Tree, &item ); -/* these next 2 lines are not from code guru..... */ - if (item.lParam) - { - ModuleTreeInfoStruct *mtis = (ModuleTreeInfoStruct *)item.lParam; - - if (!hContact || (hContact == mtis->hContact)) - { - if (hContact != NULL) { - TreeView_DeleteItem(hwnd2Tree,item.hItem); - mir_free(mtis); - } else - mtis->type = STUB; - } - } -/* back to coduguru's code*/ - } - } while ( (item.hItem = TreeView_GetChild( hwnd2Tree, lastItem )) ); - while ( (! (item.hItem = TreeView_GetNextSibling( hwnd2Tree, lastItem ))) && (lastItem = item.hItem = TreeView_GetParent( hwnd2Tree, lastItem )) ) {} - - } while ( item.hItem ); -/*****************************************************************************/ -} - -BOOL findAndRemoveDuplicates(HWND hwnd2Tree, HANDLE hContact, char* module) -/* the following code to go through the whole tree is nicked from codeguru.. -http://www.codeguru.com/Cpp/controls/treeview/treetraversal/comments.php/c683/?thread=7680 */ -{ - TVITEM item; - HTREEITEM lastItem, prelastItem; - BOOL Result = 0; - char text[265]; - if (!TreeView_GetCount(hwnd2Tree)) return Result; - - item.mask = TVIF_STATE|TVIF_PARAM|TVIF_TEXT; - item.hItem = TVI_ROOT; - item.pszText = text; - item.cchTextMax = 264; - prelastItem = item.hItem; - - do - { - do - { - lastItem = item.hItem; - if (lastItem != TVI_ROOT) - { - TreeView_GetItem( hwnd2Tree, &item ); -/* these next lines are not from code guru..... */ - if (item.lParam) - { - ModuleTreeInfoStruct *mtis = (ModuleTreeInfoStruct *)item.lParam; - if (hContact == mtis->hContact && !mir_strcmp(text,module)) - { - mir_free(mtis); - TreeView_DeleteItem(hwnd2Tree,item.hItem); - lastItem = prelastItem; - Result = 1; - } - else - prelastItem = lastItem; - } -/* back to coduguru's code*/ - } - } while ( (item.hItem = TreeView_GetChild( hwnd2Tree, lastItem )) ); - while ( (! (item.hItem = TreeView_GetNextSibling( hwnd2Tree, lastItem ))) && (lastItem = item.hItem = TreeView_GetParent( hwnd2Tree, lastItem )) ) {} - - } while ( item.hItem ); -/*****************************************************************************/ - - return Result; -} - - -void replaceTreeItem(HWND hwnd, HANDLE hContact, const char *module, const char *newModule) -{ - int hItem = findItemInTree(hwnd, hContact, (char*)module); - HTREEITEM hParent; - - if (hItem == -1) return; - - hParent = TreeView_GetParent(hwnd,(HTREEITEM)hItem); - - { - TVITEM item; - item.mask = TVIF_PARAM; - item.hItem = (HTREEITEM)hItem; - - if (TreeView_GetItem(hwnd, &item)) - mir_free((ModuleTreeInfoStruct *)item.lParam); - TreeView_DeleteItem(hwnd,item.hItem); - } - - if (hParent && newModule) - { - TVINSERTSTRUCT tvi = {0}; - ModuleTreeInfoStruct *lParam; - - tvi.hParent = hParent; - tvi.hInsertAfter = TVI_SORT; - tvi.item.mask = TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_PARAM; - tvi.item.pszText = (char*)newModule; - - lParam = (ModuleTreeInfoStruct *)mir_calloc(sizeof(ModuleTreeInfoStruct)); - lParam->hContact = hContact; - lParam->type = IsModuleKnown((char*)newModule)?KNOWN_MODULE:UNKNOWN_MODULE; - if (lParam->type == UNKNOWN_MODULE) - { - tvi.item.iImage = 5; - tvi.item.iSelectedImage = 6; - } - else - { - tvi.item.iImage = 1; - tvi.item.iSelectedImage = 2; - } - - tvi.item.lParam = (LPARAM)lParam; - - TreeView_InsertItem(hwnd, &tvi); - } - -} - - -void refreshTree(int restore) -{ - UseKnownModList = DBGetContactSettingByte(NULL,modname,"UseKnownModList",0); - if (populating) return; - populating = 1; - forkthread(PopulateModuleTreeThreadFunc,0,(HWND)restore); -} - - -void __cdecl PopulateModuleTreeThreadFunc(LPVOID di) -{ - TVINSERTSTRUCT tvi; - HWND hwnd2Tree = GetDlgItem(hwnd2mainWindow,IDC_MODULES); - char SelectedModule[256] = {0}; - char SelectedSetting[256] = {0}; - HANDLE hSelectedContact = hRestore; - HANDLE hContact; - HTREEITEM contact, contactsRoot; - int count; - - // item lParams - ModuleTreeInfoStruct *lParam; - - // module list - struct ModSetLinkLinkItem *module; - ModuleSettingLL modlist; - - hRestore = NULL; - - if (!hwnd2Tree) { msg(Translate("Module tree not found"),modFullname); return;} - - Select = 0; - - switch((int)di) { - case 1: // restore after rebuild - { - HTREEITEM item; - if (item = TreeView_GetSelection(hwnd2Tree)) - { - TVITEM tvi = {0}; - - tvi.mask=TVIF_HANDLE|TVIF_PARAM|TVIF_TEXT; - tvi.pszText = SelectedModule; - tvi.cchTextMax = 255; - tvi.hItem=item; - - TreeView_GetItem(hwnd2Tree, &tvi); - if (tvi.lParam) - { - ModuleTreeInfoStruct *mtis = (ModuleTreeInfoStruct *)tvi.lParam; - hSelectedContact = mtis->hContact; - if (mtis->type == CONTACT) SelectedModule[0] = 0; - Select = 1; - } - } - break; - } - case 2: // restore saved - if (GetValue(NULL,modname,"LastModule",SelectedModule,SIZEOF(SelectedModule))) - { - hSelectedContact = (HANDLE)DBGetContactSettingDword(NULL,modname,"LastContact",(DWORD)INVALID_HANDLE_VALUE); - if (hSelectedContact != INVALID_HANDLE_VALUE) - Select = 1; - GetValue(NULL,modname,"LastSetting",SelectedSetting,SIZEOF(SelectedSetting)); - } - break; - case 3: // restore from user menu - case 4: // jump from user menu - { - if (hSelectedContact && hSelectedContact != INVALID_HANDLE_VALUE) - { - Select = 1; - } - break; - } - } // switch - - if ((int)di != 4) // do not rebuild on just going to another setting - { - - if (!EnumModules(&modlist)) { msg(Translate("Error Loading Module List"),modFullname); return;} - - // remove all items (incase there are items there... - freeTree(hwnd2Tree,0); - TreeView_DeleteAllItems(hwnd2Tree); - TreeView_SelectItem(hwnd2Tree,0); - - //image list - TreeView_SetImageList(hwnd2Tree, himl, TVSIL_NORMAL); - - /// contact root item - contacts_mtis.type = CONTACT_ROOT_ITEM; - tvi.item.lParam = (LPARAM)&contacts_mtis; - tvi.hParent = NULL; - tvi.item.mask = TVIF_TEXT|TVIF_CHILDREN|TVIF_STATE|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE; - tvi.item.state = TVIS_BOLD; - tvi.item.stateMask = TVIS_BOLD; - tvi.item.cChildren = 1; - tvi.hInsertAfter = TVI_FIRST; - - tvi.item.pszText = Translate("Contacts"); - tvi.item.iImage = 3; - tvi.item.iSelectedImage = 3; - contactsRoot = TreeView_InsertItem(hwnd2Tree, &tvi); - - // add the settings item - settings_mtis.type = STUB; - tvi.item.lParam = (LPARAM)&settings_mtis; - tvi.item.mask = TVIF_TEXT|TVIF_CHILDREN|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE; - tvi.item.cChildren = 1; - tvi.hParent = NULL; - tvi.hInsertAfter = TVI_FIRST; - tvi.item.pszText = Translate("Settings"); - tvi.item.iSelectedImage = (tvi.item.iImage = 0); - contact = TreeView_InsertItem(hwnd2Tree, &tvi); - - // to fix bug with CHANGE NOTIFY on window activation - TreeView_SelectItem(hwnd2Tree, contact); - settings_mtis.type = CONTACT; - - hContact = 0; - module = modlist.first; - while (module) - { - // set the module status type for the icon - module->known = IsModuleKnown(module->name); - - if (!IsModuleEmpty(hContact,module->name)) - { - tvi.hParent = contact; - tvi.hInsertAfter = TVI_SORT; - tvi.item.mask = TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_PARAM; - tvi.item.pszText = module->name; - - lParam = (ModuleTreeInfoStruct *)mir_calloc(sizeof(ModuleTreeInfoStruct)); - lParam->hContact = hContact; - if (!module->known) - { - tvi.item.iImage = 5; - tvi.item.iSelectedImage = 6; - lParam->type = UNKNOWN_MODULE; - } - else - { - tvi.item.iImage = 1; - tvi.item.iSelectedImage = 2; - lParam->type = KNOWN_MODULE; - } - - tvi.item.lParam = (LPARAM)lParam; - - TreeView_InsertItem(hwnd2Tree, &tvi); - } - module = (struct ModSetLinkLinkItem *)module->next; - } - - if (DBGetContactSettingByte(NULL,modname,"ExpandSettingsOnOpen",0)) - TreeView_Expand(hwnd2Tree,contact,TVE_EXPAND); - - if (Select && hSelectedContact == NULL) - { - int hItem = findItemInTree(hwnd2Tree, hSelectedContact, SelectedModule); - if (hItem != -1) - { - TreeView_SelectItem(hwnd2Tree, (HTREEITEM)hItem); - TreeView_Expand(hwnd2Tree,hItem,TVE_EXPAND); - if (SelectedSetting[0]) SelectSetting(SelectedSetting); - } - Select = 0; - } - - count = doContacts(hwnd2Tree,contactsRoot,&modlist, Select?hSelectedContact:NULL, SelectedModule, SelectedSetting); - Select = 0; - doItems(hwnd2Tree,&modlist,count); - - FreeModuleSettingLL(&modlist); - } - - if (Select) - { - int hItem = findItemInTree(hwnd2Tree, hSelectedContact, SelectedModule); - if (hItem != -1) - { - TreeView_SelectItem(hwnd2Tree, (HTREEITEM)hItem); - TreeView_Expand(hwnd2Tree,hItem,TVE_EXPAND); - if (SelectedSetting[0]) SelectSetting(SelectedSetting); - } - } - - populating = 0; - -} - - -static WNDPROC ModuleTreeLabelEditSubClass; - -static LRESULT CALLBACK ModuleTreeLabelEditSubClassProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) -{ - switch(msg) { - case WM_KEYUP: - switch (wParam) - { - case VK_RETURN: - TreeView_EndEditLabelNow(GetParent(hwnd),0); - return 0; - case VK_ESCAPE: - TreeView_EndEditLabelNow(GetParent(hwnd),1); - return 0; - } - break; - } - return CallWindowProc(ModuleTreeLabelEditSubClass,hwnd,msg,wParam,lParam); -} -void moduleListRightClick(HWND hwnd, WPARAM wParam,LPARAM lParam); - -void moduleListWM_NOTIFY(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)// hwnd here is to the main window, NOT the treview -{ - switch(((NMHDR*)lParam)->code) - { - case TVN_ITEMEXPANDINGA: - case TVN_ITEMEXPANDINGW: - if (populating && ((LPNMTREEVIEW)lParam)->action == TVE_EXPAND) - { - ModuleTreeInfoStruct *mtis = (ModuleTreeInfoStruct *)((LPNMTREEVIEW)lParam)->itemNew.lParam; - if (mtis && (mtis->type == (CONTACT | EMPTY))) - { - TVINSERTSTRUCT tvi; - HTREEITEM item = {0}; - ModuleTreeInfoStruct *_lParam; - HWND hwnd2Tree = GetDlgItem(hwnd2mainWindow,IDC_MODULES); - struct ModSetLinkLinkItem *module; - ModuleSettingLL modlist; - HANDLE hContact = mtis->hContact; - - mtis->type = CONTACT; - - if (!EnumModules(&modlist)) { msg(Translate("Error Loading Module List"),modFullname); break;} - - module = modlist.first; - while(module && hwnd2mainWindow) - { - if (module->name[0] && !IsModuleEmpty(hContact,module->name)) - { - tvi.hParent = ((LPNMTREEVIEW)lParam)->itemNew.hItem; - tvi.hInsertAfter = TVI_SORT; - tvi.item.mask = TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_PARAM; - tvi.item.pszText = module->name; - - _lParam = (ModuleTreeInfoStruct *)mir_calloc(sizeof(ModuleTreeInfoStruct)); - _lParam->hContact = hContact; - - if (IsModuleKnown(module->name)) - { - tvi.item.iImage = 5; - tvi.item.iSelectedImage = 6; - _lParam->type = KNOWN_MODULE; - } - else - { - tvi.item.iImage = 1; - tvi.item.iSelectedImage = 2; - _lParam->type = UNKNOWN_MODULE; - } - - tvi.item.lParam = (LPARAM)_lParam; - TreeView_InsertItem(hwnd2Tree, &tvi); - } - module = (struct ModSetLinkLinkItem *)module->next; - } - - FreeModuleSettingLL(&modlist); - } - - } - break; - - case TVN_SELCHANGEDA: - case TVN_SELCHANGEDW: - { - ModuleTreeInfoStruct *mtis; - LPNMTREEVIEW pnmtv = (LPNMTREEVIEW)lParam; - TVITEM tvi = {0}; - char text[264]; - HANDLE hContact; - HWND hwnd2Settings = GetDlgItem(hwnd, IDC_SETTINGS); - tvi.mask = TVIF_HANDLE|TVIF_PARAM|TVIF_TEXT; - tvi.hItem = pnmtv->itemNew.hItem; - tvi.pszText = text; - tvi.cchTextMax = 264; - TreeView_GetItem(pnmtv->hdr.hwndFrom,&tvi); - - if (tvi.lParam) - { - mtis = (ModuleTreeInfoStruct *)tvi.lParam; - hContact = mtis->hContact; - - if (mtis->type == STUB) break; - - if (populating) Select = 0; - - if (mtis->type == MODULE || mtis->type == UNKNOWN_MODULE) - { - SettingListInfo *info = (SettingListInfo*)GetWindowLongPtr(hwnd2Settings,GWLP_USERDATA); - BOOL refresh = 1; - - if (info) - { - if (info->hContact == hContact && - !mir_strcmp(info->module, text)) - refresh = 0; - } - - if (refresh) - PopulateSettings(hwnd2Settings, hContact, text); - } - else - if (((mtis->type & CONTACT) == CONTACT && hContact) || - (mtis->type == CONTACT_ROOT_ITEM && !hContact)) - { - char data[32], szProto[256]; - int index, loaded, multi = 0; - LVITEM lvi = {0}; - lvi.mask = LVIF_IMAGE|LVIF_TEXT|LVIF_PARAM; - lvi.iImage = 6; - - ClearListview(hwnd2Settings); - SetWindowLongPtr(hwnd2Settings,GWLP_USERDATA, (LONG)NULL); - if (himl2) ListView_SetImageList(hwnd2Settings, himl2, LVSIL_SMALL); - - if (mtis->type == CONTACT_ROOT_ITEM && !hContact) - { - multi = 1; - hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); - } - - while(hContact && hwnd2mainWindow) - { - if (multi) - { - // filter - if (GetValue(hContact,"Protocol","p",szProto,SIZEOF(szProto))) - loaded = IsProtocolLoaded(szProto); - else - loaded = 0; - - if ((loaded && Mode == MODE_UNLOADED) || (!loaded && Mode == MODE_LOADED)) - { - hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); - continue; - } - } - - lvi.iItem = 0; - lvi.pszText = (char*)GetContactName(hContact,NULL,UOS); - - if (UOS) - index = ListView_InsertItemW(hwnd2Settings,&lvi); - else - index = ListView_InsertItem(hwnd2Settings,&lvi); - - mir_snprintf(data, SIZEOF(data), "0x%08X (%ld)", hContact, hContact); - - ListView_SetItemText(hwnd2Settings,index,1,data); - ListView_SetItemText(hwnd2Settings,index,2,Translate("HANDLE")); - ListView_SetItemText(hwnd2Settings,index,3,"0x0004 (4)"); - - if (!multi) break; - - hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); - } - - } - else - ClearListview(hwnd2Settings); - } - else - { - // clear any settings that may be there... - ClearListview(hwnd2Settings); - } - } - break; //TVN_SELCHANGED: - case NM_RCLICK: - if (((NMHDR*)lParam)->code == NM_RCLICK) - moduleListRightClick(hwnd,wParam,lParam); - break; - case TVN_BEGINLABELEDITA: // subclass it.. - case TVN_BEGINLABELEDITW: - { - LPNMTVDISPINFO ptvdi = (LPNMTVDISPINFO) lParam; - ModuleTreeInfoStruct *mtis = (ModuleTreeInfoStruct *)ptvdi->item.lParam; - HWND hwnd2Edit = TreeView_GetEditControl(GetDlgItem(hwnd, IDC_MODULES)); - if (!mtis->type || (mtis->type == CONTACT)) - { - SetWindowLongPtr(hwnd, DWLP_MSGRESULT, TRUE); - break; - } - ModuleTreeLabelEditSubClass = (WNDPROC)SetWindowLongPtr(hwnd2Edit, GWLP_WNDPROC, (LONG)ModuleTreeLabelEditSubClassProc); - SetWindowLongPtr(hwnd, DWLP_MSGRESULT, FALSE); - } - break; - case TVN_ENDLABELEDITA: - case TVN_ENDLABELEDITW: - { - LPNMTVDISPINFO ptvdi = (LPNMTVDISPINFO) lParam; - TVITEM tvi = {0}; - char text[264]; - char *newtext; - ModuleTreeInfoStruct *mtis; - tvi.mask=TVIF_HANDLE|TVIF_TEXT|TVIF_PARAM; - tvi.hItem=ptvdi->item.hItem; - tvi.pszText = text; - tvi.cchTextMax = 264; - TreeView_GetItem(((LPNMHDR)lParam)->hwndFrom,&tvi); - mtis = (ModuleTreeInfoStruct *)ptvdi->item.lParam; - - if (UOS) - newtext = u2a((WCHAR*)ptvdi->item.pszText); - else - newtext = mir_tstrdup(ptvdi->item.pszText); - - if (!newtext || // edit control failed - !mtis->type || // its a root item - mtis->type == CONTACT || // its a contact - *newtext == 0) // empty string - SetWindowLongPtr(hwnd, DWLP_MSGRESULT, FALSE); - else - { - if (mir_strcmp(tvi.pszText, newtext)) - { - renameModule(tvi.pszText, newtext, mtis->hContact); - - findAndRemoveDuplicates(((LPNMHDR)lParam)->hwndFrom,mtis->hContact,newtext); - - if (TreeView_GetItem(((LPNMHDR)lParam)->hwndFrom,&tvi)) - { - tvi.mask = TVIF_IMAGE|TVIF_SELECTEDIMAGE; - if (!IsModuleKnown(newtext)) - { - tvi.iImage = 5; - tvi.iSelectedImage = 6; - } - else - { - tvi.iImage = 1; - tvi.iSelectedImage = 2; - } - TreeView_SetItem(((LPNMHDR)lParam)->hwndFrom, &tvi); - - PopulateSettings(GetDlgItem(hwnd, IDC_SETTINGS), mtis->hContact, newtext); - } - } - SetWindowLongPtr(hwnd, DWLP_MSGRESULT, TRUE); - } - - mir_free(newtext); - } - break; - } -} - -void moduleListRightClick(HWND hwnd, WPARAM wParam,LPARAM lParam) // hwnd here is to the main window, NOT the treview -{ - TVHITTESTINFO hti; - hti.pt.x=(short)LOWORD(GetMessagePos()); - hti.pt.y=(short)HIWORD(GetMessagePos()); - ScreenToClient(((LPNMHDR)lParam)->hwndFrom,&hti.pt); - - if(TreeView_HitTest(((LPNMHDR)lParam)->hwndFrom,&hti)) - { - if(hti.flags&TVHT_ONITEM) - { - TVITEM tvi = {0}; - HMENU hMenu,hSubMenu; - int menuNumber; - char module[256]; - tvi.mask=TVIF_HANDLE|TVIF_PARAM|TVIF_TEXT; - tvi.hItem=hti.hItem; - tvi.pszText = module; - tvi.cchTextMax = 255; - TreeView_GetItem(((LPNMHDR)lParam)->hwndFrom,&tvi); - if (tvi.lParam) - { - ModuleTreeInfoStruct *mtis = (ModuleTreeInfoStruct *)tvi.lParam; - HANDLE hContact = mtis->hContact; - GetCursorPos(&(hti.pt)); - hMenu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_CONTEXTMENU)); - CallService(MS_LANGPACK_TRANSLATEMENU,(WPARAM)hMenu,0); - if (mtis->type == CONTACT && hContact) menuNumber = 2; - else if ((mtis->type == MODULE || mtis->type == UNKNOWN_MODULE) && !hContact) menuNumber = 1; - else if (mtis->type == CONTACT && !hContact) menuNumber = 3; - else if (mtis->type == CONTACT_ROOT_ITEM && !hContact) menuNumber = 4; - else if ((mtis->type == MODULE || mtis->type == UNKNOWN_MODULE) && hContact) menuNumber = 5; - else return; - hSubMenu = GetSubMenu(hMenu, menuNumber); - - CallService(MS_LANGPACK_TRANSLATEMENU, (WPARAM) hSubMenu, 0); - switch (menuNumber) - { - case 1: // null module - case 5: // contact module - { - // check if we r already watching the module - int i; - int watching = 0; - // check if the setting is being watched and if it is then check the menu item - if (WatchListArray.item) - for (i=0; ihwndFrom,hti.hItem); - mir_free(mtis); - } - break; - case MENU_COPY_MOD: - copyModuleMenuItem(module, hContact); - break; -////////////////////////////////////////////////////////////////////// divider - case MENU_WATCH_ITEM: - if (!watching) - addSettingToWatchList(hContact,module,0); - else freeWatchListItem(i); - if (hwnd2watchedVarsWindow) - PopulateWatchedWindow(GetDlgItem(hwnd2watchedVarsWindow, IDC_VARS)); - break; - case MENU_EXPORTMODULE: - exportDB(hContact, module); - break; - case MENU_EXPORTDB: - exportDB(INVALID_HANDLE_VALUE, module); - break; - case MENU_ADDKNOWN: - { - DBVARIANT dbv; - char *moduletemp = (char*)_alloca(strlen(module)*3); - unsigned int i; - moduletemp[0] = '\0'; - for(i=0;ihwndFrom,hContact); - TreeView_DeleteItem(((LPNMHDR)lParam)->hwndFrom,tvi.hItem); - } - } - else - { - CallService(MS_DB_CONTACT_DELETE, (WPARAM)hContact,0); - freeTree(((LPNMHDR)lParam)->hwndFrom,hContact); - TreeView_DeleteItem(((LPNMHDR)lParam)->hwndFrom,tvi.hItem); - } - break; -////////////////////////////////////////////////////////////////////// divider - case MENU_EXPORTCONTACT: - exportDB(hContact, 0); - break; - case MENU_IMPORTFROMTEXT: - ImportSettingsMenuItem(hContact); - break; - case MENU_IMPORTFROMFILE: - ImportSettingsFromFileMenuItem(hContact, ""); - break; -////////////////////////////////////////////////////////////////////// divider - case MENU_ADD_MODULE: - { - HWND AddModhwnd = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_ADD_MODULE), hwnd, AddModDlgProc, (LPARAM)hContact); - char msg[1024]; - mir_snprintf(msg, SIZEOF(msg), Translate("Add module to contact \"%s\""), module); - SetWindowText(AddModhwnd, module); - } - break; - } - break; - case 3: // NULL contact - switch (TrackPopupMenu(hSubMenu, TPM_RETURNCMD, hti.pt.x, hti.pt.y, 0, hwnd, NULL)) - { - case MENU_ADD_MODULE: - { - HWND AddModhwnd = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_ADD_MODULE), hwnd, AddModDlgProc, (LPARAM)hContact); - char msg[1024]; - mir_snprintf(msg, SIZEOF(msg), Translate("Add module to contact \"%s\""), module); - SetWindowText(AddModhwnd, module); - } - break; - case MENU_EXPORTCONTACT: - exportDB(NULL, 0); - break; - case MENU_IMPORTFROMTEXT: - ImportSettingsMenuItem(NULL); - break; - case MENU_IMPORTFROMFILE: - ImportSettingsFromFileMenuItem(NULL, ""); - break; - } - break; - case 4: // Contacts root - switch (TrackPopupMenu(hSubMenu, TPM_RETURNCMD, hti.pt.x, hti.pt.y, 0, hwnd, NULL)) - { - case MENU_EXPORTCONTACT: - exportDB(INVALID_HANDLE_VALUE, ""); - break; - case MENU_IMPORTFROMTEXT: - ImportSettingsMenuItem(NULL); - break; - case MENU_IMPORTFROMFILE: - ImportSettingsFromFileMenuItem(NULL, ""); - break; - } - break; - } - DestroyMenu(hMenu); - } - } // if (tvi.lParam) - } // if(hti.flags&TVHT_ONITEM) -} \ No newline at end of file -- cgit v1.2.3