From 177c84716db384c8be095219c58d0a68f87101fe Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Mon, 23 Jul 2012 11:56:59 +0000 Subject: NotesAndReminders, Nudge, OpenFolder, PackUpdater: changed folder structure git-svn-id: http://svn.miranda-ng.org/main/trunk@1116 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/NotesAndReminders/src/main.cpp | 389 +++++++++++++++++++++++++++++++++ 1 file changed, 389 insertions(+) create mode 100644 plugins/NotesAndReminders/src/main.cpp (limited to 'plugins/NotesAndReminders/src/main.cpp') diff --git a/plugins/NotesAndReminders/src/main.cpp b/plugins/NotesAndReminders/src/main.cpp new file mode 100644 index 0000000000..2165a8e49b --- /dev/null +++ b/plugins/NotesAndReminders/src/main.cpp @@ -0,0 +1,389 @@ +#include "globals.h" + +HINSTANCE hinstance = NULL; +HINSTANCE hmiranda = NULL; +int hLangpack; + +HANDLE hkOptInit = NULL; +HANDLE hkTopToolbarInit = NULL; +HANDLE hkModulesLoaded = NULL; +HANDLE hkFontChange = NULL; +HANDLE hkColorChange = NULL; +HMODULE hUserDll = NULL; +HMODULE hRichedDll = NULL; +HMODULE hKernelDll = NULL; + +extern TREEELEMENT *g_Stickies; +extern TREEELEMENT *RemindersList; + +static PLUGININFOEX pluginInfo = +{ + sizeof(PLUGININFOEX), + "Sticky Notes & Reminders", + PLUGIN_MAKE_VERSION(0,0,5,1), + "Sticky Notes & Reminders Implementation for Miranda IM.", + "Joe Kucera, Lubomir Kolev Ivanov, Georg Fischer", + "jokusoftware@users.sourceforge.net; d00mEr@dir.bg", + "(C) 2003,2005 Joe Kucera, Lubomir Ivanov", + "http://d00mer.freeshell.org/miranda/", + UNICODE_AWARE, + MIID_NNR +}; + + +void RegisterFontServiceFonts(); +void RegisterKeyBindings(); +int OpenTriggeredReminder(WPARAM w, LPARAM l); +void BringAllNotesToFront(STICKYNOTE *pActive); +void CloseNotesList(); +void CloseReminderList(); + +int PluginMenuCommandAddNew(WPARAM w,LPARAM l) +{ + STICKYNOTE* PSN; + PSN = NewNote(0,0,0,0,NULL,NULL,TRUE,TRUE,0); + SetFocus(PSN->REHwnd); + return 0; +} + +int PluginMenuCommandDeleteAll(WPARAM w,LPARAM l) +{ + if (g_Stickies && MessageBox(NULL, Translate("Are you sure you want to delete all notes?"), SECTIONNAME, MB_OKCANCEL) == IDOK) + DeleteNotes(); + return 0; +} + +int PluginMenuCommandShowHide(WPARAM w,LPARAM l) +{ + ShowHideNotes(); + return 0; +} + +int PluginMenuCommandViewNotes(WPARAM w,LPARAM l) +{ + ListNotes(); + return 0; +} + +int PluginMenuCommandAllBringFront(WPARAM w,LPARAM l) +{ + BringAllNotesToFront(NULL); + return 0; +} + +int PluginMenuCommandNewReminder(WPARAM w,LPARAM l) +{ + NewReminder(); + return 0; +} + +int PluginMenuCommandViewReminders(WPARAM w,LPARAM l) +{ + ListReminders(); + return 0; +} + +int PluginMenuCommandDeleteReminders(WPARAM w,LPARAM l) +{ + if (RemindersList && MessageBox(NULL, Translate("Are you sure you want to delete all reminders?"), SECTIONNAME, MB_OKCANCEL) == IDOK) + DeleteReminders(); + return 0; +} + +struct +{ + char* szDescr; + char* szName; + int defIconID; +} +static const iconList[] = +{ + {"New Reminder", "AddReminder", IDI_ADDREMINDER}, + {"Delete All Notes", "DeleteIcon", IDI_DELETEICON}, + {"New Note", "NoteIcon", IDI_NOTEICON}, + {"Show/Hide Notes", "ShowHide", IDI_SHOWHIDE}, + {"On Top Caption Icon", "CaptionIcon", IDI_CAPTIONICON}, + {"Delete All Reminders", "DeleteReminder", IDI_DELETEREMINDER}, + {"View Reminders", "ViewReminders", IDI_VIEWREMINDERS}, + {"Not on Top Caption Icon", "CaptionIconNotTop", IDI_CAPTIONICONNOTTOP}, + {"Hide Note Icon", "HideNote", IDI_HIDENOTE}, + {"Remove Note Icon", "RemoveNote", IDI_REMOVENOTE}, + {"Reminder Icon", "Reminder", IDI_REMINDER}, + {"Bring All to Front", "BringFront", IDI_BRINGFRONT}, + {"Play Sound Icon", "PlaySound", IDI_PLAYSOUND}, + {"View Notes", "ViewNotes", IDI_VIEWNOTES}, + {"New Note", "NewNote", IDI_NOTEICON}, + {"New Reminder", "NewReminder", IDI_ADDREMINDER} +}; + +HANDLE hIconLibItem[SIZEOF(iconList)]; + +void InitIcons(void) +{ + int i; + char szSettingName[100]; + SKINICONDESC sid = {0}; + TCHAR szFile[MAX_PATH]; + + GetModuleFileName(hinstance, szFile, SIZEOF(szFile)); + + sid.cbSize = sizeof(SKINICONDESC); + sid.ptszDefaultFile = szFile; + sid.pszName = szSettingName; + sid.pszSection = MODULENAME; + sid.flags = SIDF_PATH_TCHAR; + + for (i = 0; i < SIZEOF(iconList); i++) + { + mir_snprintf(szSettingName, SIZEOF(szSettingName), "%s_%s", MODULENAME, iconList[i].szName); + + sid.pszDescription = iconList[i].szDescr; + sid.iDefaultIndex = -iconList[i].defIconID; + hIconLibItem[i] = Skin_AddIcon(&sid); + } +} + +int OnOptInitialise(WPARAM w, LPARAM L) +{ + OPTIONSDIALOGPAGE odp = {0}; + odp.cbSize = sizeof(odp); + odp.position = 900002000; + odp.hInstance = hinstance; + odp.pszTemplate = MAKEINTRESOURCEA(IDD_STNOTEOPTIONS); + odp.pszTitle = _T(SECTIONNAME); + odp.pszGroup = _T("Plugins"); + odp.pfnDlgProc = DlgProcOptions; + Options_AddPage(w, &odp); + return 0; +} + +int OnTopToolBarInit(WPARAM w,LPARAM L) +{ + TTBButton ttb = {0}; + ttb.cbSize = sizeof(TTBButton); + ttb.dwFlags = TTBBF_VISIBLE | TTBBF_SHOWTOOLTIP; + + ttb.hIconHandleUp = hIconLibItem[14]; + ttb.pszService = MODULENAME"/MenuCommandAddNew"; + ttb.name = ttb.pszTooltipUp = LPGEN("Add New Note"); + TopToolbar_AddButton(&ttb); + + ttb.hIconHandleUp = hIconLibItem[15]; + ttb.pszService = MODULENAME"/MenuCommandNewReminder"; + ttb.name = ttb.pszTooltipUp = LPGEN("Add New Reminder"); + TopToolbar_AddButton(&ttb); + + UnhookEvent(hkTopToolbarInit); + return 0; +} + +static void InitServices() +{ + // register sounds + + SkinAddNewSoundEx("AlertReminder", "Alerts", "Reminder triggered"); + SkinAddNewSoundEx("AlertReminder2", "Alerts", "Reminder triggered (Alternative 1)"); + SkinAddNewSoundEx("AlertReminder3", "Alerts", "Reminder triggered (Alternative 2)"); + + // register menu command services + + CreateServiceFunction(MODULENAME"/MenuCommandAddNew",PluginMenuCommandAddNew); + CreateServiceFunction(MODULENAME"/MenuCommandShowHide",PluginMenuCommandShowHide); + CreateServiceFunction(MODULENAME"/MenuCommandViewNotes",PluginMenuCommandViewNotes); + CreateServiceFunction(MODULENAME"/MenuCommandDeleteAll",PluginMenuCommandDeleteAll); + CreateServiceFunction(MODULENAME"/MenuCommandBringAllFront",PluginMenuCommandAllBringFront); + + // + + CreateServiceFunction(MODULENAME"/MenuCommandNewReminder",PluginMenuCommandNewReminder); + CreateServiceFunction(MODULENAME"/MenuCommandViewReminders",PluginMenuCommandViewReminders); + CreateServiceFunction(MODULENAME"/MenuCommandDeleteReminders",PluginMenuCommandDeleteReminders); + + // register misc + + CreateServiceFunction(MODULENAME"/OpenTriggeredReminder",OpenTriggeredReminder); +} + +int OnModulesLoaded(WPARAM wparam,LPARAM lparam) +{ + CLISTMENUITEM cmi = {0}; + + // register fonts and hotkeys + + RegisterFontServiceFonts(); + RegisterKeyBindings(); + + // register menus + + cmi.cbSize = sizeof(cmi); + cmi.pszContactOwner = NULL; + cmi.pszPopupName = "Notes && Reminders"; + cmi.flags = CMIM_ICON | CMIF_ICONFROMICOLIB; + + cmi.position = 1600000000; + cmi.icolibItem = hIconLibItem[2]; + cmi.pszName = "New &Note"; + cmi.pszService = MODULENAME"/MenuCommandAddNew"; + if (g_AddContListMI) Menu_AddContactMenuItem(&cmi); + Menu_AddMainMenuItem(&cmi); + + cmi.position = 1600000001; + cmi.icolibItem = hIconLibItem[0]; + cmi.pszName = "New &Reminder"; + cmi.pszService = MODULENAME"/MenuCommandNewReminder"; + if (g_AddContListMI) Menu_AddContactMenuItem(&cmi); + Menu_AddMainMenuItem(&cmi); + + // + + cmi.position = 1600100000; + cmi.icolibItem = hIconLibItem[3]; + cmi.pszName = "&Show / Hide Notes"; + cmi.pszService = MODULENAME"/MenuCommandShowHide"; + if (g_AddContListMI) Menu_AddContactMenuItem(&cmi); + Menu_AddMainMenuItem(&cmi); + + cmi.position = 1600100001; + cmi.icolibItem = hIconLibItem[13]; + cmi.pszName = "Vie&w Notes"; + cmi.pszService = MODULENAME"/MenuCommandViewNotes"; + if (g_AddContListMI) Menu_AddContactMenuItem(&cmi); + Menu_AddMainMenuItem(&cmi); + + cmi.position = 1600100002; + cmi.icolibItem = hIconLibItem[1]; + cmi.pszName = "&Delete All Notes"; + cmi.pszService = MODULENAME"/MenuCommandDeleteAll"; + if (g_AddContListMI) Menu_AddContactMenuItem(&cmi); + Menu_AddMainMenuItem(&cmi); + + cmi.position = 1600100003; + cmi.icolibItem = hIconLibItem[11]; + cmi.pszName = "&Bring All to Front"; + cmi.pszService = MODULENAME"/MenuCommandBringAllFront"; + if (g_AddContListMI) Menu_AddContactMenuItem(&cmi); + Menu_AddMainMenuItem(&cmi); + + // + + cmi.position = 1600200000; + cmi.icolibItem = hIconLibItem[6]; + cmi.pszName = "&View Reminders"; + cmi.pszService = MODULENAME"/MenuCommandViewReminders"; + if (g_AddContListMI) Menu_AddContactMenuItem(&cmi); + Menu_AddMainMenuItem(&cmi); + + cmi.position = 1600200001; + cmi.icolibItem = hIconLibItem[5]; + cmi.pszName = "D&elete All Reminders"; + cmi.pszService = MODULENAME"/MenuCommandDeleteReminders"; + if (g_AddContListMI) Menu_AddContactMenuItem(&cmi); + Menu_AddMainMenuItem(&cmi); + + // register misc + + hkOptInit = HookEvent(ME_OPT_INITIALISE, OnOptInitialise); + hkTopToolbarInit = HookEvent("TopToolBar/ModuleLoaded", OnTopToolBarInit); + UnhookEvent(hkModulesLoaded); + + // init vars and load all data + + InitSettings(); + CreateMsgWindow(); + LoadNotes(TRUE); + LoadReminders(); + + return 0; +} + +extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) +{ + return &pluginInfo; +} + +extern "C" __declspec(dllexport) int Unload(void) +{ + CloseNotesList(); + CloseReminderList(); + SaveNotes(); + SaveReminders(); + DestroyMsgWindow(); + WS_CleanUp(); + TermSettings(); + + UnhookEvent(hkFontChange); + UnhookEvent(hkColorChange); + + UnhookEvent(hkOptInit); + + Skin_ReleaseIcon(g_hReminderIcon); + DeleteObject(hBodyFont); + DeleteObject(hCaptionFont); + + if (hRichedDll) + FreeLibrary(hRichedDll); + if (hUserDll) + FreeLibrary(hUserDll); + if (hKernelDll) + FreeLibrary(hKernelDll); + + return 0; +} + +BOOL WINAPI DllMain(HINSTANCE hinst, DWORD fdwReason, LPVOID lpvReserved) +{ + hinstance = hinst; + return TRUE; +} + +extern "C" __declspec(dllexport) int Load(void) +{ + mir_getLP(&pluginInfo); + + INITCOMMONCONTROLSEX ctrls = {0}; + ctrls.dwSize = sizeof(INITCOMMONCONTROLSEX); + ctrls.dwICC = ICC_DATE_CLASSES; + InitCommonControlsEx(&ctrls); + + g_isWin2kPlus = IsWinVer2000Plus(); + + hRichedDll = LoadLibrary("RICHED20.DLL"); + if (!hRichedDll) + { + if (MessageBox(0, Translate("Miranda could not load the Note & Reminders plugin, RICHED20.DLL is missing. If you are using Windows 95 or WINE please make sure you have riched20.dll installed. Press 'Yes' to continue loading Miranda."), SECTIONNAME, MB_YESNO | MB_ICONINFORMATION) != IDYES) + return 1; + return 0; + } + + hUserDll = LoadLibrary("user32.dll"); + if (hUserDll) + { + MySetLayeredWindowAttributes = (BOOL (WINAPI *)(HWND,COLORREF,BYTE,DWORD))GetProcAddress(hUserDll,"SetLayeredWindowAttributes"); + MyMonitorFromWindow = (HANDLE (WINAPI*)(HWND,DWORD))GetProcAddress(hUserDll,"MonitorFromWindow"); + } + else + { + MySetLayeredWindowAttributes = NULL; + MyMonitorFromWindow = NULL; + } + + hKernelDll = LoadLibrary("kernel32.dll"); + if (hKernelDll) + { + MyTzSpecificLocalTimeToSystemTime = (BOOL (WINAPI*)(LPTIME_ZONE_INFORMATION,LPSYSTEMTIME,LPSYSTEMTIME))GetProcAddress(hKernelDll,"TzSpecificLocalTimeToSystemTime"); + MySystemTimeToTzSpecificLocalTime = (BOOL (WINAPI*)(LPTIME_ZONE_INFORMATION,LPSYSTEMTIME,LPSYSTEMTIME))GetProcAddress(hKernelDll,"SystemTimeToTzSpecificLocalTime"); + } + else + { + MyTzSpecificLocalTimeToSystemTime = NULL; + MySystemTimeToTzSpecificLocalTime = NULL; + } + + InitServices(); + WS_Init(); + + hkModulesLoaded = HookEvent(ME_SYSTEM_MODULESLOADED,OnModulesLoaded); + InitIcons(); + + return 0; +} \ No newline at end of file -- cgit v1.2.3