//============================================================================================= //----------------------------------------------+++--> Load Configured Alarm Data From Registry: void InitAlarm() //--------------------------------------------------------------------+++--> { time_t ts; time_t next_update; TimetableClean(); m_maxAlarm = GetAlarmNum(); if(m_maxAlarm > 0) { int i; for(i=0; i<m_maxAlarm; ++i) { AlarmEnable(i, -2); } } AlarmChimeEnable(-2); // this is for Windows 2000 only - EasterEgg function: # ifdef WIN2K_COMPAT if(api.OS == TOS_2000 && api.GetIntEx("Desktop","Transparent2kIconText",0)) { TimetableAdd(SCHEDID_WIN2K, 30, 30); } # endif // WIN2K_COMPAT // update check (always added, checks "enabled" on trigger) ts = time(NULL) + 300; next_update = api.GetInt64(NULL, UPDATE_TIMESTAMP, 0); if(!next_update) { next_update = time(NULL) + 86400; api.SetInt64(NULL, UPDATE_TIMESTAMP, next_update); } if(ts > next_update) TimetableAdd(SCHEDID_UPDATE, ts, (unsigned)(ts-next_update)); else TimetableAdd(SCHEDID_UPDATE, next_update, 0); }
/*------------------------------------------------------*/ int SetAlarm (void) { rtime t = Time; int i,j,k,n; char s[8][8]; for(i=0; i<8; ++i) { writeRTC(i,0); s[i][0] = 0; } n=sscanf(&LinkBuff[1],"%2d:%02d:%02d%s%s%s%s%s", &i,&j,&k,&s[0],&s[1],&s[2],&s[3],&s[4]); if(n>=3) { if(n==3) { t.hour=i; t.min=j; t.sec=k; AlarmEnable(&t); puts_pc("Wakeup on\r\n"); } if(n>3) { writeRTC(0,i); writeRTC(1,j); writeRTC(2,k); n -=3; for(i=0; n--; ++i) writeRTC(i+3,chrtx(s[i])); puts_pc("Submit on\r\n"); } } else { AlarmDisable(); puts_pc("Wakeup off\r\n"); } shutdown_save(NULL); return(null); }
/*----------------------------------------------------------------- ---------------- when the clock is right-clicked show pop-up menu -----------------------------------------------------------------*/ void OnContextMenu(HWND hWnd, int xPos, int yPos) { BOOL g_bQMAudio; BOOL g_bQMNet; BOOL g_bQMLaunch; BOOL g_bQMExitWin; BOOL g_bQMDisplay; HMENU hPopupMenu; HMENU hMenu; int item; HBITMAP shield_bmp = NULL; g_bQMAudio = api.GetInt(L"QuickyMenu", L"AudioProperties", TRUE); g_bQMNet = api.GetInt(L"QuickyMenu", L"NetworkDrives", TRUE); g_bQMLaunch = api.GetInt(L"QuickyMenu", L"QuickyMenu", TRUE); g_bQMExitWin = api.GetInt(L"QuickyMenu", L"ExitWindows", TRUE); g_bQMDisplay = api.GetInt(L"QuickyMenu", L"DisplayProperties", TRUE); hMenu = LoadMenu(g_instance, MAKEINTRESOURCE(IDR_MENU)); hPopupMenu = GetSubMenu(hMenu, 0); if(!g_bQMAudio) DeleteMenu(hPopupMenu, IDC_SOUNDAUDIO, MF_BYCOMMAND); if(!g_bQMNet) DeleteMenu(hPopupMenu, IDC_NETWORK, MF_BYCOMMAND); if(!g_bQMLaunch) DeleteMenu(hPopupMenu, IDC_QUICKYS, MF_BYCOMMAND); if(!g_bQMExitWin) DeleteMenu(hPopupMenu, IDC_EXITWIN, MF_BYCOMMAND); if(!g_bQMDisplay) DeleteMenu(hPopupMenu, IDM_DISPLAYPROP, MF_BYCOMMAND); /// simple implementation of "Undo ..." (eg. Undo Cascade windows) if(!g_undo) DeleteMenu(hPopupMenu, IDM_FWD_UNDO, MF_BYCOMMAND); /// special menu items, only shown if SHIFT or CTRL was pressed if(!((GetAsyncKeyState(VK_SHIFT)|GetAsyncKeyState(VK_CONTROL))&0x8000)){ DeleteMenu(hPopupMenu, IDS_NONE, MF_BYCOMMAND); // seperator DeleteMenu(hPopupMenu, IDM_FWD_RUNAPP, MF_BYCOMMAND); DeleteMenu(hPopupMenu, IDM_FWD_EXITEXPLORER, MF_BYCOMMAND); } /// AlarmsTimer Menu Item y/n Goes HERE!!! UpdateAlarmMenu(hPopupMenu); UpdateTimerMenu(hPopupMenu); // Get the List of Active Timers. if(g_bQMLaunch) { wchar_t key[TNY_BUFF]; int offset = 9; wchar_t name[TNY_BUFF]; int idx; MENUITEMINFO mii = { sizeof(MENUITEMINFO) }; mii.fMask = MIIM_STRING | MIIM_ID; mii.dwTypeData=name; memcpy(key, L"MenuItem-", offset*sizeof(wchar_t)); for(idx=0; idx<12; ++idx) { offset = 9 + wsprintf(key+9, FMT("%i"), idx); if(api.GetInt(L"QuickyMenu\\MenuItems",key,0)){ memcpy(key+offset, L"-Text", 6*sizeof(wchar_t)); api.GetStr(L"QuickyMenu\\MenuItems", key, name, _countof(name), L""); mii.wID = IDM_I_MENU+idx; InsertMenuItem(hPopupMenu, IDM_SHOWCALENDER, FALSE, &mii); } } if(!HaveSetTimePermissions()) { HICON shield = GetStockIcon(SIID_SHIELD, SHGSI_SMALLICON); shield_bmp = GetBitmapFromIcon(shield, -2); DestroyIcon(shield); SetMenuItemBitmaps(hPopupMenu, IDM_SNTP_SYNC, MF_BYCOMMAND, shield_bmp, NULL); } } /// http://support.microsoft.com/kb/135788 SetForegroundWindow(hWnd); item = TrackPopupMenu(hPopupMenu, (TPM_LEFTBUTTON|TPM_NONOTIFY|TPM_RETURNCMD), xPos, yPos, 0, hWnd, NULL); if(item) { if(item >= IDM_I_BEGIN_) { if(item >= IDM_I_TIMER && item < (IDM_I_TIMER+1000)){ TimerMenuItemClick(hMenu, item); }else if(item >= IDM_I_ALARM && item < (IDM_I_ALARM+1000)){ AlarmEnable(item - IDM_I_ALARM, -1); }else if(item >= IDM_I_MENU && item < (IDM_I_MENU+1000)){ wchar_t key[MAX_PATH]; int offset = 9; wchar_t szQM_Target[MAX_PATH]; wchar_t szQM_Switch[MAX_PATH]; wcscpy(key, L"MenuItem-"); offset += wsprintf(key+offset, FMT("%i"), (item-IDM_I_MENU)); wcscpy(key+offset, L"-Target"); api.GetStr(L"QuickyMenu\\MenuItems", key, szQM_Target, _countof(szQM_Target), L""); wcscpy(key+offset, L"-Switches"); api.GetStr(L"QuickyMenu\\MenuItems", key, szQM_Switch, _countof(szQM_Switch), L""); api.Exec(szQM_Target, szQM_Switch, hWnd); } } else OnTClockCommand(hWnd, item); } PostMessage(hWnd, WM_NULL, 0, 0); DestroyMenu(hMenu); // Starting Over is Simpler & Recommended if(shield_bmp) DeleteBitmap(shield_bmp); }