summaryrefslogtreecommitdiff
path: root/plugins/NotesAndReminders/src/hotkeys.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/NotesAndReminders/src/hotkeys.cpp')
-rw-r--r--plugins/NotesAndReminders/src/hotkeys.cpp138
1 files changed, 138 insertions, 0 deletions
diff --git a/plugins/NotesAndReminders/src/hotkeys.cpp b/plugins/NotesAndReminders/src/hotkeys.cpp
new file mode 100644
index 0000000000..d324d5fdd7
--- /dev/null
+++ b/plugins/NotesAndReminders/src/hotkeys.cpp
@@ -0,0 +1,138 @@
+#include "globals.h"
+
+#define MSG_WND_CLASS _T("MIM_SNMsgWindow")
+
+
+HWND HKHwnd;
+
+
+enum KB_ACTIONS {KB_NEW_NOTE = 1, KB_TOGGLE_NOTES, KB_NEW_REMINDER};
+
+
+void RegisterKeyBindings()
+{
+ HOTKEYDESC desc;
+
+ ZeroMemory(&desc, sizeof(desc));
+ desc.cbSize = sizeof(desc);
+ desc.ptszSection = _T(SECTIONNAME);
+ desc.dwFlags = HKD_TCHAR;
+
+ desc.pszName = MODULENAME"/NewNote";
+ desc.ptszDescription = LPGENT("New Note");
+ desc.lParam = KB_NEW_NOTE;
+ desc.DefHotKey = HOTKEYCODE(HOTKEYF_CONTROL|HOTKEYF_SHIFT, VK_INSERT);
+ desc.pszService = MODULENAME"/MenuCommandAddNew";
+ Hotkey_Register(&desc);
+
+ desc.pszName = MODULENAME"/ToggleNotesVis";
+ desc.ptszDescription = LPGENT("Toggle Notes Visibility");
+ desc.lParam = KB_TOGGLE_NOTES;
+ desc.DefHotKey = HOTKEYCODE(HOTKEYF_CONTROL|HOTKEYF_SHIFT, VK_ADD);
+ desc.pszService = MODULENAME"/MenuCommandShowHide";
+ Hotkey_Register(&desc);
+
+ desc.pszName = MODULENAME"/BringNotesFront";
+ desc.ptszDescription = LPGENT("Bring All Notes to Front");
+ desc.lParam = KB_TOGGLE_NOTES;
+ desc.DefHotKey = HOTKEYCODE(HOTKEYF_CONTROL|HOTKEYF_SHIFT, VK_HOME);
+ desc.pszService = MODULENAME"/MenuCommandBringAllFront";
+ Hotkey_Register(&desc);
+
+ desc.pszName = MODULENAME"/NewReminder";
+ desc.ptszDescription = LPGENT("New Reminder");
+ desc.lParam = KB_NEW_REMINDER;
+ desc.DefHotKey = HOTKEYCODE(HOTKEYF_CONTROL|HOTKEYF_SHIFT, VK_SUBTRACT);
+ desc.pszService = MODULENAME"/MenuCommandNewReminder";
+ Hotkey_Register(&desc);
+}
+
+
+/*int HandleNRShortcuts(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ STICKYNOTE* PSN;
+
+ BOOL isShift = GetKeyState(VK_SHIFT) & 0x8000;
+ BOOL isAlt = GetKeyState(VK_MENU) & 0x8000;
+ BOOL isCtrl = (GetKeyState(VK_CONTROL) & 0x8000) && !isAlt;
+
+ int action;
+ MSG amsg;
+ amsg.hwnd = hwnd;
+ amsg.message = msg;
+ amsg.wParam = wParam;
+ amsg.lParam = lParam;
+
+ switch ( (action = CallService(MS_HOTKEY_CHECK, (WPARAM)&amsg, (LPARAM)SECTIONNAME)) )
+ {
+ case KB_NEW_NOTE:
+ PSN = NewNote(0,0,0,0,NULL,NULL,TRUE,TRUE,0);
+ SetFocus(PSN->REHwnd);
+ return FALSE;
+ case KB_TOGGLE_NOTES:
+ ShowHideNotes();
+ return FALSE;
+ case KB_NEW_REMINDER:
+ NewReminder();
+ return FALSE;
+ }
+
+ return -1;
+}*/
+
+
+LRESULT CALLBACK NotifyHotKeyWndProc(HWND AHwnd,UINT Message,WPARAM wParam,LPARAM lParam)
+{
+ BOOL b;
+
+ switch (Message)
+ {
+ case WM_TIMER:
+ {
+ KillTimer(HKHwnd,1026);
+ b = CheckRemindersAndStart();
+ SetTimer(HKHwnd,1026,b ? REMINDER_UPDATE_INTERVAL_SHORT : REMINDER_UPDATE_INTERVAL,0);
+
+ return FALSE;
+ }
+ }
+
+ return DefWindowProc(AHwnd,Message,wParam,lParam);
+}
+
+void CreateMsgWindow(void)
+{
+ HWND hParent = NULL;
+ WNDCLASSEX TWC = {0};
+
+ if (!GetClassInfoEx(hmiranda,MSG_WND_CLASS,&TWC))
+ {
+ TWC.style = 0;
+ TWC.cbClsExtra = 0;
+ TWC.cbWndExtra = 0;
+ TWC.hInstance = hmiranda;
+ TWC.hIcon = 0;
+ TWC.hCursor = 0;
+ TWC.hbrBackground = 0;
+ TWC.lpszMenuName = NULL;
+ TWC.lpszClassName = MSG_WND_CLASS;
+ TWC.cbSize = sizeof(TWC);
+ TWC.lpfnWndProc = NotifyHotKeyWndProc;
+ RegisterClassEx(&TWC);
+ }
+
+ if ( IsWinVer2000Plus() )
+ {
+ // win2k+ has special message-only windows support
+ hParent = HWND_MESSAGE;
+ }
+
+ HKHwnd = CreateWindowEx(WS_EX_TOOLWINDOW,MSG_WND_CLASS,_T("StickyNotes"),0,0,0,0,0,hParent,NULL,hmiranda,NULL);
+ SetTimer(HKHwnd,1026,REMINDER_UPDATE_INTERVAL,0);
+}
+
+void DestroyMsgWindow(void)
+{
+ KillTimer(HKHwnd,1026);
+ DestroyWindow(HKHwnd);
+}