diff options
author | Vadim Dashevskiy <watcherhd@gmail.com> | 2012-07-23 11:56:59 +0000 |
---|---|---|
committer | Vadim Dashevskiy <watcherhd@gmail.com> | 2012-07-23 11:56:59 +0000 |
commit | 177c84716db384c8be095219c58d0a68f87101fe (patch) | |
tree | 84449f27f215b253da99729ddb0aaf6df40bef0c /plugins/Nudge/src/shake.cpp | |
parent | cbb10e8c9089dfc99946ddc784afdb126e2128a8 (diff) |
NotesAndReminders, Nudge, OpenFolder, PackUpdater: changed folder structure
git-svn-id: http://svn.miranda-ng.org/main/trunk@1116 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/Nudge/src/shake.cpp')
-rw-r--r-- | plugins/Nudge/src/shake.cpp | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/plugins/Nudge/src/shake.cpp b/plugins/Nudge/src/shake.cpp new file mode 100644 index 0000000000..f396c4f535 --- /dev/null +++ b/plugins/Nudge/src/shake.cpp @@ -0,0 +1,189 @@ +#include "headers.h"
+#include "shake.h"
+
+extern CShake shake;
+
+void CShake::Load(void)
+{
+
+ Shaking = false;
+ ShakingChat = false;
+ nScaleClist = DBGetContactSettingDword(NULL, "Nudge", "ScaleClist", 5);
+ nScaleChat = DBGetContactSettingDword(NULL, "Nudge", "ScaleChat", 2);
+ nMoveClist = DBGetContactSettingDword(NULL, "Nudge", "MoveClist", 15);
+ nMoveChat = DBGetContactSettingDword(NULL, "Nudge", "MoveChat", 15);
+}
+void CShake::Save(void)
+{
+ DBWriteContactSettingDword(NULL, "Nudge", "ScaleClist", this->nScaleClist);
+ DBWriteContactSettingDword(NULL, "Nudge", "ScaleChat", this->nScaleChat);
+ DBWriteContactSettingDword(NULL, "Nudge", "MoveClist", this->nMoveClist);
+ DBWriteContactSettingDword(NULL, "Nudge", "MoveChat", this->nMoveChat);
+}
+
+DWORD WINAPI ShakeChatWindow(LPVOID Param)
+{
+ HWND hWnd = (HWND) Param;
+ shake.ShakeChat(hWnd);
+ return 1;
+}
+
+DWORD WINAPI ShakeClistWindow(LPVOID Param)
+{
+ HWND hWnd = (HWND) Param;
+ shake.ShakeClist(hWnd);
+ return 0;
+}
+
+INT_PTR ShakeClist( WPARAM wParam, LPARAM lParam )
+{
+ DWORD tid;
+ HWND hWnd = (HWND) CallService( MS_CLUI_GETHWND, 0, 0 );
+
+ CreateThread(NULL,0,ShakeClistWindow,(LPVOID) hWnd,0,&tid);
+ return 0;
+}
+
+INT_PTR ShakeChat( WPARAM wParam, LPARAM lParam )
+{
+ if (((HANDLE) wParam) == NULL) return -1;
+
+ DWORD tid;
+ //char srmmName[100];
+ MessageWindowData mwd;
+ MessageWindowInputData mwid;
+
+ mwd.cbSize = sizeof(MessageWindowData);
+ mwd.hContact = Nudge_GethContact((HANDLE) wParam);
+ mwd.uFlags = MSG_WINDOW_UFLAG_MSG_BOTH;
+
+ mwid.cbSize = sizeof(MessageWindowInputData);
+ mwid.hContact = mwd.hContact;
+ mwid.uFlags = MSG_WINDOW_UFLAG_MSG_BOTH;
+
+
+ CallService( MS_MSG_GETWINDOWDATA, (WPARAM)&mwid, (LPARAM)&mwd );
+ //CallService(MS_MSG_GETWINDOWCLASS,(WPARAM)srmmName,(LPARAM)100 );
+
+ HWND parent;
+ HWND hWnd = mwd.hwndWindow;
+ while((parent = GetParent(hWnd)) != 0) hWnd = parent; // ensure we have the top level window (need parent window for scriver & tabsrmm)
+
+ CreateThread(NULL,0,ShakeChatWindow,(LPVOID) hWnd,0,&tid);
+ return 0;
+}
+
+/*
+
+int TriggerShakeClist( WPARAM wParam, LPARAM lParam )
+{
+ DWORD tid;
+ HWND hWnd;
+ int flags;
+ flags = (int)wParam;
+
+ if (!flags&ACT_PERFORM)
+ return 0;
+
+ hWnd = (HWND) CallService( MS_CLUI_GETHWND, 0, 0 );
+
+ CreateThread(NULL,0,ShakeClistWindow,(LPVOID) hWnd,0,&tid);
+ return 0;
+}
+
+int TriggerShakeChat( WPARAM wParam, LPARAM lParam )
+{
+ DWORD tid;
+ HWND hWnd;
+ char srmmName[100];
+ MessageWindowData mwd;
+ MessageWindowInputData mwid;
+ int flags;
+ flags = (int)wParam;
+
+ if (!flags&ACT_PERFORM)
+ return 0;
+
+ SPECIFICACTIONINFO *sai;
+ HANDLE hContact;
+
+
+ sai = (SPECIFICACTIONINFO *) lParam;
+
+ if ( (sai->td != NULL) && (sai->td->dFlags&DF_CONTACT))
+ hContact = sai->td->hContact;
+ else
+ return 0;
+
+ mwd.cbSize = sizeof(MessageWindowData);
+ mwd.hContact = Nudge_GethContact((HANDLE) hContact);
+ mwd.uFlags = MSG_WINDOW_UFLAG_MSG_BOTH;
+
+ mwid.cbSize = sizeof(MessageWindowInputData);
+ mwid.hContact = Nudge_GethContact((HANDLE) hContact);
+ mwid.uFlags = MSG_WINDOW_UFLAG_MSG_BOTH;
+
+ CallService( MS_MSG_GETWINDOWDATA, (WPARAM)&mwid, (LPARAM)&mwd );
+ CallService(MS_MSG_GETWINDOWCLASS,(WPARAM)srmmName,(LPARAM)100 );
+
+ if ( !strnicmp( srmmName,"tabSRMM ", 7 ))
+ hWnd = GetParent(GetParent(mwd.hwndWindow));
+
+ if ( !strnicmp( srmmName,"SRMM ", 4))
+ hWnd = mwd.hwndWindow;
+
+ if ( !strnicmp( srmmName,"Scriver ", 7 ))
+ hWnd = GetParent(mwd.hwndWindow);
+
+ CreateThread(NULL,0,ShakeChatWindow,(LPVOID) hWnd,0,&tid);
+ return 0;
+}
+*/
+
+int CShake::ShakeChat(HWND hWnd)
+{
+ if (!ShakingChat)
+ {
+ ShakingChat = true;
+ RECT rect;
+ GetWindowRect(hWnd, &rect);
+ for(int i = 0; i < nMoveChat; i++)
+ {
+ SetWindowPos(hWnd, 0, rect.left - nScaleChat, rect.top, 0, 0, SWP_NOSIZE);
+ Sleep(10);
+ SetWindowPos(hWnd, 0, rect.left, rect.top - nScaleChat, 0, 0, SWP_NOSIZE);
+ Sleep(10);
+ SetWindowPos(hWnd, 0, rect.left + nScaleChat, rect.top, 0, 0, SWP_NOSIZE);
+ Sleep(10);
+ SetWindowPos(hWnd, 0, rect.left, rect.top + nScaleChat, 0, 0, SWP_NOSIZE);
+ Sleep(10);
+ }
+ SetWindowPos(hWnd, 0, rect.left, rect.top, 0, 0, SWP_NOSIZE); //SWP_DRAWFRAME
+ ShakingChat = false;
+ }
+ return 0;
+}
+
+int CShake::ShakeClist(HWND hWnd)
+{
+ if (!Shaking)
+ {
+ Shaking = true;
+ RECT rect;
+ GetWindowRect(hWnd, &rect);
+ for(int i = 0; i < nMoveClist; i++)
+ {
+ SetWindowPos(hWnd, 0, rect.left - nScaleClist, rect.top, 0, 0, SWP_NOSIZE);
+ Sleep(10);
+ SetWindowPos(hWnd, 0, rect.left, rect.top - nScaleClist, 0, 0, SWP_NOSIZE);
+ Sleep(10);
+ SetWindowPos(hWnd, 0, rect.left + nScaleClist, rect.top, 0, 0, SWP_NOSIZE);
+ Sleep(10);
+ SetWindowPos(hWnd, 0, rect.left, rect.top + nScaleClist, 0, 0, SWP_NOSIZE);
+ Sleep(10);
+ }
+ SetWindowPos(hWnd, 0, rect.left, rect.top, 0, 0, SWP_NOSIZE);
+ Shaking = false;
+ }
+ return 0;
+}
\ No newline at end of file |