summaryrefslogtreecommitdiff
path: root/plugins/StartupSilence/src
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/StartupSilence/src')
-rw-r--r--plugins/StartupSilence/src/StartupSilence.h67
-rw-r--r--plugins/StartupSilence/src/main.cpp394
-rw-r--r--plugins/StartupSilence/src/resource.h32
-rw-r--r--plugins/StartupSilence/src/stdafx.cpp18
-rw-r--r--plugins/StartupSilence/src/version.h56
5 files changed, 567 insertions, 0 deletions
diff --git a/plugins/StartupSilence/src/StartupSilence.h b/plugins/StartupSilence/src/StartupSilence.h
new file mode 100644
index 0000000000..055ffa0448
--- /dev/null
+++ b/plugins/StartupSilence/src/StartupSilence.h
@@ -0,0 +1,67 @@
+#include <windows.h>
+#include <newpluginapi.h>
+#include <m_core.h>
+#include <m_clist.h>
+#include <m_skin.h>
+#include <m_popup.h>
+#include <m_langpack.h>
+#include <m_database.h>
+#include <m_icolib.h>
+#include <m_options.h>
+#include <m_system.h>
+#include <m_system_cpp.h>
+#include <m_toptoolbar.h>
+#include "version.h"
+#include "resource.h"
+#include "win2k.h"
+#include "CommCtrl.h"
+#include "WinSock.h"
+
+#if MIRANDA_VER >= 0x0A00
+static INT_PTR AdvSt();
+static INT_PTR initttb();
+static INT_PTR InitMenu();
+void InitSettings();
+void LoadSettings();
+void DefSettings();
+void IsMenu();
+void UpdateMenu();
+void UpdateTTB();
+
+INT_PTR SturtupSilenceEnabled(WPARAM wParam, LPARAM lParam);
+
+#define MODULE_NAME "StartupSilence"
+
+#define SS_SERVICE_NAME "StartupSilence/ToggleEnabled"
+
+#define POPUPONOFF "Popup/ToggleEnabled"
+#define POPUPONOFFPP "Popup/EnableDisableMenuCommand"
+
+#define MENU_NAME LPGEN("Silence at startup")
+#define DISABLE_SILENCE LPGEN("Toggle Silence OFF")
+#define ENABLE_SILENCE LPGEN("Toggle Silence ON")
+#define DISABLE_SILENCETTB LPGEN("Toggle Silence OFF TTB")
+#define ENABLE_SILENCETTB LPGEN("Toggle Silence ON TTB")
+#define ALL_ENABLED TranslateT("Sounds and Popups are enabled")
+#define ALL_DISABLED TranslateT("Sounds and Popups are disabled temporary")
+#define S_MODE_CHANGEDON TranslateT("Silent Startup mode changed to ON")
+#define S_MODE_CHANGEDOFF TranslateT("Silent Startup mode changed to OFF")
+#define SS_IS_ON Translate("Silence At Startup is ON")
+#define SS_IS_OFF Translate("Silence At Startup is OFF")
+#define TTBNAME Translate("Toggle Silence At Startup")
+#define NOTICE TranslateT(MENU_NAME)
+#define NEEDTTBMOD TranslateT("For use this option need TopToolBar module installed.")
+#define NEEDPOPUP TranslateT("For use this option need \"YAPP\" or \"PopUp+\" module installed.")
+
+static IconItem iconList[] = {
+ {MENU_NAME, MENU_NAME, IDI_SSICON},
+ {DISABLE_SILENCE, DISABLE_SILENCE, IDI_SSDISABLE},
+ {ENABLE_SILENCE, ENABLE_SILENCE, IDI_SSENABLE}
+};
+
+static IconItem iconttbList[] = {
+ {DISABLE_SILENCETTB, DISABLE_SILENCETTB, IDI_SSDISABLETTB},
+ {ENABLE_SILENCETTB, ENABLE_SILENCETTB, IDI_SSENABLETTB}
+};
+#endif
+
diff --git a/plugins/StartupSilence/src/main.cpp b/plugins/StartupSilence/src/main.cpp
new file mode 100644
index 0000000000..176fa9a1bf
--- /dev/null
+++ b/plugins/StartupSilence/src/main.cpp
@@ -0,0 +1,394 @@
+/*
+Copyright 2012-2013 Vladimir Lyubimov
+Copyright 2012-2013 Miranda-NG team,
+
+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.
+*/
+
+//HELPME: need new icons for TTB bottons
+
+#include "StartupSilence.h"
+
+HINSTANCE hInst;
+int hLangpack;
+HANDLE hSSMenuToggleOnOff;
+HANDLE GetIconHandle(char *szIcon);
+HANDLE hOptionsInitialize;
+HANDLE hTTBarloaded = NULL;
+HANDLE Buttons = NULL;
+static HANDLE hSturtupSilenceEnabled;
+
+INT_PTR CALLBACK DlgProcOptions(HWND, UINT, WPARAM, LPARAM);
+int InitializeOptions(WPARAM wParam,LPARAM lParam);
+static int CreateTTButtons(WPARAM wParam, LPARAM lParam);
+void RemoveTTButtons();
+BYTE Enabled;
+DWORD delay;
+BYTE PopUp;
+DWORD PopUpTime;
+BYTE MenuItem;
+BYTE TTBButtons;
+char hostname[MAX_PATH] = "";
+char EnabledComp[MAX_PATH] = "";
+char DelayComp[MAX_PATH] = "";
+char PopUpComp[MAX_PATH] = "";
+char PopUpTimeComp[MAX_PATH] = "";
+char MenuitemComp[MAX_PATH] = "";
+char TTBButtonsComp[MAX_PATH] = "";
+
+static LIST<void> ttbButtons(1);
+
+PLUGININFOEX pluginInfo={
+ sizeof(PLUGININFOEX),
+ __PLUGIN_NAME,
+ PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM),
+ __DESC,
+ __AUTHOR,
+ __AUTHOREMAIL,
+ __COPYRIGHT,
+ __AUTHORWEB,
+ UNICODE_AWARE,
+ 0x7b856b6a, 0xd48f, 0x4f54, { 0xb8, 0xd6, 0xc8, 0xd8, 0x6d, 0x2, 0xff, 0xc2 } // {7B856B6A-D48F-4f54-B8D6-C8D86D02FFC2}
+};
+
+BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
+{
+ hInst = hinstDLL;
+ return TRUE;
+}
+
+extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion)
+{
+ return &pluginInfo;
+}
+
+INT_PTR StartupSilence()
+{
+ InitSettings();
+ mir_forkthread((pThreadFunc)AdvSt, NULL);
+ hSturtupSilenceEnabled = CreateServiceFunction(SS_SERVICE_NAME, SturtupSilenceEnabled);
+ IsMenu();
+ mir_forkthread((pThreadFunc)initttb, NULL);
+ HookEvent(ME_OPT_INITIALISE, InitializeOptions);
+ return 0;
+}
+
+extern "C" __declspec(dllexport) int Load(void)
+{
+ mir_getLP(&pluginInfo);
+ StartupSilence();
+ return 0;
+}
+
+extern "C" __declspec(dllexport) int Unload(void)
+{
+ UnhookEvent(ME_OPT_INITIALISE);
+ if (hTTBarloaded != NULL){
+ UnhookEvent(ME_TTB_MODULELOADED);
+ }
+ DestroyServiceFunction(hSturtupSilenceEnabled);
+ return 0;
+}
+
+void InitSettings()
+{
+ if(gethostname(hostname, SIZEOF(hostname)) == 0){
+ mir_snprintf(EnabledComp, SIZEOF(EnabledComp), "%s_Enabled", hostname);
+ mir_snprintf(DelayComp, SIZEOF(DelayComp), "%s_Delay", hostname);
+ mir_snprintf(PopUpComp, SIZEOF(PopUpComp), "%s_PopUp", hostname);
+ mir_snprintf(PopUpTimeComp, SIZEOF(PopUpTimeComp), "%s_PopUpTime", hostname);
+ mir_snprintf(MenuitemComp, SIZEOF(MenuitemComp), "%s_MenuItem", hostname);
+ mir_snprintf(TTBButtonsComp, SIZEOF(TTBButtonsComp), "%s_TTBButtons", hostname);
+ }
+ //first run on the host, initial setting
+ if (!(delay = db_get_dw(NULL, MODULE_NAME, DelayComp, 0)))
+ DefSettings();
+ //or load host settings
+ else LoadSettings();
+}
+void DefSettings()
+{
+ db_set_dw(NULL, MODULE_NAME, DelayComp, 20);
+ db_set_b(NULL, MODULE_NAME, EnabledComp, 1);
+ db_set_b(NULL, MODULE_NAME, PopUpComp, 1);
+ db_set_dw(NULL, MODULE_NAME, PopUpTimeComp, 5);
+ db_set_b(NULL, MODULE_NAME, MenuitemComp, 1);
+ db_set_b(NULL, MODULE_NAME, TTBButtonsComp, 0);
+ LoadSettings();
+}
+void LoadSettings()
+{
+ Enabled = db_get_b(NULL, MODULE_NAME, EnabledComp, 0);
+ delay = db_get_dw(NULL, MODULE_NAME, DelayComp, 0);
+ PopUp = db_get_b(NULL, MODULE_NAME, PopUpComp, 0);
+ PopUpTime = db_get_dw(NULL, MODULE_NAME, PopUpTimeComp, 0);
+ MenuItem = db_get_b(NULL, MODULE_NAME, MenuitemComp, 0);
+ TTBButtons = db_get_b(NULL, MODULE_NAME, TTBButtonsComp, 0);
+ if (PopUpTime < 1)
+ PopUpTime = (DWORD)1;
+ if (PopUpTime > 30)
+ PopUpTime = (DWORD)30;
+ if (delay < 10)
+ delay = (DWORD)10;
+ if (delay > 300)
+ delay = (DWORD)300;
+ db_set_dw(NULL, MODULE_NAME, DelayComp, delay);
+ db_set_dw(NULL, MODULE_NAME, PopUpTimeComp, PopUpTime);
+}
+
+void IsMenu()
+{
+ if (MenuItem == 1) {
+ Icon_Register(hInst, MENU_NAME, iconList, SIZEOF(iconList), MENU_NAME);
+ InitMenu();
+ }
+}
+
+static INT_PTR initttb()
+{
+ Sleep(7000);
+ hTTBarloaded = HookEvent(ME_TTB_MODULELOADED, CreateTTButtons);
+ if (TTBButtons == 1 && hTTBarloaded != NULL){
+ Icon_Register(hInst, "Toolbar/"MENU_NAME, iconttbList, SIZEOF(iconttbList), MENU_NAME);
+ RemoveTTButtons();
+ CreateTTButtons(0,0);
+ }
+ return 0;
+}
+
+static INT_PTR AdvSt()
+{
+ if ((Enabled == 1)){
+ POPUPDATAT ppd = {0};
+ TCHAR * lptzText =L"";
+ db_set_b(NULL, "Skin", "UseSound", 0);
+
+ if (PopUp == 1) {
+ lptzText = ALL_DISABLED;
+ ppd.lchIcon = (HICON)CallService(MS_SKIN2_GETICONBYHANDLE, 0, (LPARAM)GetIconHandle(MENU_NAME));
+ ppd.lchContact = NULL;
+ ppd.iSeconds = PopUpTime;
+ wcsncpy_s(ppd.lptzText, lptzText, size_t(lptzText));
+ lptzText = TranslateT(MENU_NAME);
+ wcsncpy_s(ppd.lptzContactName, lptzText, size_t(lptzText));
+ PUAddPopupT(&ppd);
+ }
+ if (ServiceExists(POPUPONOFF))
+ db_set_b(NULL, "YAPP", "Enabled", 0);
+ if (ServiceExists(POPUPONOFFPP))
+ db_set_b(NULL, "PopUp", "ModuleIsEnabled", 0);
+
+ Sleep(delay * 1000);
+
+ if (ServiceExists(POPUPONOFF))
+ db_set_b(NULL, "YAPP", "Enabled", 1);
+ if (ServiceExists(POPUPONOFFPP))
+ db_set_b(NULL, "PopUp", "ModuleIsEnabled", 1);
+
+ db_set_b(NULL, "Skin", "UseSound", 1);
+ if (PopUp == 1) {
+ lptzText = ALL_ENABLED;
+ wcsncpy_s(ppd.lptzText, lptzText, size_t(lptzText));
+ PUAddPopupT(&ppd);
+ }
+ }
+ return 0;
+}
+
+static INT_PTR SturtupSilenceEnabled(WPARAM wParam, LPARAM lParam)
+{
+ db_set_b(NULL, MODULE_NAME, EnabledComp, !Enabled);
+ LoadSettings();
+ if (MenuItem == 1)
+ UpdateMenu();
+ if (PopUp == 1) {
+ TCHAR * lptzText = Enabled == 1 ? S_MODE_CHANGEDON : S_MODE_CHANGEDOFF;
+ POPUPDATAT ppd = {0};
+ ppd.lchIcon = (HICON)CallService(MS_SKIN2_GETICONBYHANDLE, 0, (LPARAM)(Enabled == 1 ? GetIconHandle(ENABLE_SILENCE) : GetIconHandle(DISABLE_SILENCE)));
+ ppd.lchContact = NULL;
+ ppd.iSeconds = PopUpTime;
+ wcsncpy_s(ppd.lptzText, lptzText, size_t(lptzText));
+ lptzText = TranslateT(MENU_NAME);
+ wcsncpy_s(ppd.lptzContactName, lptzText, size_t(lptzText));
+ PUAddPopupT(&ppd);
+ }
+ return 0;
+}
+
+static INT_PTR InitMenu()
+{
+ CLISTMENUITEM mi = {sizeof(mi)};
+ mi.flags = CMIM_ALL;
+ mi.position = 100000000;
+ mi.icolibItem = GetIconHandle(MENU_NAME);
+ mi.pszPopupName = MENU_NAME;
+ mi.pszService = SS_SERVICE_NAME;
+ hSSMenuToggleOnOff = Menu_AddMainMenuItem(&mi);
+ UpdateMenu();
+ return 0;
+}
+
+void UpdateMenu()
+{
+ CLISTMENUITEM mi = {sizeof(mi)};
+ mi.pszName = (Enabled == 1 ? DISABLE_SILENCE : ENABLE_SILENCE);
+ mi.flags = CMIM_NAME | CMIM_ALL;
+ mi.icolibItem = (Enabled == 1 ? GetIconHandle(DISABLE_SILENCE) : GetIconHandle(ENABLE_SILENCE));
+ CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hSSMenuToggleOnOff, (LPARAM)&mi);
+ UpdateTTB();
+}
+
+void UpdateTTB()
+{
+ if (hTTBarloaded != NULL && TTBButtons == 1)
+ CallService(MS_TTB_SETBUTTONSTATE, (WPARAM)Buttons, (Enabled == 1 ? TTBST_RELEASED : TTBST_PUSHED));
+
+}
+
+static int CreateTTButtons(WPARAM wParam, LPARAM lParam)
+{
+ TTBButton ttb = {sizeof(ttb)};
+ ttb.dwFlags = (Enabled == 1 ? 0 : TTBBF_PUSHED) | TTBBF_VISIBLE | TTBBF_ASPUSHBUTTON;
+ ttb.pszService = SS_SERVICE_NAME;
+ ttb.hIconHandleDn = GetIconHandle(DISABLE_SILENCETTB);
+ ttb.hIconHandleUp = GetIconHandle(ENABLE_SILENCETTB);
+ ttb.name = TTBNAME;
+ ttb.pszTooltipUp = SS_IS_ON;
+ ttb.pszTooltipDn = SS_IS_OFF;
+ Buttons = TopToolbar_AddButton(&ttb);
+ if (Buttons)
+ ttbButtons.insert(Buttons);
+ return 0;
+}
+
+void RemoveTTButtons()
+{
+ for (int i=ttbButtons.getCount()-1; i >= 0; i--)
+ CallService(MS_TTB_REMOVEBUTTON, (WPARAM)ttbButtons[i], 0);
+ ttbButtons.destroy();
+}
+
+HANDLE GetIconHandle(char *szIcon)
+{
+ char szSettingName[64];
+ mir_snprintf(szSettingName, sizeof(szSettingName), "%s_%s", MENU_NAME, szIcon);
+ return Skin_GetIconHandle(szSettingName);
+}
+
+int InitializeOptions(WPARAM wParam,LPARAM lParam)
+{
+ OPTIONSDIALOGPAGE odp = {sizeof(odp)};
+ odp.position = 0;
+ odp.hInstance = hInst;
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_SSOPT);
+ odp.pszGroup = LPGEN("Events");//FIXME: move to...Group?
+ odp.pszTitle = MENU_NAME;
+ odp.groupPosition = 910000000;
+ odp.flags = ODPF_BOLDGROUPS;
+ odp.pfnDlgProc = DlgProcOptions;
+ Options_AddPage(wParam, &odp);
+ return 0;
+}
+
+static INT_PTR CALLBACK DlgProcOptions(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ switch (msg) {
+ case WM_INITDIALOG: {
+ TranslateDialogDefault(hwndDlg);
+ static BOOL initDlg=FALSE;
+ LoadSettings();
+ SetDlgItemText(hwndDlg, IDC_HST, mir_a2t(hostname));
+ CheckDlgButton(hwndDlg, IDC_DELAY, (Enabled == 1) ? BST_CHECKED:BST_UNCHECKED);
+ SendDlgItemMessage(hwndDlg, IDC_SSSPIN, UDM_SETBUDDY, (WPARAM)GetDlgItem(hwndDlg, IDC_SSTIME), 0);
+ SendDlgItemMessage(hwndDlg, IDC_SSSPIN, UDM_SETRANGE32, 10, 300);
+ SendDlgItemMessage(hwndDlg, IDC_SSSPIN, UDM_SETPOS, 0, MAKELONG((delay), 0));
+ SendDlgItemMessage(hwndDlg, IDC_SSTIME, EM_LIMITTEXT, (WPARAM)3, 0);
+
+ CheckDlgButton(hwndDlg, IDC_DELAY2, (PopUp == 1) ? BST_CHECKED:BST_UNCHECKED);
+ SendDlgItemMessage(hwndDlg, IDC_SSSPIN2, UDM_SETBUDDY, (WPARAM)GetDlgItem(hwndDlg, IDC_SSPOPUPTIME), 0);
+ SendDlgItemMessage(hwndDlg, IDC_SSSPIN2, UDM_SETRANGE32, 1, 30);
+ SendDlgItemMessage(hwndDlg, IDC_SSSPIN2, UDM_SETPOS, 0, MAKELONG((PopUpTime), 0));
+ SendDlgItemMessage(hwndDlg, IDC_SSPOPUPTIME, EM_LIMITTEXT, (WPARAM)3, 0);
+
+ CheckDlgButton(hwndDlg, IDC_MENU, (MenuItem == 1) ? BST_CHECKED:BST_UNCHECKED);
+
+ CheckDlgButton(hwndDlg, IDC_TTB, (TTBButtons == 1) ? BST_CHECKED:BST_UNCHECKED);
+ }
+ break;
+
+ case WM_COMMAND:
+ switch (LOWORD(wParam)) {
+ case IDC_SSTIME:
+ DWORD min;
+ if ((HWND)lParam != GetFocus() || HIWORD(wParam) != EN_CHANGE) return FALSE;
+ min = GetDlgItemInt(hwndDlg, IDC_SSTIME, NULL, FALSE);
+ if (min == 0 && GetWindowTextLength(GetDlgItem(hwndDlg, IDC_SSTIME)))
+ SendDlgItemMessage(hwndDlg, IDC_SSSPIN, UDM_SETPOS, 0, MAKELONG((short) 1, 0));
+ delay = (DWORD)db_set_dw(NULL, MODULE_NAME, DelayComp, (DWORD)(SendDlgItemMessage(hwndDlg, IDC_SSSPIN, UDM_GETPOS, 0, 0)));
+ break;
+
+ case IDC_SSPOPUPTIME:
+ if ((HWND)lParam != GetFocus() || HIWORD(wParam) != EN_CHANGE) return FALSE;
+ min = GetDlgItemInt(hwndDlg, IDC_SSPOPUPTIME, NULL, FALSE);
+ if (min == 0 && GetWindowTextLength(GetDlgItem(hwndDlg, IDC_SSPOPUPTIME)))
+ SendDlgItemMessage(hwndDlg, IDC_SSSPIN2, UDM_SETPOS, 0, MAKELONG((short) 1, 0));
+ PopUpTime = (DWORD)db_set_dw(NULL, MODULE_NAME, PopUpTimeComp, (DWORD)(SendDlgItemMessage(hwndDlg, IDC_SSSPIN2, UDM_GETPOS, 0, 0)));
+ break;
+
+ case IDC_DELAY:
+ CallService(SS_SERVICE_NAME, 0, 0);
+ break;
+
+ case IDC_DELAY2:
+ if (!(ServiceExists(POPUPONOFF) || ServiceExists(POPUPONOFFPP))) {
+ MessageBox(0, NEEDPOPUP, NOTICE, MB_OK);
+ CheckDlgButton(hwndDlg, IDC_DELAY2, BST_UNCHECKED);
+ PopUp = (BYTE)db_set_b(NULL, MODULE_NAME, PopUpComp, 0);
+ }
+ else PopUp = (BYTE)db_set_b(NULL, MODULE_NAME, PopUpComp, (BYTE)(IsDlgButtonChecked(hwndDlg, IDC_DELAY2) == BST_CHECKED ? 1 : 0));
+ break;
+
+ case IDC_MENU:
+ MenuItem = (BYTE)db_set_b(NULL, MODULE_NAME, MenuitemComp, (BYTE)(IsDlgButtonChecked(hwndDlg, IDC_MENU) == BST_CHECKED ? 1 : 0));
+ break;
+
+ case IDC_TTB:
+ if (!hTTBarloaded) {
+ MessageBox(0, NEEDTTBMOD, NOTICE, MB_OK);
+ CheckDlgButton(hwndDlg, IDC_TTB, BST_UNCHECKED);
+ TTBButtons = (BYTE)db_set_b(NULL, MODULE_NAME, TTBButtonsComp, 0);
+ }
+ else TTBButtons = (BYTE)db_set_b(NULL, MODULE_NAME, TTBButtonsComp, (BYTE)(IsDlgButtonChecked(hwndDlg, IDC_TTB) == BST_CHECKED ? 1 : 0));
+ break;
+ case IDC_RESETDEFAULT:
+ DefSettings();
+ CheckDlgButton(hwndDlg, IDC_DELAY, (Enabled == 1) ? BST_CHECKED:BST_UNCHECKED);
+ SendDlgItemMessage(hwndDlg, IDC_SSSPIN, UDM_SETPOS, 0, MAKELONG((delay), 0));
+ CheckDlgButton(hwndDlg, IDC_DELAY2, (PopUp == 1) ? BST_CHECKED:BST_UNCHECKED);
+ SendDlgItemMessage(hwndDlg, IDC_SSSPIN2, UDM_SETPOS, 0, MAKELONG((PopUpTime), 0));
+ CheckDlgButton(hwndDlg, IDC_MENU, (MenuItem == 1) ? BST_CHECKED:BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_TTB, (TTBButtons == 1) ? BST_CHECKED:BST_UNCHECKED);
+ break;
+ }
+ break;
+ case WM_NOTIFY:
+ case WM_DESTROY:
+ break;
+ }
+ return FALSE;
+}
diff --git a/plugins/StartupSilence/src/resource.h b/plugins/StartupSilence/src/resource.h
new file mode 100644
index 0000000000..1abbf2e44b
--- /dev/null
+++ b/plugins/StartupSilence/src/resource.h
@@ -0,0 +1,32 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by StartupSilence.rc
+//
+#define IDI_SSICON 101
+#define IDI_SSENABLE 102
+#define IDI_SSDISABLE 103
+#define IDD_SSOPT 104
+#define IDI_SSENABLETTB 105
+#define IDI_SSDISABLETTB 106
+#define IDC_SSTIME 40001
+#define IDC_DELAY 40002
+#define IDC_SSSPIN 40003
+#define IDC_DELAY2 40004
+#define IDC_SSPOPUPTIME 40005
+#define IDC_SSSPIN2 40006
+#define IDC_MENU 40007
+#define IDC_TTB 40008
+#define IDC_RESETDEFAULT 40009
+#define IDC_HST 40010
+#define IDC_HOSTNAME 40011
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 107
+#define _APS_NEXT_COMMAND_VALUE 40012
+#define _APS_NEXT_CONTROL_VALUE 1001
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/plugins/StartupSilence/src/stdafx.cpp b/plugins/StartupSilence/src/stdafx.cpp
new file mode 100644
index 0000000000..4c76456ae4
--- /dev/null
+++ b/plugins/StartupSilence/src/stdafx.cpp
@@ -0,0 +1,18 @@
+/*
+Copyright (C) 2012-13 Miranda NG Project (http://miranda-ng.org)
+
+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 version 2
+of the License.
+
+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, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "StartupSilence.h" \ No newline at end of file
diff --git a/plugins/StartupSilence/src/version.h b/plugins/StartupSilence/src/version.h
new file mode 100644
index 0000000000..0d56110e4f
--- /dev/null
+++ b/plugins/StartupSilence/src/version.h
@@ -0,0 +1,56 @@
+// Set the version number here - it will affect the version resource and the version field of the pluginInfo structure
+// (Be careful that you don't have the resource file open when you change this and rebuild, otherwise the changes may not
+// take effect within the version resource)
+// Do not forget to define symbol "_DEBUG" for resource compiler if you use debug configuration (in VisualStudio you can
+// find it under Project properties - Configuration properties - Resource - General - Preprocessor definitions)
+
+// plugin version part
+#define __MAJOR_VERSION 0
+#define __MINOR_VERSION 1
+#define __RELEASE_NUM 0
+#define __BUILD_NUM 0
+
+// minimal MirandaIM version number, with which this plugin supposed to work
+#define __PROD_MAJOR_VERSION 0
+#define __PROD_MINOR_VERSION 93
+#define __PROD_RELEASE_NUM 5
+#define __PROD_BUILD_NUM 0
+// if your plugin works only with Miranda core beginning from specific revision, you can include this information in Product Version resource
+//#define __PROD_REV_NUM 1234
+
+// stuff that will be used in PluginInfo section and in Version resource
+#define __PLUGIN_NAME "StartupSilence"
+#define __FILENAME "StartupSilence.dll"
+#define __DESC "Disabled ALL PopUps and Sounds for 10-300 sec at Miranda startup and Enabled it always for Miranda-NG (Automatically per computer settings)."
+#define __AUTHOR "Vladimir Lyubimov"
+#define __AUTHOREMAIL ""
+#define __AUTHORWEB "http://miranda-ng.org/"
+#define __COPYRIGHT "© 2012-2013 Vladimir Lyubimov"
+
+// other stuff for Version resource
+#define __STRINGIFY_IMPL(x) #x
+#define __STRINGIFY(x) __STRINGIFY_IMPL(x)
+
+#define __FILEVERSION_STRING __MAJOR_VERSION,__MINOR_VERSION,__RELEASE_NUM,__BUILD_NUM
+#define __FILEVERSION_STRING_DOTS __MAJOR_VERSION.__MINOR_VERSION.__RELEASE_NUM.__BUILD_NUM
+#ifdef _UNICODE
+#ifdef __REV_NUM
+#define __VERSION_STRING __STRINGIFY(__FILEVERSION_STRING_DOTS rev. __REV_NUM Unicode)
+#else
+#define __VERSION_STRING __STRINGIFY(__FILEVERSION_STRING_DOTS Unicode)
+#endif
+#else
+#ifdef __REV_NUM
+#define __VERSION_STRING __STRINGIFY(__FILEVERSION_STRING_DOTS rev. __REV_NUM)
+#else
+#define __VERSION_STRING __STRINGIFY(__FILEVERSION_STRING_DOTS)
+#endif
+#endif
+
+#define __PRODVERSION_STRING __PROD_MAJOR_VERSION,__PROD_MINOR_VERSION,__PROD_RELEASE_NUM,__PROD_BUILD_NUM
+#define __PRODVERSION_STRING_DOTS __PROD_MAJOR_VERSION.__PROD_MINOR_VERSION.__PROD_RELEASE_NUM.__PROD_BUILD_NUM
+#ifdef __PROD_REV_NUM
+#define __PROD_VERSION_STRING __STRINGIFY(__PRODVERSION_STRING_DOTS rev. __PROD_REV_NUM)
+#else
+#define __PROD_VERSION_STRING __STRINGIFY(__PRODVERSION_STRING_DOTS+)
+#endif