Пример #1
0
extern "C" __declspec(dllexport) int Load(void)
{
	mir_getLP(&pluginInfoEx);

	TCHAR* tszFolder = Utils_ReplaceVarsT(_T("%miranda_userdata%\\" DEFAULT_UPDATES_FOLDER));
	mir_tstrncpy(tszRoot, tszFolder, _countof(tszRoot));

	hPackUpdaterFolder = FoldersRegisterCustomPathT(MODULEA, LPGEN("Pack Updater"), MIRANDA_USERDATAT _T("\\")DEFAULT_UPDATES_FOLDER);
	if (hPackUpdaterFolder)
		FoldersGetCustomPathT(hPackUpdaterFolder, tszRoot, MAX_PATH, _T(""));

	mir_free(tszFolder);
	LoadOptions();
	InitPopupList();
	NetlibInit();
	IcoLibInit();

	// Add cheking update menu item
	CreateServiceFunction(MODNAME"/CheckUpdates", MenuCommand);

	CMenuItem mi;
	SET_UID(mi, 0x326495e8, 0xab0a, 0x47d2, 0xb2, 0x22, 0x2a, 0x8e, 0xa8, 0xae, 0x53, 0x1a);
	mi.position = -0x7FFFFFFF;
	mi.flags = CMIF_TCHAR;
	mi.hIcolibItem = IcoLib_GetIcon("check_update");
	mi.name.t = LPGENT("Check for pack updates");
	mi.pszService = MODNAME"/CheckUpdates";
	Menu_AddMainMenuItem(&mi);
	// Add empty updates folder menu item
	CreateServiceFunction(MODNAME"/EmptyFolder", EmptyFolder);
	memset(&mi, 0, sizeof(mi));
	SET_UID(mi, 0xc3eea590, 0xaba3, 0x454f, 0x93, 0x93, 0xbc, 0x97, 0x15, 0x2c, 0x3b, 0x3d);
	mi.position = -0x7FFFFFFF;
	mi.flags = CMIF_TCHAR;
	mi.hIcolibItem = IcoLib_GetIcon("empty_folder");
	mi.name.t = LPGENT("Clear pack updates folder");
	mi.pszService = MODNAME"/EmptyFolder";
	Menu_AddMainMenuItem(&mi);

	// Add options hook
	HookEvent(ME_OPT_INITIALISE, OptInit);
	HookEvent(ME_SYSTEM_MODULESLOADED, ModulesLoaded);
	HookEvent(ME_SYSTEM_PRESHUTDOWN, OnPreShutdown);

	return 0;
}
Пример #2
0
extern "C" __declspec(dllexport) int Load(PLUGINLINK *link)
{
	pluginLink = link;
	mir_getMMI(&mmi);
	mir_getLI(&li);
	mir_getMD5I(&md5i);
	mir_getUTFI(&utfi);
#else
extern "C" __declspec(dllexport) int Load(void)
{
	mir_getLP(&pluginInfoEx);

	InitServices();
#endif

	db_set_b(NULL, MODNAME, "NeedRestart", 0);

	DWORD dwLen = GetTempPath( SIZEOF(tszTempPath), tszTempPath);
	if (tszTempPath[dwLen-1] == '\\')
		tszTempPath[dwLen-1] = 0;

	LoadOptions();
	InitPopupList();
	InitNetlib();
	InitIcoLib();

	// Add cheking update menu item
	InitCheck();
	CLISTMENUITEM mi = { sizeof(mi) };
	mi.position = 400010000;
	mi.icolibItem = Skin_GetIconHandle("check_update");
	mi.pszName = LPGEN("Check for updates");
	mi.pszService = MODNAME"/CheckUpdates";
	Menu_AddMainMenuItem(&mi);

#if MIRANDA_VER >= 0x0A00
	InitListNew();

	mi.position++;
	mi.icolibItem = Skin_GetIconHandle("plg_list");
	mi.pszName = LPGEN("Available components list");
	mi.pszService = MODNAME"/ShowList";
	Menu_AddMainMenuItem(&mi);

	InitOptions();
#endif

	// Add hotkey
	HOTKEYDESC hkd = { sizeof(hkd) };
	hkd.pszName = "Check for updates";
	hkd.pszDescription = "Check for updates";
	hkd.pszSection = "Plugin Updater";
	hkd.pszService = MODNAME"/CheckUpdates";
	hkd.DefHotKey = HOTKEYCODE(HOTKEYF_CONTROL, VK_F10) | HKF_MIRANDA_LOCAL;
	hkd.lParam = FALSE;
	Hotkey_Register(&hkd);

	InitEvents();

	//add sounds
	SkinAddNewSoundEx("updatecompleted",LPGEN("Plugin Updater"),LPGEN("Update completed"));
	SkinAddNewSoundEx("updatefailed",LPGEN("Plugin Updater"),LPGEN("Update failed"));
	return 0;
}
Пример #3
0
INT_PTR CALLBACK DlgPopupOpts(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
	int i;
	WORD idCtrl;
	char str[20] = { 0 }, str2[20] = { 0 };

	switch (msg) {
	case WM_INITDIALOG:
		TranslateDialogDefault(hdlg);
		//Colors
		if (MyOptions.DefColors == byCOLOR_OWN) {
			CheckDlgButton(hdlg, IDC_USEOWNCOLORS, BST_CHECKED);
			CheckDlgButton(hdlg, IDC_USEPOPUPCOLORS, BST_UNCHECKED);
			CheckDlgButton(hdlg, IDC_USEWINCOLORS, BST_UNCHECKED);
		}
		if (MyOptions.DefColors == byCOLOR_WINDOWS) {
			CheckDlgButton(hdlg, IDC_USEOWNCOLORS, BST_UNCHECKED);
			CheckDlgButton(hdlg, IDC_USEPOPUPCOLORS, BST_UNCHECKED);
			CheckDlgButton(hdlg, IDC_USEWINCOLORS, BST_CHECKED);
		}
		if (MyOptions.DefColors == byCOLOR_POPUP) {
			CheckDlgButton(hdlg, IDC_USEOWNCOLORS, BST_UNCHECKED);
			CheckDlgButton(hdlg, IDC_USEPOPUPCOLORS, BST_CHECKED);
			CheckDlgButton(hdlg, IDC_USEWINCOLORS, BST_UNCHECKED);
		}
		for (i = 0; i < POPUPS; i++) {
			SendDlgItemMessage(hdlg, (i + 42071), CPM_SETCOLOUR, 0, PopupsList[i].colorBack);
			SendDlgItemMessage(hdlg, (i + 41071), CPM_SETCOLOUR, 0, PopupsList[i].colorText);
			EnableWindow(GetDlgItem(hdlg, (i + 42071)), (MyOptions.DefColors == byCOLOR_OWN));
			EnableWindow(GetDlgItem(hdlg, (i + 41071)), (MyOptions.DefColors == byCOLOR_OWN));
		}
		//Timeout
		SendDlgItemMessage(hdlg, IDC_TIMEOUT_VALUE, EM_LIMITTEXT, 4, 0);
		SendDlgItemMessage(hdlg, IDC_TIMEOUT_VALUE_SPIN, UDM_SETRANGE32, -1, 9999);
		SetDlgItemInt(hdlg, IDC_TIMEOUT_VALUE, MyOptions.Timeout, TRUE);
		//Mouse actions
		for (i = 0; i < _countof(PopupActions); i++) {
			SendDlgItemMessage(hdlg, IDC_LC, CB_SETITEMDATA, SendDlgItemMessage(hdlg, IDC_LC, CB_ADDSTRING, 0, (LPARAM)TranslateTS(PopupActions[i].Text)), PopupActions[i].Action);
			SendDlgItemMessage(hdlg, IDC_RC, CB_SETITEMDATA, SendDlgItemMessage(hdlg, IDC_RC, CB_ADDSTRING, 0, (LPARAM)TranslateTS(PopupActions[i].Text)), PopupActions[i].Action);
		}
		SendDlgItemMessage(hdlg, IDC_LC, CB_SETCURSEL, MyOptions.LeftClickAction, 0);
		SendDlgItemMessage(hdlg, IDC_RC, CB_SETCURSEL, MyOptions.RightClickAction, 0);
		//Popups nitified
		for (i = 0; i < POPUPS; i++) {
			mir_snprintf(str, "Popups%d", i);
			mir_snprintf(str2, "Popups%dM", i);
			CheckDlgButton(hdlg, (i + 40071), (db_get_b(NULL, MODNAME, str, DEFAULT_POPUP_ENABLED)) ? BST_CHECKED : BST_UNCHECKED);
			CheckDlgButton(hdlg, (i + 1024), (db_get_b(NULL, MODNAME, str2, DEFAULT_MESSAGE_ENABLED)) ? BST_CHECKED : BST_UNCHECKED);
			if (IsDlgButtonChecked(hdlg, (i + 40071)))
				EnableWindow(GetDlgItem(hdlg, (i + 1024)), FALSE);
			else if (i > 0)
				EnableWindow(GetDlgItem(hdlg, (i + 1024)), TRUE);
		}
		if (!(db_get_dw(NULL, "Popup", "Actions", 0) & 1) || !ServiceExists(MS_POPUP_REGISTERACTIONS))
			EnableWindow(GetDlgItem(hdlg, (40071)), FALSE);
		else
			EnableWindow(GetDlgItem(hdlg, (40071)), TRUE);

		return TRUE;

	case WM_SHOWWINDOW:
		if (!(db_get_dw(NULL, "Popup", "Actions", 0) & 1) || !ServiceExists(MS_POPUP_REGISTERACTIONS))
			EnableWindow(GetDlgItem(hdlg, (40071)), FALSE);
		else
			EnableWindow(GetDlgItem(hdlg, (40071)), TRUE);
		return TRUE;

	case WM_COMMAND:
		idCtrl = LOWORD(wParam);
		if (HIWORD(wParam) == CPN_COLOURCHANGED) {
			if (idCtrl > 40070) {
				//It's a color picker change. idCtrl is the control id.
				COLORREF color = SendDlgItemMessage(hdlg, idCtrl, CPM_GETCOLOUR, 0, 0);
				int ctlID = idCtrl;
				if ((ctlID > 41070) && (ctlID < 42070)) //It's 41071 or above => Text color.
					PopupsList[ctlID - 41071].colorText = color;
				else if (ctlID > 42070)//Background color.
					PopupsList[ctlID - 42071].colorBack = color;
				SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0);
				return TRUE;
			}
		}
		if (HIWORD(wParam) == CBN_SELCHANGE) {
			if (idCtrl == IDC_LC)
				MyOptions.LeftClickAction = (BYTE)SendDlgItemMessage(hdlg, IDC_LC, CB_GETCURSEL, 0, 0);
			else if (idCtrl == IDC_RC)
				MyOptions.RightClickAction = (BYTE)SendDlgItemMessage(hdlg, IDC_RC, CB_GETCURSEL, 0, 0);

			SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0);
			return TRUE;
		}

		switch (idCtrl) {
		case IDC_USEOWNCOLORS:
			if (HIWORD(wParam) == BN_CLICKED) {
				MyOptions.DefColors = byCOLOR_OWN;
				BOOL bEnableOthers = TRUE;
				for (i = 0; i < POPUPS; i++) {
					EnableWindow(GetDlgItem(hdlg, (i + 42071)), bEnableOthers); //Background
					EnableWindow(GetDlgItem(hdlg, (i + 41071)), bEnableOthers); //Text
				}
				SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0);
			}
			break;
		case IDC_USEWINCOLORS:
			if (HIWORD(wParam) == BN_CLICKED) {
				//Use Windows colors
				MyOptions.DefColors = byCOLOR_WINDOWS;
				BOOL bEnableOthers = FALSE;
				for (i = 0; i < POPUPS; i++) {
					EnableWindow(GetDlgItem(hdlg, (i + 42071)), bEnableOthers); //Background
					EnableWindow(GetDlgItem(hdlg, (i + 41071)), bEnableOthers); //Text
				}
				SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0);
			}
			break;

		case IDC_USEPOPUPCOLORS:
			if (HIWORD(wParam) == BN_CLICKED) {
				//Use Popup colors
				MyOptions.DefColors = byCOLOR_POPUP;
				BOOL bEnableOthers = FALSE;
				for (i = 0; i < POPUPS; i++) {
					EnableWindow(GetDlgItem(hdlg, (i + 42071)), bEnableOthers); //Background
					EnableWindow(GetDlgItem(hdlg, (i + 41071)), bEnableOthers); //Text
				}
				SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0);
			}
			break;

		case IDC_PREVIEW:
			Title = TranslateT("Pack Updater");
			Text = TranslateT("Test");
			for (i = 0; i < POPUPS; i++) {
				if ((BST_UNCHECKED == IsDlgButtonChecked(hdlg, (i + 40071))) || (!IsWindowEnabled(GetDlgItem(hdlg, (i + 40071)))))
					continue;
				show_popup(0, Title, Text, i, 0);
			}
			break;

		case IDC_TIMEOUT_VALUE:
		case IDC_MSG_BOXES:
		case IDC_ERRORS:
			if (BST_UNCHECKED == IsDlgButtonChecked(hdlg, IDC_ERRORS))
				EnableWindow(GetDlgItem(hdlg, IDC_ERRORS_MSG), TRUE);
			else
				EnableWindow(GetDlgItem(hdlg, IDC_ERRORS_MSG), FALSE);
			if ((HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == EN_CHANGE) && (HWND)lParam == GetFocus())
				SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0);
			break;

		case IDC_INFO_MESSAGES:
			if (BST_UNCHECKED == IsDlgButtonChecked(hdlg, IDC_INFO_MESSAGES))
				EnableWindow(GetDlgItem(hdlg, IDC_INFO_MESSAGES_MSG), TRUE);
			else
				EnableWindow(GetDlgItem(hdlg, IDC_INFO_MESSAGES_MSG), FALSE);
			if ((HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == EN_CHANGE) && (HWND)lParam == GetFocus())
				SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0);
			break;

		case IDC_PROGR_DLG:
			if (BST_UNCHECKED == IsDlgButtonChecked(hdlg, IDC_PROGR_DLG))
				EnableWindow(GetDlgItem(hdlg, IDC_PROGR_DLG_MSG), TRUE);
			else
				EnableWindow(GetDlgItem(hdlg, IDC_PROGR_DLG_MSG), FALSE);
			if ((HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == EN_CHANGE) && (HWND)lParam == GetFocus())
				SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0);
			break;

		case IDC_MSG_BOXES_MSG:
		case IDC_ERRORS_MSG:
		case IDC_INFO_MESSAGES_MSG:
		case IDC_PROGR_DLG_MSG:
			if ((HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == EN_CHANGE) && (HWND)lParam == GetFocus())
				SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0);
			break;
		}
		break;

	case WM_NOTIFY:
		switch (((LPNMHDR)lParam)->code) {
		case PSN_RESET:
			//Restore the options stored in memory.
			LoadOptions();
			InitPopupList();
			return TRUE;

		case PSN_APPLY:
			//Text color
			char szSetting[20] = { 0 };
			DWORD ctlColor = 0;
			for (i = 0; i <= POPUPS - 1; i++) {
				ctlColor = SendDlgItemMessage(hdlg, (i + 42071), CPM_GETCOLOUR, 0, 0);
				PopupsList[i].colorBack = ctlColor;
				mir_snprintf(szSetting, "Popups%iBg", i);
				db_set_dw(NULL, MODNAME, szSetting, ctlColor);
				ctlColor = SendDlgItemMessage(hdlg, (i + 41071), CPM_GETCOLOUR, 0, 0);
				PopupsList[i].colorText = ctlColor;
				mir_snprintf(szSetting, "Popups%iTx", i);
				db_set_dw(NULL, MODNAME, szSetting, ctlColor);
			}
			//Colors
			db_set_b(NULL, MODNAME, "DefColors", MyOptions.DefColors);
			//Timeout
			MyOptions.Timeout = GetDlgItemInt(hdlg, IDC_TIMEOUT_VALUE, 0, TRUE);
			db_set_dw(NULL, MODNAME, "Timeout", MyOptions.Timeout);
			//Left mouse click
			db_set_b(NULL, MODNAME, "LeftClickAction", MyOptions.LeftClickAction);
			//Right mouse click
			db_set_b(NULL, MODNAME, "RightClickAction", MyOptions.RightClickAction);
			//Notified popups
			for (i = 0; i < POPUPS; i++) {
				mir_snprintf(str, "Popups%d", i);
				db_set_b(NULL, MODNAME, str, (BYTE)(IsDlgButtonChecked(hdlg, (i + 40071))));
				mir_snprintf(str2, "Popups%dM", i);
				db_set_b(NULL, MODNAME, str2, (BYTE)(IsDlgButtonChecked(hdlg, (i + 1024))));
			}
			return TRUE;
		}
		break; //End WM_NOTIFY
	}
	return FALSE;
}