void HPSComboBox::setItemByText(const QString &str) { // qDebug() << Q_FUNC_INFO << str; QStandardItem *item; if(mPopup->isListView()) item = findItemInList(str); else item = findItemInTree(str); qDebug() << item; if( item!= NULL){ // qDebug() << "gefunden"; mLineEdit->setText(QDir::toNativeSeparators(str)); mPopup->setItem(item); }else { mLineEdit->setText(""); } }
void replaceTreeItem(HWND hwnd, MCONTACT 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 = KNOWN_MODULE; tvi.item.iImage = 1; tvi.item.iSelectedImage = 2; tvi.item.lParam = (LPARAM)lParam; TreeView_InsertItem(hwnd, &tvi); } }
int doContacts(HWND hwnd2Tree, HTREEITEM contactsRoot, ModuleSettingLL *modlist, MCONTACT hSelectedContact, char *SelectedModule, char *SelectedSetting) { TVINSERTSTRUCT tvi; HTREEITEM contact; ModuleTreeInfoStruct *lParam; 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; SetWindowText(hwnd2mainWindow, Translate("Loading contacts...")); tvi.hInsertAfter = TVI_SORT; tvi.item.cChildren = 1; for (MCONTACT hContact = db_find_first(); hContact && hwnd2mainWindow; hContact = db_find_next(hContact)) { char szProto[100]; if (DBGetContactSettingStringStatic(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)) continue; // 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 DBVARIANT dbv = {0}; WCHAR nick[256]; WCHAR protoW[256]; // unicode proto if (szProto) a2u(szProto, protoW, SIZEOF(protoW)); else protoW[0] = 0; if (!szProto || !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); 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; tvi.item.iImage = 1; tvi.item.iSelectedImage = 2; lParam->type = KNOWN_MODULE; tvi.item.lParam = (LPARAM)lParam; TreeView_InsertItem(hwnd2Tree, &tvi); } module = (ModSetLinkLinkItem *)module->next; } hItem = findItemInTree(hwnd2Tree, hSelectedContact, SelectedModule); } } if (hItem != -1) { TreeView_SelectItem(hwnd2Tree, (HTREEITEM)hItem); TreeView_Expand(hwnd2Tree, hItem, TVE_EXPAND); if (SelectedSetting[0]) SelectSetting(SelectedSetting); } return itemscount; }
void __cdecl PopulateModuleTreeThreadFunc(LPVOID di) { TVINSERTSTRUCT tvi; HWND hwnd2Tree = GetDlgItem(hwnd2mainWindow, IDC_MODULES); char SelectedModule[256] = {0}; char SelectedSetting[256] = {0}; MCONTACT hSelectedContact = hRestore; MCONTACT hContact; HTREEITEM contact, contactsRoot; int count; // item lParams ModuleTreeInfoStruct *lParam; // module list 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 if (HTREEITEM 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 = db_get_dw(NULL, modname, "LastContact", (DWORD)INVALID_HANDLE_VALUE); if (hSelectedContact != INVALID_CONTACT_ID) 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_CONTACT_ID) Select = 1; break; } 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.iImage = 0; tvi.item.iSelectedImage = 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) { 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; tvi.item.iImage = 1; tvi.item.iSelectedImage = 2; lParam->type = KNOWN_MODULE; tvi.item.lParam = (LPARAM)lParam; TreeView_InsertItem(hwnd2Tree, &tvi); } module = (ModSetLinkLinkItem *)module->next; } if (db_get_b(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; }