Example #1
0
int ModulesLoaded(WPARAM, LPARAM)
{
	InitFonts();
	
	hAvChangeEvent = HookEvent(ME_AV_AVATARCHANGED, AvatarChanged);
	hShowTipEvent = HookEvent(ME_CLC_SHOWINFOTIP, ShowTipHook);
	hHideTipEvent = HookEvent(ME_CLC_HIDEINFOTIP, HideTipHook);
	hAckEvent = HookEvent(ME_PROTO_ACK, ProtoAck);

	hFramesSBShow = HookEvent(ME_CLIST_FRAMES_SB_SHOW_TOOLTIP, FramesShowSBTip);
	hFramesSBHide = HookEvent(ME_CLIST_FRAMES_SB_HIDE_TOOLTIP, FramesHideSBTip);

	hFolderChanged = HookEvent(ME_FOLDERS_PATH_CHANGED, ReloadSkinFolder);

	hSkinFolder = FoldersRegisterCustomPathT(LPGEN("Skins"), LPGEN("Tipper"), MIRANDA_PATHT _T("\\") _T(DEFAULT_SKIN_FOLDER));
	FoldersGetCustomPathT(hSkinFolder, SKIN_FOLDER, _countof(SKIN_FOLDER), _T(DEFAULT_SKIN_FOLDER));

	InitTipperSmileys();
	LoadOptions();
	ReloadFont(0, 0);
	ParseSkinFile(opt.szSkinName, true, false);

	// set 'time-in'
	CallService(MS_CLC_SETINFOTIPHOVERTIME, opt.iTimeIn, 0);

	// set Miranda start timestamp
	db_set_dw(0, MODULE, "MirandaStartTS", (DWORD)time(0));
	return 0;
}
Example #2
0
int ModulesLoaded(WPARAM wParam, LPARAM lParam) 
{
	InitFonts();
	InitUpdaterSupport();

	hAvChangeEvent = HookEvent(ME_AV_AVATARCHANGED, AvatarChanged);
	hShowTipEvent = HookEvent(ME_CLC_SHOWINFOTIP, ShowTipHook);
	hHideTipEvent = HookEvent(ME_CLC_HIDEINFOTIP, HideTipHook);
	hAckEvent = HookEvent(ME_PROTO_ACK, ProtoAck);

	hFramesSBShow = HookEvent(ME_CLIST_FRAMES_SB_SHOW_TOOLTIP, FramesShowSBTip);
	hFramesSBHide = HookEvent(ME_CLIST_FRAMES_SB_HIDE_TOOLTIP, FramesHideSBTip);

	hFolderChanged = HookEvent(ME_FOLDERS_PATH_CHANGED, ReloadSkinFolder);

	hSkinFolder = FoldersRegisterCustomPathT(MODULE, "Tipper skins", MIRANDA_PATHT _T("\\") _T(DEFAULT_SKIN_FOLDER));
	FoldersGetCustomPathT(hSkinFolder, SKIN_FOLDER, SIZEOF(SKIN_FOLDER), _T(DEFAULT_SKIN_FOLDER));

	InitTipperSmileys();
	LoadOptions(); 
	ReloadFont(0, 0);
	ParseSkinFile(opt.szSkinName, true, false);

	// set 'time-in'
	CallService(MS_CLC_SETINFOTIPHOVERTIME, opt.iTimeIn, 0);

	// set Miranda start timestamp
	DBWriteContactSettingDword(0, MODULE, "MirandaStartTS", (DWORD)time(0));

	// get MetaContacts module name
	if (ServiceExists(MS_MC_GETPROTOCOLNAME))
		strcpy(szMetaModuleName, (char *)CallService(MS_MC_GETPROTOCOLNAME, 0, 0));

	return 0;
}
Example #3
0
static void InitFonts()
{
    font_id_firstline.cbSize = sizeof(FontIDT);
    font_id_firstline.flags = FIDF_ALLOWEFFECTS;
    mir_tstrcpy(font_id_firstline.group, LPGENT("Popups"));
    mir_tstrcpy(font_id_firstline.name, LPGENT("First line"));
    mir_strcpy(font_id_firstline.dbSettingsGroup, MODULE);
    mir_strcpy(font_id_firstline.prefix, "FontFirst");
    mir_tstrcpy(font_id_firstline.backgroundGroup, _T("Popups"));
    mir_tstrcpy(font_id_firstline.backgroundName, _T("Background"));
    font_id_firstline.order = 0;
    FontRegisterT(&font_id_firstline);

    font_id_secondline.cbSize = sizeof(FontIDT);
    font_id_secondline.flags = FIDF_ALLOWEFFECTS;
    mir_tstrcpy(font_id_secondline.group, LPGENT("Popups"));
    mir_tstrcpy(font_id_secondline.name, LPGENT("Second line"));
    mir_strcpy(font_id_secondline.dbSettingsGroup, MODULE);
    mir_strcpy(font_id_secondline.prefix, "FontSecond");
    mir_tstrcpy(font_id_secondline.backgroundGroup, _T("Popups"));
    mir_tstrcpy(font_id_secondline.backgroundName, _T("Background"));
    font_id_secondline.order = 1;
    FontRegisterT(&font_id_secondline);

    font_id_time.cbSize = sizeof(FontIDT);
    font_id_time.flags = FIDF_ALLOWEFFECTS;
    mir_tstrcpy(font_id_time.group, LPGENT("Popups"));
    mir_tstrcpy(font_id_time.name, LPGENT("Time"));
    mir_strcpy(font_id_time.dbSettingsGroup, MODULE);
    mir_strcpy(font_id_time.prefix, "FontTime");
    mir_tstrcpy(font_id_time.backgroundGroup, _T("Popups"));
    mir_tstrcpy(font_id_time.backgroundName, _T("Background"));
    font_id_time.order = 2;
    FontRegisterT(&font_id_time);

    colour_id_bg.cbSize = sizeof(ColourIDT);
    mir_tstrcpy(colour_id_bg.group, LPGENT("Popups"));
    mir_tstrcpy(colour_id_bg.name, LPGENT("Background"));
    mir_strcpy(colour_id_bg.dbSettingsGroup, MODULE);
    mir_strcpy(colour_id_bg.setting, "ColourBg");
    colour_id_bg.defcolour = GetSysColor(COLOR_3DSHADOW);
    colour_id_bg.order = 0;
    ColourRegisterT(&colour_id_bg);

    colour_id_border.cbSize = sizeof(ColourIDT);
    mir_tstrcpy(colour_id_border.group, LPGENT("Popups"));
    mir_tstrcpy(colour_id_border.name, LPGENT("Border"));
    mir_strcpy(colour_id_border.dbSettingsGroup, MODULE);
    mir_strcpy(colour_id_border.setting, "ColourBorder");
    colour_id_border.defcolour = RGB(0, 0, 0);
    colour_id_border.order = 1;
    ColourRegisterT(&colour_id_border);

    colour_id_sidebar.cbSize = sizeof(ColourIDT);
    mir_tstrcpy(colour_id_sidebar.group, LPGENT("Popups"));
    mir_tstrcpy(colour_id_sidebar.name, LPGENT("Sidebar"));
    mir_strcpy(colour_id_sidebar.dbSettingsGroup, MODULE);
    mir_strcpy(colour_id_sidebar.setting, "ColourSidebar");
    colour_id_sidebar.defcolour = RGB(128, 128, 128);
    colour_id_sidebar.order = 2;
    ColourRegisterT(&colour_id_sidebar);

    colour_id_titleunderline.cbSize = sizeof(ColourIDT);
    mir_tstrcpy(colour_id_titleunderline.group, LPGENT("Popups"));
    mir_tstrcpy(colour_id_titleunderline.name, LPGENT("Title underline"));
    mir_strcpy(colour_id_titleunderline.dbSettingsGroup, MODULE);
    mir_strcpy(colour_id_titleunderline.setting, "ColourTitleUnderline");
    colour_id_titleunderline.defcolour = GetSysColor(COLOR_3DSHADOW);
    colour_id_titleunderline.order = 3;
    ColourRegisterT(&colour_id_titleunderline);

    ReloadFont(0, 0);
}
Example #4
0
// Called when all the modules are loaded
static INT_PTR ModulesLoaded(WPARAM wParam, LPARAM lParam) 
{
	// add our modules to the KnownModules list
	CallService("DBEditorpp/RegisterSingleModule", (WPARAM) MODULE_NAME, 0);

	if (ServiceExists(MS_MC_GETPROTOCOLNAME))
		metacontacts_proto = (char *) CallService(MS_MC_GETPROTOCOLNAME, 0, 0);

    // updater plugin support
    if(ServiceExists(MS_UPDATE_REGISTER))
	{
		Update upd = {0};
		char szCurrentVersion[30];

		upd.cbSize = sizeof(upd);
		upd.szComponentName = pluginInfo.shortName;

		upd.szUpdateURL = UPDATER_AUTOREGISTER;

		upd.szBetaVersionURL = "http://pescuma.org/miranda/voiceservice_version.txt";
		upd.szBetaChangelogURL = "http://pescuma.org/miranda/voiceservice#Changelog";
		upd.pbBetaVersionPrefix = (BYTE *)"Voice Service ";
		upd.cpbBetaVersionPrefix = strlen((char *)upd.pbBetaVersionPrefix);
#ifdef UNICODE
		upd.szBetaUpdateURL = "http://pescuma.org/miranda/voiceserviceW.zip";
#else
		upd.szBetaUpdateURL = "http://pescuma.org/miranda/voiceservice.zip";
#endif

		upd.pbVersion = (BYTE *)CreateVersionStringPlugin((PLUGININFO*) &pluginInfo, szCurrentVersion);
		upd.cpbVersion = strlen((char *)upd.pbVersion);

        CallService(MS_UPDATE_REGISTER, 0, (LPARAM)&upd);
	}

	// Init icons
	{
		IcoLib_Register(mainIcons[0], _T("Voice Calls"), _T("Main"), IDI_MAIN);
		IcoLib_Register(mainIcons[1], _T("Voice Calls"), _T("Dialpad"), IDI_DIALPAD);
		IcoLib_Register(mainIcons[2], _T("Voice Calls"), _T("Secure Overlay"), IDI_SECURE);

		int i;
		for(i = 0; i < MAX_REGS(stateNames); i++)
			IcoLib_Register(stateIcons[i], _T("Voice Calls"), stateNames[i], IDI_TALKING + i);

		for(i = 0; i < MAX_REGS(actionNames); i++)
			IcoLib_Register(actionIcons[i], _T("Voice Calls"), actionNames[i], IDI_ACTION_CALL + i);

		hHooks.push_back( HookEvent(ME_SKIN2_ICONSCHANGED, IconsChanged) );
	}

	// Init fonts
	{
		FontIDT fi = {0};
		fi.cbSize = sizeof(fi);
		lstrcpyn(fi.group, TranslateT("Voice Calls"), MAX_REGS(fi.group));
		strncpy(fi.dbSettingsGroup, MODULE_NAME, MAX_REGS(fi.dbSettingsGroup));

		for (int i = 0; i < NUM_FONTS; i++)
		{
			fi.order = i;
			lstrcpyn(fi.name, stateNames[i], MAX_REGS(fi.name));
			strncpy(fi.prefix, stateIcons[i], MAX_REGS(fi.prefix));

			CallService(MS_FONT_REGISTERT, (WPARAM) &fi, 0);
		}

		ReloadFont(0,0);
		hHooks.push_back( HookEvent(ME_FONT_RELOAD, ReloadFont) );
	}

	// Init bkg color
	{
		ColourIDT ci = {0};
		ci.cbSize = sizeof(ci);
		lstrcpyn(ci.group, TranslateT("Voice Calls"), MAX_REGS(ci.group));
		lstrcpyn(ci.name, TranslateT("Background"), MAX_REGS(ci.name));
		strncpy(ci.dbSettingsGroup, MODULE_NAME, MAX_REGS(ci.dbSettingsGroup));
		strncpy(ci.setting, "BkgColor", MAX_REGS(ci.setting));
		ci.defcolour = GetSysColor(COLOR_BTNFACE);

		CallService(MS_COLOUR_REGISTERT, (WPARAM) &ci, 0);

		ReloadColor(0,0);
		hHooks.push_back( HookEvent(ME_COLOUR_RELOAD, ReloadColor) );
	}

	// Init history
	if (ServiceExists(MS_HISTORYEVENTS_REGISTER))
	{
		char *templates[] = {
			"Talking\nCall from %number% has started\n%number%\tOther side of the call",
			"Ringing\nCall from %number% is ringing\n%number%\tOther side of the call",
			"Calling\nCalling %number%\n%number%\tOther side of the call",
			"On Hold\nCall from %number% is on hold\n%number%\tOther side of the call",
			"Ended\nCall from %number% has ended\n%number%\tOther side of the call",
			"Busy\n%number% is busy\n%number%\tOther side of the call",
		};

		HISTORY_EVENT_HANDLER heh = {0};
		heh.cbSize = sizeof(heh);
		heh.module = MODULE_NAME;
		heh.name = "VoiceCall";
		heh.description = "Voice calls";
		heh.eventType = EVENTTYPE_VOICE_CALL;
		heh.defaultIconName = "vca_call";
		heh.supports = HISTORYEVENTS_FORMAT_TCHAR;
		heh.flags = HISTORYEVENTS_FLAG_SHOW_IM_SRMM 
					| HISTORYEVENTS_FLAG_USE_SENT_FLAG
					| HISTORYEVENTS_REGISTERED_IN_ICOLIB;
		heh.templates = templates;
		heh.numTemplates = MAX_REGS(templates);
		CallService(MS_HISTORYEVENTS_REGISTER, (WPARAM) &heh, 0);
	}

	InitOptions();
	InitFrames();

	// Add menu items
	CLISTMENUITEM mi = {0};
	mi.cbSize = sizeof(mi);
	mi.position = -2000020000;
	mi.flags = CMIF_TCHAR;

	HICON icons[MAX_REGS(actionIcons)];
	for(int i = 0; i < MAX_REGS(actionIcons); ++i)
		icons[i] = IcoLib_LoadIcon(actionIcons[i]);

	CreateServiceFunction(MS_VOICESERVICE_CM_CALL, Service_Call);
	mi.ptszName = actionNames[ACTION_CALL];
	mi.hIcon = icons[ACTION_CALL];
	mi.pszService = MS_VOICESERVICE_CM_CALL;
	hCMCall = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi);

	CreateServiceFunction(MS_VOICESERVICE_CM_ANSWER, CMAnswer);
	mi.position++;
	mi.ptszName = actionNames[ACTION_ANSWER];
	mi.hIcon = icons[ACTION_ANSWER];
	mi.pszService = MS_VOICESERVICE_CM_ANSWER;
	hCMAnswer = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi);

	CreateServiceFunction(MS_VOICESERVICE_CM_HOLD, CMHold);
	mi.position++;
	mi.position++;
	mi.ptszName = actionNames[ACTION_HOLD];
	mi.hIcon = icons[ACTION_HOLD];
	mi.pszService = MS_VOICESERVICE_CM_HOLD;
	hCMHold = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi);

	CreateServiceFunction(MS_VOICESERVICE_CM_DROP, CMDrop);
	mi.position++;
	mi.ptszName = actionNames[ACTION_DROP];
	mi.hIcon = icons[ACTION_DROP];
	mi.pszService = MS_VOICESERVICE_CM_DROP;
	hCMDrop = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi);

	for(i = 0; i < MAX_REGS(actionIcons); ++i)
		IcoLib_ReleaseIcon(icons[i]);

	hHooks.push_back( HookEvent(ME_CLIST_PREBUILDCONTACTMENU, PreBuildContactMenu) );

	// Util services
	CreateServiceFunction(MS_VOICESERVICE_CALL, Service_Call);
	CreateServiceFunction(MS_VOICESERVICE_CAN_CALL, Service_CanCall);

	// Sounds
	SKINSOUNDDESCEX ssd = {0};
	ssd.cbSize = sizeof(ssd);
	ssd.pszSection = "Voice Calls";

	{
		for(int i = 0; i < MAX_REGS(sounds); ++i)
		{
			ssd.pszName = sounds[i].name;
			ssd.pszDescription = sounds[i].description;
			CallService(MS_SKIN_ADDNEWSOUND, 0, (LPARAM)&ssd);
		}
	}

	SetTimer(NULL, 0, 1000, ClearOldVoiceCalls);

	// Accounts
	int numAccounts;
	PROTOACCOUNT **accounts;
	ProtoEnumAccounts(&numAccounts, &accounts);
	for(i = 0; i < numAccounts; ++i)
		AddAccount(accounts[i]);

	hHooks.push_back( HookEvent(ME_PROTO_ACCLISTCHANGED, AccListChanged) );

	return 0;
}
Example #5
0
int ModulesLoaded(WPARAM wParam, LPARAM lParam) {
	MNotifyGetLink();

	if (ServiceExists(MS_HPP_EG_WINDOW))
	{
		lstPopupHistory.SetRenderer(RENDER_HISTORYPP);
	}

	if(ServiceExists(MS_UPDATE_REGISTER)) {
		// register with updater
		Update update = {0};
		char szVersion[16];

		update.cbSize = sizeof(Update);

		update.szComponentName = pluginInfo.shortName;
		update.pbVersion = (BYTE *)CreateVersionString(pluginInfo.version, szVersion);
		update.cpbVersion = (int)strlen((char *)update.pbVersion);
		update.szBetaChangelogURL = "https://server.scottellis.com.au/wsvn/mim_plugs/yapp/?op=log&rev=0&sc=0&isdir=1";

		update.szUpdateURL = UPDATER_AUTOREGISTER;
		
		// these are the three lines that matter - the archive, the page containing the version string, and the text (or data) 
		// before the version that we use to locate it on the page
		// (note that if the update URL and the version URL point to standard file listing entries, the backend xml
		// data will be used to check for updates rather than the actual web page - this is not true for beta urls)
#ifdef _WIN64
		update.szBetaUpdateURL = "http://www.scottellis.com.au/miranda_plugins/yapp_x64.zip";
#endif
		update.szBetaVersionURL = "http://www.scottellis.com.au/miranda_plugins/ver_yapp.html";
		update.pbBetaVersionPrefix = (BYTE *)"YAPP version ";
		
		update.cpbBetaVersionPrefix = (int)strlen((char *)update.pbBetaVersionPrefix);

		CallService(MS_UPDATE_REGISTER, 0, (WPARAM)&update);
	}

#ifdef _UNICODE
	if(ServiceExists(MS_FONT_REGISTERW)) 
	{
		font_id_firstlinew.cbSize = sizeof(FontIDW);
		font_id_firstlinew.flags = FIDF_ALLOWEFFECTS;
		_tcscpy(font_id_firstlinew.group, _T("Popups"));
		_tcscpy(font_id_firstlinew.name, _T("First line"));
		strcpy(font_id_firstlinew.dbSettingsGroup, MODULE);
		strcpy(font_id_firstlinew.prefix, "FontFirst");
		font_id_firstlinew.order = 0;

		font_id_secondlinew.cbSize = sizeof(FontIDW);
		font_id_secondlinew.flags = FIDF_ALLOWEFFECTS;
		_tcscpy(font_id_secondlinew.group, _T("Popups"));
		_tcscpy(font_id_secondlinew.name, _T("Second line"));
		strcpy(font_id_secondlinew.dbSettingsGroup, MODULE);
		strcpy(font_id_secondlinew.prefix, "FontSecond");
		font_id_secondlinew.order = 1;

		font_id_timew.cbSize = sizeof(FontIDW);
		font_id_timew.flags = FIDF_ALLOWEFFECTS;
		_tcscpy(font_id_timew.group, _T("Popups"));
		_tcscpy(font_id_timew.name, _T("Time"));
		strcpy(font_id_timew.dbSettingsGroup, MODULE);
		strcpy(font_id_timew.prefix, "FontTime");
		font_id_timew.order = 2;

		CallService(MS_FONT_REGISTERW, (WPARAM)&font_id_firstlinew, 0);
		CallService(MS_FONT_REGISTERW, (WPARAM)&font_id_secondlinew, 0);
		CallService(MS_FONT_REGISTERW, (WPARAM)&font_id_timew, 0);
		
		colour_id_bgw.cbSize = sizeof(ColourIDW);
		_tcscpy(colour_id_bgw.group, _T("Popups"));
		_tcscpy(colour_id_bgw.name, _T("Background"));
		strcpy(colour_id_bgw.dbSettingsGroup, MODULE);
		strcpy(colour_id_bgw.setting, "ColourBg");
		colour_id_bgw.defcolour = GetSysColor(COLOR_3DSHADOW);
		colour_id_bgw.order = 0;

		colour_id_borderw.cbSize = sizeof(ColourIDW);
		_tcscpy(colour_id_borderw.group, _T("Popups"));
		_tcscpy(colour_id_borderw.name, _T("Border"));
		strcpy(colour_id_borderw.dbSettingsGroup, MODULE);
		strcpy(colour_id_borderw.setting, "ColourBorder");
		colour_id_borderw.defcolour = RGB(0, 0, 0);
		colour_id_borderw.order = 1;

		colour_id_sidebarw.cbSize = sizeof(ColourIDW);
		_tcscpy(colour_id_sidebarw.group, _T("Popups"));
		_tcscpy(colour_id_sidebarw.name, _T("Sidebar"));
		strcpy(colour_id_sidebarw.dbSettingsGroup, MODULE);
		strcpy(colour_id_sidebarw.setting, "ColourSidebar");
		colour_id_sidebarw.defcolour = RGB(128, 128, 128);
		colour_id_sidebarw.order = 2;

		colour_id_titleunderlinew.cbSize = sizeof(ColourIDW);
		_tcscpy(colour_id_titleunderlinew.group, _T("Popups"));
		_tcscpy(colour_id_titleunderlinew.name, _T("Title underline"));
		strcpy(colour_id_titleunderlinew.dbSettingsGroup, MODULE);
		strcpy(colour_id_titleunderlinew.setting, "ColourTitleUnderline");
		colour_id_titleunderlinew.defcolour = GetSysColor(COLOR_3DSHADOW);
		colour_id_titleunderlinew.order = 3;

		CallService(MS_COLOUR_REGISTERW, (WPARAM)&colour_id_bgw, 0);
		CallService(MS_COLOUR_REGISTERW, (WPARAM)&colour_id_borderw, 0);
		CallService(MS_COLOUR_REGISTERW, (WPARAM)&colour_id_sidebarw, 0);
		CallService(MS_COLOUR_REGISTERW, (WPARAM)&colour_id_titleunderlinew, 0);
		
		ReloadFont(0, 0);

		hEventReloadFont = HookEvent(ME_FONT_RELOAD, ReloadFont);
	} 
	else 
#endif
		if(ServiceExists(MS_FONT_REGISTER)) 
	{
		font_id_firstline.cbSize = sizeof(FontID);
		font_id_firstline.flags = FIDF_ALLOWEFFECTS;
		strcpy(font_id_firstline.group, "Popups");
		strcpy(font_id_firstline.name, "First line");
		strcpy(font_id_firstline.dbSettingsGroup, MODULE);
		strcpy(font_id_firstline.prefix, "FontFirst");
		font_id_firstline.order = 0;

		font_id_secondline.cbSize = sizeof(FontID);
		font_id_secondline.flags = FIDF_ALLOWEFFECTS;
		strcpy(font_id_secondline.group, "Popups");
		strcpy(font_id_secondline.name, "Second line");
		strcpy(font_id_secondline.dbSettingsGroup, MODULE);
		strcpy(font_id_secondline.prefix, "FontSecond");
		font_id_secondline.order = 1;

		font_id_time.cbSize = sizeof(FontID);
		font_id_time.flags = FIDF_ALLOWEFFECTS;
		strcpy(font_id_time.group, "Popups");
		strcpy(font_id_time.name, "Time");
		strcpy(font_id_time.dbSettingsGroup, MODULE);
		strcpy(font_id_time.prefix, "FontTime");
		font_id_time.order = 2;

		CallService(MS_FONT_REGISTER, (WPARAM)&font_id_firstline, 0);
		CallService(MS_FONT_REGISTER, (WPARAM)&font_id_secondline, 0);
		CallService(MS_FONT_REGISTER, (WPARAM)&font_id_time, 0);
		
		colour_id_bg.cbSize = sizeof(ColourID);
		strcpy(colour_id_bg.group, "Popups");
		strcpy(colour_id_bg.name, "Background");
		strcpy(colour_id_bg.dbSettingsGroup, MODULE);
		strcpy(colour_id_bg.setting, "ColourBg");
		colour_id_bg.defcolour = GetSysColor(COLOR_3DSHADOW);
		colour_id_bg.order = 0;

		colour_id_border.cbSize = sizeof(ColourID);
		strcpy(colour_id_border.group, "Popups");
		strcpy(colour_id_border.name, "Border");
		strcpy(colour_id_border.dbSettingsGroup, MODULE);
		strcpy(colour_id_border.setting, "ColourBorder");
		colour_id_border.defcolour = RGB(0, 0, 0);
		colour_id_border.order = 1;

		colour_id_sidebar.cbSize = sizeof(ColourID);
		strcpy(colour_id_sidebar.group, "Popups");
		strcpy(colour_id_sidebar.name, "Sidebar");
		strcpy(colour_id_sidebar.dbSettingsGroup, MODULE);
		strcpy(colour_id_sidebar.setting, "ColourSidebar");
		colour_id_sidebar.defcolour = RGB(128, 128, 128);
		colour_id_sidebar.order = 2;

		colour_id_titleunderline.cbSize = sizeof(ColourID);
		strcpy(colour_id_titleunderline.group, "Popups");
		strcpy(colour_id_titleunderline.name, "Title underline");
		strcpy(colour_id_titleunderline.dbSettingsGroup, MODULE);
		strcpy(colour_id_titleunderline.setting, "ColourTitleUnderline");
		colour_id_titleunderline.defcolour = GetSysColor(COLOR_3DSHADOW);
		colour_id_titleunderline.order = 3;

		CallService(MS_COLOUR_REGISTER, (WPARAM)&colour_id_bg, 0);
		CallService(MS_COLOUR_REGISTER, (WPARAM)&colour_id_border, 0);
		CallService(MS_COLOUR_REGISTER, (WPARAM)&colour_id_sidebar, 0);
		CallService(MS_COLOUR_REGISTER, (WPARAM)&colour_id_titleunderline, 0);
		
		ReloadFont(0, 0);

		hEventReloadFont = HookEvent(ME_FONT_RELOAD, ReloadFont);
	} else {
		LOGFONT lf = {0};
		lf.lfCharSet = DEFAULT_CHARSET;
		lf.lfHeight = -14;
		lf.lfWeight = FW_BOLD;
		hFontFirstLine = CreateFontIndirect(&lf);

		lf.lfHeight = -12;
		lf.lfWeight = 0;
		hFontSecondLine = CreateFontIndirect(&lf);

		lf.lfHeight = -8;
		lf.lfWeight = 0;
		hFontTime = CreateFontIndirect(&lf);
	}
	
	LoadModuleDependentOptions(); 

	if(GetModuleHandle(_T("neweventnotify")))
	{
		ignore_gpd_passed_addy = true;
	}

	return 0;
}