//---------------------------------------------------------------------------------------------------------------------- // HOT MACH // returns handle, i.e., dwSerialNum //---------------------------------------------------------------------------------------------------------------------- DWORD cListViewComputers :: hot_mach () { int iItem = ListView_GetHotItem ( hwnd ); if ( -1 == iItem ) return (DWORD) -1; LVITEM item; item.mask = LVIF_PARAM; item.iItem = iItem; if ( FALSE == ListView_GetItem ( hwnd, &item ) ) { LOG_SYSTEM_ERROR_T ( L"ListView_GetItem" ); return (DWORD) -1; } return item.lParam; }
INT_PTR CALLBACK UpdateNotifyOptsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { HWND hwndList = GetDlgItem(hwndDlg, IDC_FEEDLIST); switch (msg) { case WM_INITDIALOG: TranslateDialogDefault(hwndDlg); SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0); CreateList(hwndList); UpdateList(hwndList); CheckDlgButton(hwndDlg, IDC_STARTUPRETRIEVE, db_get_b(NULL, MODULE, "StartupRetrieve", 1)); return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_ADD: CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_ADDFEED), hwndDlg, DlgProcAddFeedOpts, (LPARAM)hwndList); return FALSE; case IDC_CHANGE: { ItemInfo SelItem = {0}; int sel = ListView_GetSelectionMark(hwndList); ListView_GetItemText(hwndList, sel, 0, SelItem.nick, MAX_PATH); ListView_GetItemText(hwndList, sel, 1, SelItem.url, MAX_PATH); SelItem.hwndList = hwndList; SelItem.SelNumber = sel; CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_ADDFEED), hwndDlg, DlgProcChangeFeedOpts, (LPARAM)&SelItem); } return FALSE; case IDC_REMOVE: if (MessageBox(hwndDlg, TranslateT("Are you sure?"), TranslateT("Contact deleting"), MB_YESNO | MB_ICONWARNING) == IDYES) { TCHAR nick[MAX_PATH], url[MAX_PATH]; int sel = ListView_GetSelectionMark(hwndList); ListView_GetItemText(hwndList, sel, 0, nick, MAX_PATH); ListView_GetItemText(hwndList, sel, 1, url, MAX_PATH); for (HANDLE hContact = db_find_first(MODULE); hContact; hContact = db_find_next(hContact, MODULE)) { ptrT dbNick( db_get_tsa(hContact, MODULE, "Nick")); if (dbNick == NULL) break; if ( lstrcmp(dbNick, nick)) continue; ptrT dbURL( db_get_tsa(hContact, MODULE, "URL")); if (dbURL == NULL) break; if ( lstrcmp(dbURL, url)) continue; CallService(MS_DB_CONTACT_DELETE, (WPARAM)hContact, 0); ListView_DeleteItem(hwndList, sel); break; } } return FALSE; case IDC_IMPORT: CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_FEEDIMPORT), hwndDlg, DlgProcImportOpts, (LPARAM)hwndList); return FALSE; case IDC_EXPORT: CreateDialog(hInst, MAKEINTRESOURCE(IDD_FEEDEXPORT), hwndDlg, DlgProcExportOpts); return FALSE; case IDC_STARTUPRETRIEVE: SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; } break; case WM_NOTIFY: { NMHDR *hdr = (NMHDR *)lParam; switch (hdr->code) { case PSN_APPLY: { db_set_b(NULL, MODULE, "StartupRetrieve", IsDlgButtonChecked(hwndDlg, IDC_STARTUPRETRIEVE)); int i = 0; for (HANDLE hContact = db_find_first(MODULE); hContact; hContact = db_find_next(hContact, MODULE)) { db_set_b(hContact, MODULE, "CheckState", ListView_GetCheckState(hwndList, i)); if (!ListView_GetCheckState(hwndList, i)) db_set_b(hContact, "CList", "Hidden", 1); else db_unset(hContact,"CList","Hidden"); i += 1; } } break; case NM_DBLCLK: { ItemInfo SelItem = {0}; int sel = ListView_GetHotItem(hwndList); if (sel != -1) { ListView_GetItemText(hwndList, sel, 0, SelItem.nick, MAX_PATH); ListView_GetItemText(hwndList, sel, 1, SelItem.url, MAX_PATH); SelItem.hwndList = hwndList; SelItem.SelNumber = sel; CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_ADDFEED), hwndDlg, DlgProcChangeFeedOpts, (LPARAM)&SelItem); } break; } case LVN_ITEMCHANGED: { NMLISTVIEW *nmlv = (NMLISTVIEW *)lParam; if (((nmlv->uNewState ^ nmlv->uOldState) & LVIS_STATEIMAGEMASK) && !UpdateListFlag) SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; } } } }//end* switch (msg) return FALSE; }