Exemple #1
0
//=============================================================================================
//----------------------------------------------+++--> 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);
			}
Exemple #3
0
/*-----------------------------------------------------------------
 ----------------  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);
}