/*------------------------------------------------ Apply --------------------------------------------------*/ void OnApply(HWND hDlg,BOOL preview) { const wchar_t* section = (preview ? L"Preview" : L"Clock"); wchar_t tmp[LF_FACESIZE]; HWND fore_cb = GetDlgItem(hDlg, IDC_COLFORE); HWND back_cb = GetDlgItem(hDlg, IDC_COLBACK); HWND font_cb = GetDlgItem(hDlg, IDC_FONT); HWND size_cb = GetDlgItem(hDlg, IDC_FONTSIZE); int sel; api.SetInt(section, L"ForeColor", ColorBox_GetColorRaw(fore_cb)); api.SetInt(section, L"BackColor", ColorBox_GetColorRaw(back_cb)); ComboBox_GetLBText(font_cb, ComboBox_GetCurSel(font_cb), tmp); api.SetStr(section, L"Font", tmp); sel = ComboBox_GetCurSel(size_cb); if(sel == -1) ComboBox_GetText(size_cb, tmp, _countof(tmp)); else ComboBox_GetLBText(size_cb, sel, tmp); api.SetInt(section, L"FontSize", _wtoi(tmp)); api.SetInt(section, L"Bold", IsDlgButtonChecked(hDlg, IDC_BOLD)); api.SetInt(section, L"Italic", IsDlgButtonChecked(hDlg, IDC_ITALIC)); api.SetInt(section, L"FontQuality", ComboBox_GetCurSel(GetDlgItem(hDlg,IDC_FONTQUAL))); api.SetInt(section, L"ClockHeight", (int)SendDlgItemMessage(hDlg,IDC_SPINCHEIGHT,UDM_GETPOS32,0,0)); api.SetInt(section, L"ClockWidth", (int)SendDlgItemMessage(hDlg,IDC_SPINCWIDTH,UDM_GETPOS32,0,0)); api.SetInt(section, L"LineHeight", (int)SendDlgItemMessage(hDlg,IDC_SPINLHEIGHT,UDM_GETPOS32,0,0)); api.SetInt(section, L"VertPos", (int)SendDlgItemMessage(hDlg,IDC_SPINVPOS,UDM_GETPOS32,0,0)); api.SetInt(section, L"HorizPos", (int)SendDlgItemMessage(hDlg,IDC_SPINHPOS,UDM_GETPOS32,0,0)); api.SetInt(section, L"Angle", (int)SendDlgItemMessage(hDlg,IDC_SPINANGLE,UDM_GETPOS32,0,0)); if(!preview){ api.SetInt(L"Taskbar", L"AlphaTaskbar", (int)SendDlgItemMessage(hDlg,IDC_SPINALPHA,UDM_GETPOS32,0,0)); api.DelKey(L"Preview"); m_transition = 0; }else m_transition = 1; }
static INT_PTR CALLBACK Window_CalendarColorConfigDlg(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam){ switch(msg){ case WM_INITDIALOG:{ ColorBox colors[6]; HWND calendar = GetDlgItem(hDlg, IDC_CAL_PREVIEW); HWND preset_cb = GetDlgItem(hDlg, IDC_CAL_PRESET); int idx; m_calendar_dirty = 0; for(idx=0; idx<GROUP_CALENDAR_COLOR_NUM; ++idx){ unsigned color_id = GROUP_CALENDAR_COLOR + (idx * 2); colors[idx].hwnd = GetDlgItem(hDlg, color_id); colors[idx].color = api.GetInt(L"Calendar", g_calendar_color[idx].reg, TCOLOR(TCOLOR_DEFAULT)); m_calendar_preset[0].color[idx] = (COLORREF)MonthCal_GetColor(calendar, g_calendar_color[idx].mcsc); if(colors[idx].color != TCOLOR(TCOLOR_DEFAULT)){ m_calendar_dirty |= (1<<idx); MonthCal_SetColor(calendar, g_calendar_color[idx].mcsc, api.GetColor(colors[idx].color,0)); } } ColorBox_Setup(colors, 6); for(idx=0; idx<CALENDAR_PRESETS; ++idx) ComboBox_AddString(preset_cb, m_calendar_preset[idx].name); ComboBox_AddString(preset_cb, L"custom colors"); m_calendar_dirty ^= 1; // toggle bit to force refresh SendMessage(hDlg, WM_COMMAND, MAKEWPARAM(IDC_CAL_OUTER,CBN_SELCHANGE), (LPARAM)GetDlgItem(hDlg,IDC_CAL_OUTER)); return TRUE;} case WM_MEASUREITEM: return ColorBox_OnMeasureItem(wParam, lParam); case WM_DRAWITEM: return ColorBox_OnDrawItem(wParam, lParam); case WM_COMMAND:{ unsigned control_id = LOWORD(wParam); unsigned control_notify = HIWORD(wParam); switch(control_id){ case IDC_CAL_PREVIEW: break; case IDC_CAL_PRESET:{ HWND calendar = GetDlgItem(hDlg, IDC_CAL_PREVIEW); HWND preset_cb = GetDlgItem(hDlg, IDC_CAL_PRESET); int preset = ComboBox_GetCurSel(preset_cb); int idx; if(preset == CALENDAR_PRESETS) break; for(idx=0; idx<GROUP_CALENDAR_COLOR_NUM; ++idx){ unsigned color_id = GROUP_CALENDAR_COLOR + (idx * 2); HWND color_cb = GetDlgItem(hDlg, color_id); if(preset == 0) ColorBox_SetColor(color_cb, TCOLOR(TCOLOR_DEFAULT)); else ColorBox_SetColor(color_cb, m_calendar_preset[preset].color[idx]); MonthCal_SetColor(calendar, g_calendar_color[idx].mcsc, api.GetColor(m_calendar_preset[preset].color[idx],0)); } if(preset == 0) m_calendar_dirty = 0; else m_calendar_dirty = 0x01|0x02|0x04|0x08|0x10|0x20; SetXPWindowTheme(GetDlgItem(hDlg,IDC_CAL_PREVIEW), NULL, (m_calendar_dirty ? L"" : NULL)); break;} case IDC_CAL_OUTER: case IDC_CAL_FORE: case IDC_CAL_BACK: case IDC_CAL_TITLE: case IDC_CAL_TITLE_BG: case IDC_CAL_TRAIL: if(control_notify == CBN_SELCHANGE){ unsigned id = (control_id - GROUP_CALENDAR_COLOR) / 2; unsigned color = ColorBox_GetColorRaw((HWND)lParam); char dirty = m_calendar_dirty; if(color == TCOLOR(TCOLOR_DEFAULT)) dirty &= ~(1<<id); else dirty |= 1<<id; if(dirty != m_calendar_dirty){ m_calendar_dirty = dirty; SetXPWindowTheme(GetDlgItem(hDlg,IDC_CAL_PREVIEW), NULL, (dirty&~1 ? L"" : NULL)); } ComboBox_SetCurSel(GetDlgItem(hDlg,IDC_CAL_PRESET), (dirty ? CALENDAR_PRESETS : 0)); if(color == TCOLOR(TCOLOR_DEFAULT)) color = m_calendar_preset[0].color[id]; else color = api.GetColor(color, 0); MonthCal_SetColor(GetDlgItem(hDlg,IDC_CAL_PREVIEW), g_calendar_color[id].mcsc, color); } break; case IDOK: {int idx; for(idx=0; idx<GROUP_CALENDAR_COLOR_NUM; ++idx){ unsigned color_id = GROUP_CALENDAR_COLOR + (idx * 2); HWND color_cb = GetDlgItem(hDlg, color_id); api.SetInt(L"Calendar", g_calendar_color[idx].reg, ColorBox_GetColorRaw(color_cb)); }} /* fall through */ case IDCANCEL: EndDialog(hDlg, control_id); break; default: ColorBox_ChooseColor((HWND)lParam); } return TRUE;} } return FALSE; }