int ContactSettingChanged(WPARAM wParam,LPARAM lParam) { MCONTACT hContact = (MCONTACT) wParam; DBCONTACTWRITESETTING *cws=(DBCONTACTWRITESETTING*)lParam; logmsg("ContactSettingChanged1"); if(hContact==NULL || mir_strcmp(cws->szSetting,"Status")) return 0; WORD newStatus = cws->value.wVal; WORD oldStatus = DBGetContactSettingRangedWord(hContact,"UserOnline","OldStatus2",ID_STATUS_OFFLINE, ID_STATUS_MIN, ID_STATUS_MAX); if (oldStatus == newStatus) return 0; logmsg("ContactSettingChanged2"); db_set_w(hContact,"UserOnline","OldStatus2", newStatus); if(CallService(MS_IGNORE_ISIGNORED,wParam,IGNOREEVENT_USERONLINE)) return 0; DWORD dwStatuses = MAKELPARAM(oldStatus, newStatus); NotifyEventHooks(hHookContactStatusChanged, wParam, (LPARAM)dwStatuses); return 0; }
int ProcessStatus(DBCONTACTWRITESETTING *cws, MCONTACT hContact) { WORD newStatus = cws->value.wVal; if (newStatus < ID_STATUS_MIN || newStatus > ID_STATUS_MAX) return 0; char *szProto = GetContactProto(hContact); if (mir_strcmp(cws->szModule, szProto)) return 0; // we don't want to be notified if new chatroom comes online if (db_get_b(hContact, szProto, "ChatRoom", 0) == 1) return 0; WORD oldStatus = DBGetContactSettingRangedWord(hContact, "UserOnline", "LastStatus", ID_STATUS_OFFLINE, ID_STATUS_MIN, ID_STATUS_MAX); if (oldStatus == newStatus) return 0; //If we get here, the two statuses differ, so we can proceed. db_set_w(hContact, "UserOnline", "LastStatus", newStatus); // A simple implementation of Last Seen module, please don't touch this. if (opt.EnableLastSeen && newStatus == ID_STATUS_OFFLINE && oldStatus > ID_STATUS_OFFLINE) { SYSTEMTIME systime; GetLocalTime(&systime); db_set_w(hContact, "SeenModule", "Year", systime.wYear); db_set_w(hContact, "SeenModule", "Month", systime.wMonth); db_set_w(hContact, "SeenModule", "Day", systime.wDay); db_set_w(hContact, "SeenModule", "Hours", systime.wHour); db_set_w(hContact, "SeenModule", "Minutes", systime.wMinute); db_set_w(hContact, "SeenModule", "Seconds", systime.wSecond); db_set_w(hContact, "SeenModule", "Status", oldStatus); } //If *Miranda* ignores the UserOnline event, exit! if (CallService(MS_IGNORE_ISIGNORED, hContact, IGNOREEVENT_USERONLINE)) return 0; //If we get here, we have to notify the Hooks. ContactStatusChanged(hContact, oldStatus, newStatus); NotifyEventHooks(hHookContactStatusChanged, hContact, (LPARAM)MAKELPARAM(oldStatus, newStatus)); return 1; }
int OptionsRead(void) { options->bDisable = db_get_b(NULL, MODULE, OPT_DISABLE, FALSE); options->bPreview = db_get_b(NULL, MODULE, OPT_PREVIEW, TRUE); options->bMenuitem = db_get_b(NULL, MODULE, OPT_MENUITEM, FALSE); options->bDefaultColorMsg = db_get_b(NULL, MODULE, OPT_COLDEFAULT_MESSAGE, FALSE); options->bDefaultColorUrl = db_get_b(NULL, MODULE, OPT_COLDEFAULT_URL, FALSE); options->bDefaultColorFile = db_get_b(NULL, MODULE, OPT_COLDEFAULT_FILE, FALSE); options->bDefaultColorOthers = db_get_b(NULL, MODULE, OPT_COLDEFAULT_OTHERS, FALSE); options->colBackMsg = (COLORREF)db_get_dw(NULL, MODULE, OPT_COLBACK_MESSAGE, DEFAULT_COLBACK); options->colTextMsg = (COLORREF)db_get_dw(NULL, MODULE, OPT_COLTEXT_MESSAGE, DEFAULT_COLTEXT); options->colBackUrl = (COLORREF)db_get_dw(NULL, MODULE, OPT_COLBACK_URL, DEFAULT_COLBACK); options->colTextUrl = (COLORREF)db_get_dw(NULL, MODULE, OPT_COLTEXT_URL, DEFAULT_COLTEXT); options->colBackFile = (COLORREF)db_get_dw(NULL, MODULE, OPT_COLBACK_FILE, DEFAULT_COLBACK); options->colTextFile = (COLORREF)db_get_dw(NULL, MODULE, OPT_COLTEXT_FILE, DEFAULT_COLTEXT); options->colBackOthers = (COLORREF)db_get_dw(NULL, MODULE, OPT_COLBACK_OTHERS, DEFAULT_COLBACK); options->colTextOthers = (COLORREF)db_get_dw(NULL, MODULE, OPT_COLTEXT_OTHERS, DEFAULT_COLTEXT); options->maskNotify = (UINT)db_get_b(NULL, MODULE, OPT_MASKNOTIFY, DEFAULT_MASKNOTIFY); options->maskActL = (UINT)db_get_b(NULL, MODULE, OPT_MASKACTL, DEFAULT_MASKACTL); options->maskActR = (UINT)db_get_b(NULL, MODULE, OPT_MASKACTR, DEFAULT_MASKACTR); options->maskActTE = (UINT)db_get_b(NULL, MODULE, OPT_MASKACTTE, DEFAULT_MASKACTE); options->bMsgWindowCheck = db_get_b(NULL, MODULE, OPT_MSGWINDOWCHECK, TRUE); options->bMsgReplyWindow = db_get_b(NULL, MODULE, OPT_MSGREPLYWINDOW, FALSE); options->bMergePopup = db_get_b(NULL, MODULE, OPT_MERGEPOPUP, TRUE); options->iDelayMsg = (int)db_get_dw(NULL, MODULE, OPT_DELAY_MESSAGE, DEFAULT_DELAY); options->iDelayUrl = (int)db_get_dw(NULL, MODULE, OPT_DELAY_URL, DEFAULT_DELAY); options->iDelayFile = (int)db_get_dw(NULL, MODULE, OPT_DELAY_FILE, DEFAULT_DELAY); options->iDelayOthers = (int)db_get_dw(NULL, MODULE, OPT_DELAY_OTHERS, DEFAULT_DELAY); options->iDelayDefault = (int)DBGetContactSettingRangedWord(NULL, "Popup", "Seconds", SETTING_LIFETIME_DEFAULT, SETTING_LIFETIME_MIN, SETTING_LIFETIME_MAX); options->bShowDate = db_get_b(NULL, MODULE, OPT_SHOW_DATE, TRUE); options->bShowTime = db_get_b(NULL, MODULE, OPT_SHOW_TIME, TRUE); options->bShowHeaders = db_get_b(NULL, MODULE, OPT_SHOW_HEADERS, TRUE); options->iNumberMsg = (BYTE)db_get_b(NULL, MODULE, OPT_NUMBER_MSG, TRUE); options->bShowON = db_get_b(NULL, MODULE, OPT_SHOW_ON, TRUE); options->bHideSend = db_get_b(NULL, MODULE, OPT_HIDESEND, TRUE); options->bNoRSS = db_get_b(NULL, MODULE, OPT_NORSS, FALSE); options->bReadCheck = db_get_b(NULL, MODULE, OPT_READCHECK, FALSE); return 0; }
//Main Dialog Proc void LoadOption_General() { //Seconds PopupOptions.InfiniteDelay = db_get_b(NULL, MODULNAME, "InfiniteDelay", FALSE); PopupOptions.Seconds = DBGetContactSettingRangedWord(NULL, MODULNAME, "Seconds", SETTING_LIFETIME_DEFAULT, SETTING_LIFETIME_MIN, SETTING_LIFETIME_MAX); PopupOptions.LeaveHovered = db_get_b(NULL, MODULNAME, "LeaveHovered", TRUE); //Dynamic Resize PopupOptions.DynamicResize = db_get_b(NULL, MODULNAME, "DynamicResize", FALSE); PopupOptions.UseMinimumWidth = db_get_b(NULL, MODULNAME, "UseMinimumWidth", TRUE); PopupOptions.MinimumWidth = db_get_w(NULL, MODULNAME, "MinimumWidth", 160); PopupOptions.UseMaximumWidth = db_get_b(NULL, MODULNAME, "UseMaximumWidth", TRUE); PopupOptions.MaximumWidth = db_get_w(NULL, MODULNAME, "MaximumWidth", 300); //Position PopupOptions.Position = DBGetContactSettingRangedByte(NULL, MODULNAME, "Position", POS_LOWERRIGHT, POS_MINVALUE, POS_MAXVALUE); //Configure popup area PopupOptions.gapTop = db_get_w(NULL, MODULNAME, "gapTop", 5); PopupOptions.gapBottom = db_get_w(NULL, MODULNAME, "gapBottom", 5); PopupOptions.gapLeft = db_get_w(NULL, MODULNAME, "gapLeft", 5); PopupOptions.gapRight = db_get_w(NULL, MODULNAME, "gapRight", 5); PopupOptions.spacing = db_get_w(NULL, MODULNAME, "spacing", 5); //Spreading PopupOptions.Spreading = DBGetContactSettingRangedByte(NULL, MODULNAME, "Spreading", SPREADING_VERTICAL, SPREADING_MINVALUE, SPREADING_MAXVALUE); //miscellaneous PopupOptions.ReorderPopups = db_get_b(NULL, MODULNAME, "ReorderPopups", TRUE); PopupOptions.ReorderPopupsWarning = db_get_b(NULL, MODULNAME, "ReorderPopupsWarning", TRUE); //disable When PopupOptions.ModuleIsEnabled = db_get_b(NULL, "Popup", "ModuleIsEnabled", TRUE); PopupOptions.DisableWhenFullscreen = db_get_b(NULL, MODULNAME, "DisableWhenFullscreen", TRUE); }
WORD __cdecl ModernGetSettingRangedWord(HANDLE hContact, const char *szModule, const char *szSetting, WORD errorValue, WORD minValue, WORD maxValue) { return DBGetContactSettingRangedWord( hContact, szModule, szSetting, errorValue, minValue, maxValue); }