void CheckChange(HWND hwnd, HTREEITEM hItem) { HWND hLstView = GetDlgItem(hwnd, IDC_PROTOLIST); bool isChecked = !TreeView_GetCheckState(hLstView, hItem); TreeView_SelectItem(hLstView, hItem); int proto = nProtocol; if (GlobalNudge.useByProtocol) { proto = GetSelProto(hwnd, hItem); ActualNudge = NULL; for(NudgeElementList *n = NudgeList;n != NULL; n = n->next) { if(n->item.iProtoNumber == proto) ActualNudge = &n->item; } } else ActualNudge = &DefaultNudge; if (ActualNudge)// fix NULL pointer then no nudge support protocols ActualNudge->enabled = isChecked; UpdateControls(hwnd); }
void UpdateControls(HWND hwnd) { int proto = nProtocol; NudgeElementList *n; if (GlobalNudge.useByProtocol) { proto = GetSelProto(hwnd,NULL); ActualNudge = NULL; for(n = NudgeList;n != NULL; n = n->next) { if(n->item.iProtoNumber == proto) ActualNudge = &n->item; } } else ActualNudge = &DefaultNudge; SetDlgItemInt(hwnd, IDC_SENDTIME, GlobalNudge.sendTimeSec,FALSE); SetDlgItemInt(hwnd, IDC_RECVTIME, GlobalNudge.recvTimeSec,FALSE); SetDlgItemInt(hwnd, IDC_RESENDDELAY, GlobalNudge.resendDelaySec,FALSE); CheckDlgButton(hwnd, IDC_USEBYPROTOCOL, (WPARAM) GlobalNudge.useByProtocol); SendDlgItemMessage(hwnd, IDC_POPUPBACKCOLOR, CPM_SETDEFAULTCOLOUR, 0, GetSysColor(COLOR_BTNFACE)); SendDlgItemMessage(hwnd, IDC_POPUPTEXTCOLOR, CPM_SETDEFAULTCOLOUR, 0, GetSysColor(COLOR_WINDOWTEXT)); if (ActualNudge)// fix NULL pointer then no nudge support protocols { CheckDlgButton(hwnd, IDC_CHECKPOP, (WPARAM) ActualNudge->showPopup); CheckDlgButton(hwnd, IDC_USEWINCOLORS, (WPARAM) ActualNudge->popupWindowColor); CheckDlgButton(hwnd, IDC_CHECKCLIST, (WPARAM) ActualNudge->shakeClist); CheckDlgButton(hwnd, IDC_CHECKCHAT, (WPARAM) ActualNudge->shakeChat); CheckDlgButton(hwnd, IDC_CHECKEVENT, (WPARAM) ActualNudge->showEvent); CheckDlgButton(hwnd, IDC_CHECKSTATUS, (WPARAM) ActualNudge->showStatus); CheckDlgButton(hwnd, IDC_AUTORESEND, (WPARAM) ActualNudge->autoResend); SetDlgItemInt(hwnd, IDC_POPUPTIME, ActualNudge->popupTimeSec,FALSE); SendDlgItemMessage(hwnd, IDC_POPUPBACKCOLOR, CPM_SETCOLOUR,0, ActualNudge->popupBackColor); SendDlgItemMessage(hwnd, IDC_POPUPTEXTCOLOR, CPM_SETCOLOUR,0, ActualNudge->popupTextColor); EnableWindow(GetDlgItem(hwnd, IDC_USEWINCOLORS), ActualNudge->showPopup); EnableWindow(GetDlgItem(hwnd, IDC_POPUPBACKCOLOR), ActualNudge->showPopup && ! ActualNudge->popupWindowColor); EnableWindow(GetDlgItem(hwnd, IDC_POPUPTEXTCOLOR), ActualNudge->showPopup && ! ActualNudge->popupWindowColor); EnableWindow(GetDlgItem(hwnd, IDC_POPUPTIME), ActualNudge->showPopup); EnableWindow(GetDlgItem(hwnd,IDC_RESENDDELAY),ActualNudge->autoResend); CheckDlgButton(hwnd,IDC_CHECKST0,ActualNudge->statusFlags & NUDGE_ACC_ST0 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST1,ActualNudge->statusFlags & NUDGE_ACC_ST1 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST2,ActualNudge->statusFlags & NUDGE_ACC_ST2 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST3,ActualNudge->statusFlags & NUDGE_ACC_ST3 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST4,ActualNudge->statusFlags & NUDGE_ACC_ST4 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST5,ActualNudge->statusFlags & NUDGE_ACC_ST5 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST6,ActualNudge->statusFlags & NUDGE_ACC_ST6 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST7,ActualNudge->statusFlags & NUDGE_ACC_ST7 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST8,ActualNudge->statusFlags & NUDGE_ACC_ST8 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST9,ActualNudge->statusFlags & NUDGE_ACC_ST9 ? BST_CHECKED : BST_UNCHECKED); SetWindowText(GetDlgItem(hwnd, IDC_SENDTEXT), ActualNudge->senText); SetWindowText(GetDlgItem(hwnd, IDC_RECVTEXT), ActualNudge->recText); } }
void OptionsDialogType::UserAction(HTREEITEM hItem) { HWND hLstView = GetDlgItem(m_hwndDialog, IDC_CATEGORYLIST); if (TreeView_GetCheckState(hLstView, hItem)) { if (!BrowseForSmileyPacks(GetSelProto(hItem))) { TreeView_SetCheckState(hLstView, hItem, TRUE) } } else {
void UpdateControls(HWND hwnd) { int proto = nProtocol; if (GlobalNudge.useByProtocol) { proto = GetSelProto(hwnd,NULL); ActualNudge = NULL; for(NudgeElementList *n = NudgeList;n != NULL; n = n->next) { if(n->item.iProtoNumber == proto) ActualNudge = &n->item; } } else ActualNudge = &DefaultNudge; SetDlgItemInt(hwnd, IDC_SENDTIME, GlobalNudge.sendTimeSec,FALSE); SetDlgItemInt(hwnd, IDC_RECVTIME, GlobalNudge.recvTimeSec,FALSE); SetDlgItemInt(hwnd, IDC_RESENDDELAY, GlobalNudge.resendDelaySec,FALSE); CheckDlgButton(hwnd, IDC_USEBYPROTOCOL, (WPARAM) GlobalNudge.useByProtocol); if (ActualNudge)// fix NULL pointer then no nudge support protocols { CheckDlgButton(hwnd, IDC_CHECKPOP, (WPARAM) ActualNudge->showPopup); CheckDlgButton(hwnd, IDC_CHECKCLIST, (WPARAM) ActualNudge->shakeClist); CheckDlgButton(hwnd, IDC_CHECKCHAT, (WPARAM) ActualNudge->shakeChat); CheckDlgButton(hwnd, IDC_CHECKSTATUS, (WPARAM) ActualNudge->showStatus); CheckDlgButton(hwnd, IDC_AUTORESEND, (WPARAM) ActualNudge->autoResend); CheckDlgButton(hwnd, IDC_OPENMESSAGE, (WPARAM) ActualNudge->openMessageWindow); CheckDlgButton(hwnd, IDC_OPENCONTACTLIST, (WPARAM) ActualNudge->openContactList); CheckDlgButton(hwnd, IDC_IGNORE, (WPARAM) ActualNudge->useIgnoreSettings); EnableWindow(GetDlgItem(hwnd,IDC_RESENDDELAY),ActualNudge->autoResend); CheckDlgButton(hwnd,IDC_CHECKST0,ActualNudge->statusFlags & NUDGE_ACC_ST0 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST1,ActualNudge->statusFlags & NUDGE_ACC_ST1 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST2,ActualNudge->statusFlags & NUDGE_ACC_ST2 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST3,ActualNudge->statusFlags & NUDGE_ACC_ST3 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST4,ActualNudge->statusFlags & NUDGE_ACC_ST4 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST5,ActualNudge->statusFlags & NUDGE_ACC_ST5 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST6,ActualNudge->statusFlags & NUDGE_ACC_ST6 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST7,ActualNudge->statusFlags & NUDGE_ACC_ST7 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST8,ActualNudge->statusFlags & NUDGE_ACC_ST8 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST9,ActualNudge->statusFlags & NUDGE_ACC_ST9 ? BST_CHECKED : BST_UNCHECKED); SetDlgItemText(hwnd,IDC_SENDTEXT,ActualNudge->senText); SetDlgItemText(hwnd,IDC_RECVTEXT,ActualNudge->recText); } else { EnableWindow(GetDlgItem(hwnd,IDC_PROTOLIST),FALSE); } }
//OptionsDialog class functions BOOL OptionsDialogType::DialogProcedure(UINT msg, WPARAM wParam, LPARAM lParam) { BOOL Result = FALSE; switch(msg) { case WM_INITDIALOG: InitDialog(); Result = TRUE; break; case WM_DESTROY: DestroyDialog(); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_FILENAME: switch(HIWORD(wParam)) { case EN_KILLFOCUS: FilenameChanged(); break; case EN_CHANGE: if (GetFocus() == (HWND)lParam) SetChanged(); break; } break; case IDC_BROWSE: if (HIWORD(wParam) == BN_CLICKED) { if (BrowseForSmileyPacks(GetSelProto())) { UpdateControls(true); SetChanged(); } } break; case IDC_SMLOPTBUTTON: if (HIWORD(wParam) == BN_CLICKED) ShowSmileyPreview(); break; case IDC_USESTDPACK: if (HIWORD(wParam) == BN_CLICKED) { PopulateSmPackList(); SetChanged(); } break; case IDC_PLUGENABLED: if (HIWORD(wParam) == BN_CLICKED) { BOOL en = IsDlgButtonChecked(m_hwndDialog, IDC_PLUGENABLED) == BST_UNCHECKED; EnableWindow(GetDlgItem(m_hwndDialog, IDC_SMLBUT), en); SetChanged(); } break; case IDC_ADDCATEGORY: if (HIWORD(wParam) == BN_CLICKED) { AddCategory(); } break; case IDC_DELETECATEGORY: if (HIWORD(wParam) == BN_CLICKED) { if (tmpsmcat.DeleteCustomCategory(GetSelProto())) { PopulateSmPackList(); SetChanged(); } } break; case IDC_SPACES: case IDC_SCALETOTEXTHEIGHT: case IDC_APPENDSPACES: case IDC_SMLBUT: case IDC_SCALEALLSMILEYS: case IDC_IEVIEWSTYLE: case IDC_ANIMATESEL: case IDC_ANIMATEDLG: case IDC_INPUTSMILEYS: case IDC_DCURSORSMILEY: case IDC_DISABLECUSTOM: case IDC_HQSCALING: if (HIWORD(wParam) == BN_CLICKED) SetChanged(); break; case IDC_SELCLR: if (HIWORD(wParam) == CPN_COLOURCHANGED) SetChanged(); break; case IDC_MAXCUSTSMSZ: case IDC_MINSMSZ: if (HIWORD(wParam) == EN_CHANGE && GetFocus() == (HWND)lParam) SetChanged(); break; } break; case UM_CHECKSTATECHANGE: UserAction((HTREEITEM)lParam); break; case WM_NOTIFY: switch(((LPNMHDR)lParam)->idFrom) { case 0: switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: ApplyChanges(); break; } break; case IDC_CATEGORYLIST: switch (((LPNMHDR)lParam)->code) { case NM_CLICK: { TVHITTESTINFO ht = {0}; DWORD dwpos = GetMessagePos(); POINTSTOPOINT(ht.pt, MAKEPOINTS(dwpos)); MapWindowPoints(HWND_DESKTOP, ((LPNMHDR)lParam)->hwndFrom, &ht.pt, 1); TreeView_HitTest(((LPNMHDR)lParam)->hwndFrom, &ht); if (TVHT_ONITEM & ht.flags) FilenameChanged(); if (TVHT_ONITEMSTATEICON & ht.flags) PostMessage(m_hwndDialog, UM_CHECKSTATECHANGE, 0, (LPARAM)ht.hItem); } case TVN_KEYDOWN: if (((LPNMTVKEYDOWN) lParam)->wVKey == VK_SPACE) PostMessage(m_hwndDialog, UM_CHECKSTATECHANGE, 0, (LPARAM)TreeView_GetSelection(((LPNMHDR)lParam)->hwndFrom)); break; case TVN_SELCHANGEDA: case TVN_SELCHANGEDW: { LPNMTREEVIEW pnmtv = (LPNMTREEVIEW) lParam; if (pnmtv->itemNew.state & TVIS_SELECTED) UpdateControls(); } break; } break; } break; } return Result; }