WORD CSkinnedProfile::SpiGetSkinWord( HANDLE hContact, const char * szSection, const char * szKey, const WORD defValue ) { if ( hContact ) return ModernGetSettingWord( hContact, szSection, szKey, defValue ); //per-contact settings are not skinnablr at all CAutoCriticalSection Lock( SkinProfile()->_Lock, true ); ValueVariant* value = SkinProfile()->_GetValue( szSection, szKey ); if ( value == NULL ) // not skinned => return DB return ModernGetSettingWord( hContact, szSection, szKey, defValue ); else if ( !value->IsEmpty() ) return value->GetWord(); return defValue; // skinned but empty => return default value }
INT_PTR GetContactIcon(WPARAM wParam,LPARAM lParam) { char *szProto; int status; int res; szProto = (char *) CallService(MS_PROTO_GETCONTACTBASEPROTO, wParam, 0); if (szProto == NULL) status = ID_STATUS_OFFLINE; else status = ModernGetSettingWord((HANDLE) wParam, szProto, "Status", ID_STATUS_OFFLINE); res=ExtIconFromStatusMode((HANDLE)wParam,szProto,szProto==NULL?ID_STATUS_OFFLINE:status); //by FYR if (lParam==0 && res!=-1) res&=0xFFFF; return res; }
static int ehhToolBarBackgroundSettingsChanged(WPARAM wParam, LPARAM lParam) { if(tbdat.mtb_hBmpBackground) { DeleteObject(tbdat.mtb_hBmpBackground); tbdat.mtb_hBmpBackground=NULL; } if (g_CluiData.fDisableSkinEngine) { DBVARIANT dbv; tbdat.mtb_bkColour=sttGetColor("ToolBar","BkColour",CLCDEFAULT_BKCOLOUR); if(ModernGetSettingByte(NULL,"ToolBar","UseBitmap",CLCDEFAULT_USEBITMAP)) { if(!ModernGetSettingString(NULL,"ToolBar","BkBitmap",&dbv)) { tbdat.mtb_hBmpBackground=(HBITMAP)CallService(MS_UTILS_LOADBITMAP,0,(LPARAM)dbv.pszVal); ModernDBFreeVariant(&dbv); } } tbdat.mtb_useWinColors = ModernGetSettingByte(NULL, "ToolBar", "UseWinColours", CLCDEFAULT_USEWINDOWSCOLOURS); tbdat.mtb_backgroundBmpUse = ModernGetSettingWord(NULL, "ToolBar", "BkBmpUse", CLCDEFAULT_BKBMPUSE); } PostMessage(pcli->hwndContactList,WM_SIZE,0,0); return 0; }
static void _AniAva_LoadOptions() { aacheck; aalock; { AniAva.bFlags= (ModernGetSettingByte(NULL,"CList","AvatarsDrawBorders",SETTINGS_AVATARDRAWBORDER_DEFAULT)? AAO_HAS_BORDER :0) | (ModernGetSettingByte(NULL,"CList","AvatarsRoundCorners",SETTINGS_AVATARROUNDCORNERS_DEFAULT)? AAO_ROUND_CORNERS :0) | (ModernGetSettingByte(NULL,"CList","AvatarsDrawOverlay",SETTINGS_AVATARDRAWOVERLAY_DEFAULT)? AAO_HAS_OVERLAY :0) | ( (0) ? AAO_OPAQUE :0); if (AniAva.bFlags & AAO_HAS_BORDER) AniAva.borderColor=(COLORREF)ModernGetSettingDword(NULL,"CList","AvatarsBorderColor",SETTINGS_AVATARBORDERCOLOR_DEFAULT);; if (AniAva.bFlags & AAO_ROUND_CORNERS) AniAva.cornerRadius=ModernGetSettingByte(NULL,"CList","AvatarsUseCustomCornerSize",SETTINGS_AVATARUSECUTOMCORNERSIZE_DEFAULT)? ModernGetSettingWord(NULL,"CList","AvatarsCustomCornerSize",SETTINGS_AVATARCORNERSIZE_DEFAULT) : 0; if (AniAva.bFlags & AAO_HAS_OVERLAY) { //check image list BYTE type=ModernGetSettingByte(NULL,"CList","AvatarsOverlayType",SETTINGS_AVATAROVERLAYTYPE_DEFAULT); switch(type) { case SETTING_AVATAR_OVERLAY_TYPE_NORMAL: AniAva.overlayIconImageList=hAvatarOverlays; break; case SETTING_AVATAR_OVERLAY_TYPE_PROTOCOL: case SETTING_AVATAR_OVERLAY_TYPE_CONTACT: AniAva.overlayIconImageList=g_himlCListClc; break; default: AniAva.overlayIconImageList=NULL; } } if (AniAva.bFlags & AAO_OPAQUE) AniAva.bkgColor=0; AniAva.bSeparateWindow = ModernGetSettingByte(NULL,"CList","AvatarsInSeparateWnd",SETTINGS_AVATARINSEPARATE_DEFAULT); } aaunlock; }
int __fastcall CLVM_GetContactHiddenStatus(HANDLE hContact, char *szProto, struct ClcData *dat) { int dbHidden = ModernGetSettingByte(hContact, "CList", "Hidden", 0); // default hidden state, always respect it. int filterResult = 1; DBVARIANT dbv = {0}; char szTemp[64]; TCHAR szGroupMask[256]; DWORD dwLocalMask; PDNCE pdnce=(PDNCE)pcli->pfnGetCacheEntry(hContact); BOOL fEmbedded=dat->force_in_dialog; // always hide subcontacts (but show them on embedded contact lists) if(g_CluiData.bMetaAvail && dat != NULL && dat->IsMetaContactsEnabled && g_szMetaModuleName && ModernGetSettingByte(hContact, g_szMetaModuleName, "IsSubcontact", 0)) return -1; //subcontact if (pdnce && pdnce->isUnknown && !fEmbedded) return 1; //'Unknown Contact' if(pdnce && g_CluiData.bFilterEffective && !fEmbedded) { if(szProto == NULL) szProto = (char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0); // check stickies first (priority), only if we really have stickies defined (CLVM_STICKY_CONTACTS is set). if(g_CluiData.bFilterEffective & CLVM_STICKY_CONTACTS) { if((dwLocalMask = ModernGetSettingDword(hContact, CLVM_MODULE, g_CluiData.current_viewmode, 0)) != 0) { if(g_CluiData.bFilterEffective & CLVM_FILTER_STICKYSTATUS) { WORD wStatus = ModernGetSettingWord(hContact, szProto, "Status", ID_STATUS_OFFLINE); return !((1 << (wStatus - ID_STATUS_OFFLINE)) & HIWORD(dwLocalMask)); } return 0; } } // check the proto, use it as a base filter result for all further checks if(g_CluiData.bFilterEffective & CLVM_FILTER_PROTOS) { mir_snprintf(szTemp, SIZEOF(szTemp), "%s|", szProto); filterResult = strstr(g_CluiData.protoFilter, szTemp) ? 1 : 0; } if(g_CluiData.bFilterEffective & CLVM_FILTER_GROUPS) { if(!ModernGetSettingTString(hContact, "CList", "Group", &dbv)) { mir_sntprintf(szGroupMask, SIZEOF(szGroupMask), _T("%s|"), &dbv.ptszVal[0]); filterResult = (g_CluiData.filterFlags & CLVM_PROTOGROUP_OP) ? (filterResult | (_tcsstr(g_CluiData.groupFilter, szGroupMask) ? 1 : 0)) : (filterResult & (_tcsstr(g_CluiData.groupFilter, szGroupMask) ? 1 : 0)); mir_free(dbv.ptszVal); } else if(g_CluiData.filterFlags & CLVM_INCLUDED_UNGROUPED) filterResult = (g_CluiData.filterFlags & CLVM_PROTOGROUP_OP) ? filterResult : filterResult & 1; else filterResult = (g_CluiData.filterFlags & CLVM_PROTOGROUP_OP) ? filterResult : filterResult & 0; } if(g_CluiData.bFilterEffective & CLVM_FILTER_STATUS) { WORD wStatus = ModernGetSettingWord(hContact, szProto, "Status", ID_STATUS_OFFLINE); filterResult = (g_CluiData.filterFlags & CLVM_GROUPSTATUS_OP) ? ((filterResult | ((1 << (wStatus - ID_STATUS_OFFLINE)) & g_CluiData.statusMaskFilter ? 1 : 0))) : (filterResult & ((1 << (wStatus - ID_STATUS_OFFLINE)) & g_CluiData.statusMaskFilter ? 1 : 0)); } if(g_CluiData.bFilterEffective & CLVM_FILTER_LASTMSG) { DWORD now; PDNCE pdnce=(PDNCE)pcli->pfnGetCacheEntry(hContact); if (pdnce) { now = g_CluiData.t_now; now -= g_CluiData.lastMsgFilter; if(g_CluiData.bFilterEffective & CLVM_FILTER_LASTMSG_OLDERTHAN) filterResult = filterResult & (pdnce->dwLastMsgTime < now); else if(g_CluiData.bFilterEffective & CLVM_FILTER_LASTMSG_NEWERTHAN) filterResult = filterResult & (pdnce->dwLastMsgTime > now); } } return (dbHidden | !filterResult); } else return dbHidden; }