summaryrefslogtreecommitdiff
path: root/plugins/BossKeyPlus/src/BossKeyIdle.cpp
diff options
context:
space:
mode:
authorVadim Dashevskiy <watcherhd@gmail.com>2012-07-09 07:11:17 +0000
committerVadim Dashevskiy <watcherhd@gmail.com>2012-07-09 07:11:17 +0000
commitd47048e922200349bcfa5b81fc4b17b771d221e6 (patch)
tree0fc7905541b3e7280da2b889bae2ec3685401b56 /plugins/BossKeyPlus/src/BossKeyIdle.cpp
parent78ad0e34b23a01e4fd9d2906760bd71e8ae7c4cc (diff)
BossKeyPlus: compilation fix and warnings deprecation
git-svn-id: http://svn.miranda-ng.org/main/trunk@869 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/BossKeyPlus/src/BossKeyIdle.cpp')
-rw-r--r--plugins/BossKeyPlus/src/BossKeyIdle.cpp91
1 files changed, 91 insertions, 0 deletions
diff --git a/plugins/BossKeyPlus/src/BossKeyIdle.cpp b/plugins/BossKeyPlus/src/BossKeyIdle.cpp
new file mode 100644
index 0000000000..eba26fd29e
--- /dev/null
+++ b/plugins/BossKeyPlus/src/BossKeyIdle.cpp
@@ -0,0 +1,91 @@
+/*
+
+Miranda IM: the free IM client for Microsoft* Windows*
+
+Copyright 2000-2005 Miranda ICQ/IM project,
+all portions of this codebase are copyrighted to the people
+listed in contributors.txt.
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+#include "BossKey.h"
+
+POINT mousepos;
+UINT_PTR hTimer;
+UINT mouseidle, minutes;
+
+static BOOL (WINAPI * MyGetLastInputInfo)(PLASTINPUTINFO);
+
+VOID CALLBACK IdleTimer(HWND hwnd, UINT umsg, UINT idEvent, DWORD dwTime);
+
+static bool IsScreenSaverRunning()
+{
+ bool rc = FALSE;
+ SystemParametersInfo(SPI_GETSCREENSAVERRUNNING, 0, &rc, FALSE);
+ return rc;
+}
+
+static bool IsUserIdle()
+{
+ DWORD dwTick;
+ if ( g_wMaskAdv & OPT_HIDEIFMIRIDLE ) {
+ CallService(MS_SYSTEM_GETIDLE, 0, (DWORD)&dwTick);
+ return GetTickCount() - dwTick > (minutes * 60 * 1000);
+ }
+
+ if ( MyGetLastInputInfo != NULL ) {
+ LASTINPUTINFO ii;
+ ZeroMemory(&ii,sizeof(ii));
+ ii.cbSize=sizeof(ii);
+ if ( MyGetLastInputInfo(&ii))
+ return GetTickCount() - ii.dwTime > (minutes * 60 * 1000);
+ }
+ else {
+ POINT pt;
+ GetCursorPos(&pt);
+ if ( pt.x != mousepos.x || pt.y != mousepos.y ) {
+ mousepos=pt;
+ mouseidle=0;
+ }
+ else mouseidle += 2;
+
+ if ( mouseidle )
+ return mouseidle >= (minutes * 60);
+ }
+ return FALSE;
+}
+
+
+VOID CALLBACK IdleTimer(HWND hwnd, UINT umsg, UINT_PTR idEvent, DWORD dwTime)
+{
+ if ( hTimer == idEvent && !g_bWindowHidden &&
+ ((g_wMaskAdv & (OPT_HIDEIFWINIDLE | OPT_HIDEIFMIRIDLE) && IsUserIdle()) ||
+ (g_wMaskAdv & OPT_HIDEIFSCRSVR && IsScreenSaverRunning())))
+
+ BossKeyHideMiranda(0, 0);
+}
+
+void InitIdleTimer()
+{
+ minutes = DBGetContactSettingByte(NULL,MOD_NAME,"time",10);
+ MyGetLastInputInfo=(BOOL (WINAPI *)(LASTINPUTINFO*))GetProcAddress(GetModuleHandleA("user32"), "GetLastInputInfo");
+ hTimer=SetTimer(NULL, 0, 2000, IdleTimer);
+}
+
+void UninitIdleTimer()
+{
+ KillTimer(NULL, hTimer);
+}