/** * name: OnReminderChecked * class: CAnnivEditCtrl * desc: is called if reminder checkbox's state was changed * param: none * return: nothing **/ void CAnnivEditCtrl::OnReminderChecked() { MCONTACT hContact; LPCSTR pszProto; int state; TCHAR buf[6]; MAnnivDate *pCurrent = Current(); PSGetContact(_hwndDlg, hContact); if (!hContact || !PSGetBaseProto(_hwndDlg, pszProto) || !pCurrent) { EnableReminderCtrl(FALSE); } else { if (IsDlgButtonChecked(_hwndDlg, RADIO_REMIND1)) { _itot(db_get_b(NULL, MODNAME, SET_REMIND_OFFSET, DEFVAL_REMIND_OFFSET), buf, 10); EnableWindow(GetDlgItem(_hwndDlg, EDIT_REMIND), FALSE); EnableWindow(GetDlgItem(_hwndDlg, SPIN_REMIND), FALSE); state = BST_INDETERMINATE; } else if (IsDlgButtonChecked(_hwndDlg, RADIO_REMIND2)) { if (pCurrent->RemindOffset() == (WORD)-1) { _itot(db_get_b(NULL, MODNAME, SET_REMIND_OFFSET, DEFVAL_REMIND_OFFSET), buf, 10); } else { _itot(pCurrent->RemindOffset(), buf, 10); } EnableWindow(GetDlgItem(_hwndDlg, EDIT_REMIND), _ReminderEnabled); EnableWindow(GetDlgItem(_hwndDlg, SPIN_REMIND), _ReminderEnabled); state = BST_CHECKED; } else { *buf = 0; EnableWindow(GetDlgItem(_hwndDlg, EDIT_REMIND), FALSE); EnableWindow(GetDlgItem(_hwndDlg, SPIN_REMIND), FALSE); state = BST_UNCHECKED; } if (pCurrent->RemindOption() != state) { pCurrent->RemindOption(state); if (!PspIsLocked(_hwndDlg)) { pCurrent->SetFlags(MAnnivDate::MADF_REMINDER_CHANGED); SendMessage(GetParent(_hwndDlg), PSM_CHANGED, NULL, NULL); } } SetDlgItemText(_hwndDlg, EDIT_REMIND, buf); } }
/** * name: OnRemindEditChanged * class: CAnnivEditCtrl * desc: is called, if reminder edit control was changed * param: none * return: nothing **/ void CAnnivEditCtrl::OnRemindEditChanged() { MAnnivDate *pCurrent = Current(); if (pCurrent) { UINT iVal = GetDlgItemInt(_hwndDlg, EDIT_REMIND, NULL, FALSE); if (iVal != pCurrent->RemindOffset() && IsDlgButtonChecked(_hwndDlg, RADIO_REMIND2) == BST_CHECKED) { SendMessage(GetParent(_hwndDlg), PSM_CHANGED, NULL, NULL); pCurrent->SetFlags(MAnnivDate::MADF_REMINDER_CHANGED); pCurrent->RemindOffset(iVal); } } }
/** * name: OnMenuPopup * class: CAnnivEditCtrl * desc: is called to show a popup menu for all anniversaries of a contact * param: none * return: nothing **/ void CAnnivEditCtrl::OnDateChanged(LPNMDATETIMECHANGE lpChange) { MAnnivDate *pCurrent = Current(); if (pCurrent && !pCurrent->IsEqual(lpChange->st)) { HWND hPs = GetParent(_hwndDlg); // save the new date to the structure DateTime_SetFormat(_hwndDate, NULL); pCurrent->Set(lpChange->st, TRUE); pCurrent->SetFlags(MAnnivDate::MADF_CHANGED|MAnnivDate::MADF_HASCUSTOM); // notify parent of the change SendMessage(hPs, PSM_CHANGED, NULL, NULL); EnableWindow(_hBtnDel, TRUE); // update the age and zodiac controls on the general propertysheetpage if (pCurrent->Id() == ANID_BIRTHDAY) { SetZodiacAndAge(pCurrent); } } }
/** * Dialog procedure for the anniversary add/edit dialog * * @param hDlg - handle to the dialog window * @param uMsg - the message to handle * @param wParam - parameter * @param lParam - parameter * * @return different values **/ static INT_PTR CALLBACK DlgProc_AnniversaryEditor(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { MAnnivDate *pDlgEditAnniv = (MAnnivDate *)GetUserData(hDlg); switch (uMsg) { case WM_INITDIALOG: pDlgEditAnniv = (MAnnivDate *)lParam; if (!PtrIsValid(pDlgEditAnniv)) break; SetUserData(hDlg, lParam); // set icons if (db_get_b(NULL, MODNAME, SET_ICONS_BUTTONS, 1)) { SendDlgItemMessage(hDlg, IDOK, BM_SETIMAGE, IMAGE_ICON, (LPARAM)IcoLib_GetIcon(ICO_BTN_OK)); SendDlgItemMessage(hDlg, IDCANCEL, BM_SETIMAGE, IMAGE_ICON, (LPARAM)IcoLib_GetIcon(ICO_BTN_CANCEL)); } SendDlgItemMessage(hDlg, IDC_HEADERBAR, WM_SETICON, 0, (LPARAM)IcoLib_GetIcon(ICO_DLG_ANNIVERSARY, TRUE)); // translate controls SendDlgItemMessage(hDlg, IDOK, BUTTONTRANSLATE, NULL, NULL); SendDlgItemMessage(hDlg, IDCANCEL, BUTTONTRANSLATE, NULL, NULL); TranslateDialogDefault(hDlg); // init controls EnableWindow(GetDlgItem(hDlg, EDIT_CATEGORY), pDlgEditAnniv->Id() != ANID_BIRTHDAY); SetDlgItemText(hDlg, EDIT_CATEGORY, pDlgEditAnniv->Description()); return TRUE; case WM_CTLCOLORSTATIC: SetBkColor((HDC)wParam, RGB(255, 255, 255)); return (INT_PTR)GetStockObject(WHITE_BRUSH); case WM_COMMAND: switch (LOWORD(wParam)) { case EDIT_CATEGORY: if (HIWORD(wParam) == EN_UPDATE) EnableWindow(GetDlgItem(hDlg, IDOK), GetWindowTextLength((HWND)lParam) > 0); break; case IDOK: { // read new description HWND hEdit = GetDlgItem(hDlg, EDIT_CATEGORY); int len = Edit_GetTextLength(hEdit); LPTSTR pszText; if (len == 0 || (pszText = (LPTSTR)_alloca((len + 1) * sizeof(TCHAR))) == NULL || !Edit_GetText(hEdit, pszText, len + 1)) { MsgErr(hDlg, LPGENT("Please enter a valid description first!")); break; } if (mir_tstrcmpi(pszText, pDlgEditAnniv->Description())) { pDlgEditAnniv->Description(pszText); pDlgEditAnniv->SetFlags(MAnnivDate::MADF_HASCUSTOM | MAnnivDate::MADF_CHANGED); } } // fall through case IDCANCEL: return EndDialog(hDlg, LOWORD(wParam)); } } return FALSE; }