summaryrefslogtreecommitdiff
path: root/plugins/Modernb/modern_clistsettings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Modernb/modern_clistsettings.cpp')
-rw-r--r--plugins/Modernb/modern_clistsettings.cpp664
1 files changed, 0 insertions, 664 deletions
diff --git a/plugins/Modernb/modern_clistsettings.cpp b/plugins/Modernb/modern_clistsettings.cpp
deleted file mode 100644
index 759b1ed8e3..0000000000
--- a/plugins/Modernb/modern_clistsettings.cpp
+++ /dev/null
@@ -1,664 +0,0 @@
-/*
-
-Miranda IM: the free IM client for Microsoft* Windows*
-
-Copyright 2000-2008 Miranda ICQ/IM project,
-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.
-*/
-#include "hdr/modern_commonheaders.h"
-#include "m_clui.h"
-#include "m_clc.h"
-#include "hdr/modern_clist.h"
-#include "hdr/modern_commonprototypes.h"
-#include "hdr/modern_awaymsg.h"
-
-void InsertContactIntoTree(HANDLE hContact,int status);
-static displayNameCacheEntry *displayNameCache;
-void CListSettings_FreeCacheItemDataOption( pdisplayNameCacheEntry pDst, DWORD flag );
-
-int PostAutoRebuidMessage(HWND hwnd);
-static int displayNameCacheSize;
-
-BOOL CLM_AUTOREBUILD_WAS_POSTED=FALSE;
-SortedList *clistCache = NULL;
-TCHAR* GetNameForContact(HANDLE hContact,int flag,boolean *isUnknown);
-char *GetProtoForContact(HANDLE hContact);
-int GetStatusForContact(HANDLE hContact,char *szProto);
-TCHAR *UnknownConctactTranslatedName=NULL;
-
-void InvalidateDNCEbyPointer(HANDLE hContact,pdisplayNameCacheEntry pdnce,int SettingType);
-
-static int handleCompare( void* c1, void* c2 )
-{
-
- INT_PTR p1, p2;
-
- displayNameCacheEntry * dnce1=(displayNameCacheEntry *)c1;
- displayNameCacheEntry * dnce2=(displayNameCacheEntry *)c2;
-
- p1=(INT_PTR)dnce1->m_cache_hContact;
- p2=(INT_PTR)dnce2->m_cache_hContact;
-
- if ( p1 == p2 )
- return 0;
-
- return (int)(p1 - p2);
-}
-
-void InitCacheAsync();
-void UninitCacheAsync();
-
-void InitDisplayNameCache(void)
-{
- int i=0;
- InitCacheAsync();
- InitAwayMsgModule();
- clistCache = li.List_Create( 0, 50 );
- clistCache->sortFunc = handleCompare;
-}
-void FreeDisplayNameCache()
-{
- UninitCacheAsync();
- UninitAwayMsgModule();
- if ( clistCache != NULL ) {
- int i;
- for ( i = 0; i < clistCache->realCount; i++) {
- pcli->pfnFreeCacheItem(( ClcCacheEntryBase* )clistCache->items[i] );
- mir_free_and_nill( clistCache->items[i] );
- }
-
- li.List_Destroy( clistCache );
- mir_free_and_nill(clistCache);
- clistCache = NULL;
- }
-}
-
-
-ClcCacheEntryBase* cliGetCacheEntry(HANDLE hContact)
-{
- ClcCacheEntryBase* p;
- int idx;
- if (!clistCache) return NULL;
- if ( !li.List_GetIndex( clistCache, &hContact, &idx )) {
- if (( p = pcli->pfnCreateCacheItem( hContact )) != NULL ) {
- li.List_Insert( clistCache, p, idx );
- pcli->pfnInvalidateDisplayNameCacheEntry( hContact );
- }
- }
- else p = ( ClcCacheEntryBase* )clistCache->items[idx];
- pcli->pfnCheckCacheItem( p );
- return p;
-}
-
-
-void CListSettings_FreeCacheItemData(pdisplayNameCacheEntry pDst)
-{
- CListSettings_FreeCacheItemDataOption( pDst, CCI_ALL);
-}
-
-void CListSettings_FreeCacheItemDataOption( pdisplayNameCacheEntry pDst, DWORD flag )
-{
- if (!pDst) return;
- if ( flag & CCI_NAME)
- {
- if (pDst->m_cache_tcsName)
- {
- if (!pDst->isUnknown && pDst->m_cache_tcsName!=UnknownConctactTranslatedName) mir_free_and_nill(pDst->m_cache_tcsName);
-
- }
- if (pDst->m_cache_szName) mir_free_and_nill(pDst->m_cache_szName);
- }
-
- if ( flag & CCI_GROUP )
- if (pDst->m_cache_tcsGroup) mir_free_and_nill(pDst->m_cache_tcsGroup);
-
- if ( flag & CCI_LINES )
- {
- if (pDst->szSecondLineText) mir_free_and_nill(pDst->szSecondLineText);
- if (pDst->szThirdLineText) mir_free_and_nill(pDst->szThirdLineText);
- pDst->ssSecondLine.DestroySmileyList();
- pDst->ssThirdLine.DestroySmileyList();
- }
-}
-
-
-int CListSettings_GetCopyFromCache(pdisplayNameCacheEntry pDest, DWORD flag);
-int CListSettings_SetToCache(pdisplayNameCacheEntry pSrc, DWORD flag);
-
-
-void CListSettings_CopyCacheItems(pdisplayNameCacheEntry pDst, pdisplayNameCacheEntry pSrc, DWORD flag)
-{
- if (!pDst||!pSrc) return;
- CListSettings_FreeCacheItemDataOption(pDst, flag);
-
- if ( flag & CCI_NAME )
- {
- pDst->isUnknown=pSrc->isUnknown;
- if (pSrc->isUnknown)
- pDst->m_cache_tcsName = pSrc->m_cache_tcsName;
- else
- pDst->m_cache_tcsName=mir_tstrdup(pSrc->m_cache_tcsName);
- pDst->m_cache_szName=mir_strdup(pSrc->m_cache_szName);
- }
- if ( flag & CCI_GROUP ) pDst->m_cache_tcsGroup=mir_tstrdup(pSrc->m_cache_tcsGroup);
- if ( flag & CCI_PROTO ) pDst->m_cache_cszProto=pSrc->m_cache_cszProto;
- if ( flag & CCI_STATUS ) pDst->m_cache_nStatus=pSrc->m_cache_nStatus;
- if ( flag & CCI_LINES )
- {
- if ( pDst->szThirdLineText ) mir_free( pDst->szThirdLineText );
- pDst->szThirdLineText = NULL;
- if ( pSrc->szThirdLineText ) pDst->szThirdLineText = mir_tstrdup( pSrc->szThirdLineText );
-
- if ( pDst->szSecondLineText ) mir_free( pDst->szSecondLineText );
- pDst->szSecondLineText = NULL;
- if ( pSrc->szSecondLineText ) pDst->szSecondLineText = mir_tstrdup( pSrc->szSecondLineText );
-
- pDst->ssThirdLine = pSrc->ssThirdLine;
- pDst->ssSecondLine = pSrc->ssSecondLine;
- }
- if ( flag & CCI_TIME)
- {
- pDst->hTimeZone=pSrc->hTimeZone;
- }
- if ( flag & CCI_OTHER)
- {
-// if ( flag & CCI_HIDDEN)
- pDst->m_cache_nHidden=pSrc->m_cache_nHidden;
-// if ( flag & CCI_NOHIDEOFFLINE)
- pDst->m_cache_nNoHiddenOffline=pSrc->m_cache_nNoHiddenOffline;
-// if ( flag & CCI_NOPROTO)
- pDst->m_cache_bProtoNotExists=pSrc->m_cache_bProtoNotExists;
-
-// if ( flag & CCI_HIDESUBCONTACT)
- pDst->m_cache_nHiddenSubcontact=pSrc->m_cache_nHiddenSubcontact;
-// if ( flag & CCI_I)
- pDst->i=pSrc->i;
-// if ( flag & CCI_APPARENT)
- pDst->ApparentMode=pSrc->ApparentMode;
-// if ( flag & CCI_NOTONLIST)
- pDst->NotOnList=pSrc->NotOnList;
-// if ( flag & CCI_IDLETS)
- pDst->IdleTS=pSrc->IdleTS;
-// if ( flag & CCI_CCONTACT)
- pDst->ClcContact=pSrc->ClcContact;
-// if ( flag & CCI_EXPAND)
- pDst->IsExpanded=pSrc->IsExpanded;
-// if ( flag & CCI_UNKNOWN)
-// pDst->isUnknown=pSrc->isUnknown;
- }
-}
-
-int CListSettings_GetCopyFromCache(pdisplayNameCacheEntry pDest, DWORD flag)
-{
- pdisplayNameCacheEntry pSource;
- if (!pDest || !pDest->m_cache_hContact) return -1;
- pSource=(pdisplayNameCacheEntry)pcli->pfnGetCacheEntry(pDest->m_cache_hContact);
- if (!pSource) return -1;
- CListSettings_CopyCacheItems(pDest, pSource, flag);
- return 0;
-}
-
-int CListSettings_SetToCache(pdisplayNameCacheEntry pSrc, DWORD flag)
-{
- pdisplayNameCacheEntry pDst;
- if (!pSrc || !pSrc->m_cache_hContact) return -1;
- pDst=(pdisplayNameCacheEntry)pcli->pfnGetCacheEntry(pSrc->m_cache_hContact);
- if (!pDst) return -1;
- CListSettings_CopyCacheItems(pDst, pSrc, flag);
- return 0;
-}
-
-void cliFreeCacheItem( pdisplayNameCacheEntry p )
-{
- HANDLE hContact=p->m_cache_hContact;
- TRACEVAR("cliFreeCacheItem hContact=%d",hContact);
- if ( !p->isUnknown && p->m_cache_tcsName && p->m_cache_tcsName!=UnknownConctactTranslatedName) mir_free_and_nill(p->m_cache_tcsName);
- p->m_cache_tcsName = NULL;
- if ( p->m_cache_szName) { mir_free_and_nill(p->m_cache_szName); p->m_cache_szName = NULL; }
- if ( p->m_cache_tcsGroup) { mir_free_and_nill(p->m_cache_tcsGroup); p->m_cache_tcsGroup = NULL; }
- if ( p->szSecondLineText) mir_free_and_nill(p->szSecondLineText);
- if ( p->szThirdLineText) mir_free_and_nill(p->szThirdLineText);
- p->ssSecondLine.DestroySmileyList();
- p->ssThirdLine.DestroySmileyList();
-}
-
-
-/*
-void FreeDisplayNameCache(SortedList *list)
-{
- int i;
- for ( i=0; i < list->realCount; i++) {
- FreeDisplayNameCacheItem(( pdisplayNameCacheEntry )list->items[i] );
- mir_free_and_nill(list->items[i]);
- }
- li.List_Destroy(list);
-
-}
-*/
-void cliCheckCacheItem(pdisplayNameCacheEntry pdnce)
-{
- if (pdnce!=NULL)
- {
- if (pdnce->m_cache_hContact==NULL) //selfcontact
- {
- if (!pdnce->m_cache_tcsName) pdnce->m_cache_tcsName=GetNameForContact(pdnce->m_cache_hContact,0,&pdnce->isUnknown);
- if (!pdnce->m_cache_szName) pdnce->m_cache_szName=mir_t2a(pdnce->m_cache_tcsName);
- return;
- }
- if (pdnce->m_cache_cszProto==NULL&&pdnce->m_cache_bProtoNotExists==FALSE)
- {
- pdnce->m_cache_cszProto=GetProtoForContact(pdnce->m_cache_hContact);
- if (pdnce->m_cache_cszProto==NULL)
- {
- pdnce->m_cache_bProtoNotExists=FALSE;
- }else
- {
- if (CallService(MS_PROTO_ISPROTOCOLLOADED,0,(LPARAM)pdnce->m_cache_cszProto)==(int)NULL &&0)
- {
- pdnce->m_cache_bProtoNotExists=TRUE;
- }else
- {
- if(pdnce->m_cache_cszProto&&pdnce->m_cache_tcsName)
- {
- if (!pdnce->isUnknown && pdnce->m_cache_tcsName!=UnknownConctactTranslatedName)
- mir_free_and_nill(pdnce->m_cache_tcsName);
- pdnce->m_cache_tcsName=NULL;
- }
- }
- }
- }
-
- if (pdnce->m_cache_tcsName==NULL)
- {
- if (pdnce->m_cache_bProtoNotExists || !pdnce->m_cache_cszProto)
- {
- pdnce->m_cache_tcsName=UnknownConctactTranslatedName;
- pdnce->isUnknown=TRUE;
- }
- else
- {
- if (!pdnce->isUnknown && pdnce->m_cache_tcsName &&pdnce->m_cache_tcsName!=UnknownConctactTranslatedName) mir_free_and_nill (pdnce->m_cache_tcsName);
- if (g_flag_bOnModulesLoadedCalled)
- pdnce->m_cache_tcsName = GetNameForContact(pdnce->m_cache_hContact,0,&pdnce->isUnknown); //TODO UNICODE
- else
- // what to return here???
- pdnce->m_cache_tcsName = GetNameForContact(pdnce->m_cache_hContact,0,&pdnce->isUnknown); //TODO UNICODE
- }
- if (pdnce->m_cache_szName) mir_free_and_nill(pdnce->m_cache_szName);
- }
- else
- {
- if (pdnce->isUnknown&&pdnce->m_cache_cszProto&&pdnce->m_cache_bProtoNotExists==TRUE&&g_flag_bOnModulesLoadedCalled)
- {
- if (CallService(MS_PROTO_ISPROTOCOLLOADED,0,(LPARAM)pdnce->m_cache_cszProto)==(int)NULL)
- {
- pdnce->m_cache_bProtoNotExists=FALSE;
- pdnce->m_cache_tcsName= GetNameForContact(pdnce->m_cache_hContact,0,&pdnce->isUnknown); //TODO UNICODE
- }
- }
- }
-
- if (pdnce___GetStatus( pdnce )==0) //very strange look status sort is broken let always reread status
- {
- pdnce___SetStatus( pdnce , GetStatusForContact(pdnce->m_cache_hContact,pdnce->m_cache_cszProto));
- }
- if (pdnce->m_cache_tcsGroup==NULL)
- {
- DBVARIANT dbv={0};
-
- if (!ModernGetSettingTString(pdnce->m_cache_hContact,"CList","Group",&dbv))
- {
- pdnce->m_cache_tcsGroup=mir_tstrdup(dbv.ptszVal);
- //mir_free_and_nill(dbv.ptszVal);
- ModernDBFreeVariant(&dbv);
- }else
- {
- pdnce->m_cache_tcsGroup=mir_tstrdup(TEXT(""));
- }
-
- }
- if (pdnce->m_cache_nHidden==-1)
- {
- pdnce->m_cache_nHidden=ModernGetSettingByte(pdnce->m_cache_hContact,"CList","Hidden",0);
- }
- //if (pdnce->HiddenSubcontact==-1)
- //{
- pdnce->m_cache_nHiddenSubcontact=g_szMetaModuleName && ModernGetSettingByte(pdnce->m_cache_hContact,g_szMetaModuleName,"IsSubcontact",0);
- //pdnce->HiddenSubcontact=ServiceExists(MS_MC_GETMETACONTACT) && CallService(MS_MC_GETMETACONTACT, (WPARAM)pdnce->hContact, 0) != 0;
- //};
-
- if (pdnce->m_cache_nNoHiddenOffline==-1)
- {
- pdnce->m_cache_nNoHiddenOffline=ModernGetSettingByte(pdnce->m_cache_hContact,"CList","noOffline",0);
- }
-
- if (pdnce->IdleTS==-1)
- {
- pdnce->IdleTS=ModernGetSettingDword(pdnce->m_cache_hContact,pdnce->m_cache_cszProto,"IdleTS",0);
- };
-
- if (pdnce->ApparentMode==-1)
- {
- pdnce->ApparentMode=ModernGetSettingWord(pdnce->m_cache_hContact,pdnce->m_cache_cszProto,"ApparentMode",0);
- };
- if (pdnce->NotOnList==-1)
- {
- pdnce->NotOnList=ModernGetSettingByte(pdnce->m_cache_hContact,"CList","NotOnList",0);
- };
-
- if (pdnce->IsExpanded==-1)
- {
- pdnce->IsExpanded=ModernGetSettingByte(pdnce->m_cache_hContact,"CList","Expanded",0);
- }
- if (pdnce->dwLastMsgTime==0)
- {
- pdnce->dwLastMsgTime=ModernGetSettingDword(pdnce->m_cache_hContact, "CList", "mf_lastmsg", 0);
- if (pdnce->dwLastMsgTime==0) pdnce->dwLastMsgTime=CompareContacts2_getLMTime(pdnce->m_cache_hContact);
- }
- if (!pdnce->m_cache_szName) pdnce->m_cache_szName=mir_t2a(pdnce->m_cache_tcsName);
- }
-}
-
-void IvalidateDisplayNameCache(DWORD mode)
-{
- if ( clistCache != NULL )
- {
- int i;
- for ( i = 0; i < clistCache->realCount; i++)
- {
- PDNCE pdnce=(PDNCE)clistCache->items[i];
- if (mode&16)
- {
- InvalidateDNCEbyPointer(pdnce->m_cache_hContact,pdnce,16);
- }
- }
- }
-}
-
-void InvalidateDNCEbyPointer(HANDLE hContact,pdisplayNameCacheEntry pdnce,int SettingType)
-{
- if (hContact==NULL) return;
- if (pdnce==NULL) return;
-
- if (pdnce)
- {
- if (SettingType==16)
- {
- pdnce->ssSecondLine.DestroySmileyList();
- if (pdnce->szSecondLineText) mir_free_and_nill(pdnce->szSecondLineText);
- pdnce->ssThirdLine.DestroySmileyList();
- if (pdnce->szThirdLineText) mir_free_and_nill(pdnce->szThirdLineText);
- pdnce->ssSecondLine.iMaxSmileyHeight=0;
- pdnce->ssThirdLine.iMaxSmileyHeight=0;
- pdnce->hTimeZone=NULL;
- pdnce->dwLastMsgTime=0;//CompareContacts2_getLMTime(pdnce->hContact);
- Cache_GetTimezone(NULL,pdnce->m_cache_hContact);
- SettingType&=~16;
- }
-
- if (SettingType==-1||SettingType==DBVT_DELETED)
- {
- if (pdnce->m_cache_tcsName && !pdnce->isUnknown) mir_free_and_nill(pdnce->m_cache_tcsName);
- pdnce->m_cache_tcsName=NULL;
- if (pdnce->m_cache_tcsGroup) mir_free_and_nill(pdnce->m_cache_tcsGroup);
- // if (pdnce->szProto) mir_free_and_nill(pdnce->szProto); //free proto
- pdnce->m_cache_tcsGroup=NULL;
-
- pdnce->m_cache_nHidden=-1;
- pdnce->m_cache_nHiddenSubcontact=-1;
- pdnce->m_cache_bProtoNotExists=FALSE;
- pdnce->m_cache_cszProto=NULL;
- pdnce___SetStatus( pdnce , 0 );
- pdnce->IdleTS=-1;
- pdnce->ApparentMode=-1;
- pdnce->NotOnList=-1;
- pdnce->isUnknown=FALSE;
- pdnce->m_cache_nNoHiddenOffline=-1;
- pdnce->IsExpanded=-1;
- return;
- }
- if (SettingType>=DBVT_WCHAR)
- {
- if (pdnce->m_cache_tcsName && !pdnce->isUnknown) mir_free_and_nill(pdnce->m_cache_tcsName);
- if (pdnce->m_cache_tcsGroup) mir_free_and_nill(pdnce->m_cache_tcsGroup);
- //if (pdnce->szProto) mir_free_and_nill(pdnce->szProto);
- pdnce->m_cache_tcsName=NULL;
- pdnce->m_cache_tcsGroup=NULL;
- pdnce->m_cache_cszProto=NULL;
- return;
- }
- // in other cases clear all binary cache
- pdnce->m_cache_nHidden=-1;
- pdnce->m_cache_nHiddenSubcontact=-1;
- pdnce->m_cache_bProtoNotExists=FALSE;
- pdnce___SetStatus( pdnce , 0 );
- pdnce->IdleTS=-1;
- pdnce->ApparentMode=-1;
- pdnce->NotOnList=-1;
- pdnce->isUnknown=FALSE;
- pdnce->m_cache_nNoHiddenOffline=-1;
- pdnce->IsExpanded=-1;
- pdnce->dwLastMsgTime=0;//CompareContacts2_getLMTime(pdnce->hContact);
- };
-};
-
-char *GetContactCachedProtocol(HANDLE hContact)
-{
- pdisplayNameCacheEntry cacheEntry=NULL;
- cacheEntry=(pdisplayNameCacheEntry)pcli->pfnGetCacheEntry(hContact);
- if (cacheEntry&&cacheEntry->m_cache_cszProto) return cacheEntry->m_cache_cszProto;
-
- return (NULL);
-}
-
-char* GetProtoForContact(HANDLE hContact)
-{
- return (char*)CallService(MS_PROTO_GETCONTACTBASEACCOUNT,(WPARAM)hContact,0);
-}
-
-int GetStatusForContact(HANDLE hContact,char *szProto)
-{
- if (szProto)
- return (int)(ModernGetSettingWord((HANDLE)hContact,szProto,"Status",ID_STATUS_OFFLINE));
- else
- return (ID_STATUS_OFFLINE);
-}
-
-TCHAR* GetNameForContact(HANDLE hContact,int flag,boolean *isUnknown)
-{
- TCHAR* result = pcli->pfnGetContactDisplayName(hContact, flag | GCDNF_NOCACHE);
- BOOL itUnknown;
- if (UnknownConctactTranslatedName == NULL)
- UnknownConctactTranslatedName = TranslateT("(Unknown Contact)");
- itUnknown=lstrcmp(result ,UnknownConctactTranslatedName) == 0;
- if (itUnknown) {
- mir_free(result);
- result=UnknownConctactTranslatedName;
- }
- if (isUnknown) {
- *isUnknown = itUnknown;
- }
-
- return (result);
-}
-
-int GetContactInfosForSort(HANDLE hContact,char **Proto,TCHAR **Name,int *Status)
-{
- pdisplayNameCacheEntry cacheEntry=NULL;
- cacheEntry=(pdisplayNameCacheEntry)pcli->pfnGetCacheEntry(hContact);
- if (cacheEntry!=NULL)
- {
- if (Proto!=NULL) *Proto=cacheEntry->m_cache_cszProto;
- if (Name!=NULL) *Name=cacheEntry->m_cache_tcsName;
- if (Status!=NULL) *Status=pdnce___GetStatus( cacheEntry );
- }
- return (0);
-};
-
-
-int GetContactCachedStatus(HANDLE hContact)
-{
- pdisplayNameCacheEntry cacheEntry=NULL;
- cacheEntry=(pdisplayNameCacheEntry)pcli->pfnGetCacheEntry(hContact);
- return pdnce___GetStatus( cacheEntry );
-}
-
-int ContactAdded(WPARAM wParam,LPARAM lParam)
-{
- if (MirandaExiting()) return 0;
- cli_ChangeContactIcon((HANDLE)wParam,ExtIconFromStatusMode((HANDLE)wParam,(char*)GetContactCachedProtocol((HANDLE)wParam),ID_STATUS_OFFLINE),1); ///by FYR
- pcli->pfnSortContacts();
- return 0;
-}
-
-int ContactSettingChanged(WPARAM wParam,LPARAM lParam)
-{
- DBCONTACTWRITESETTING *cws = (DBCONTACTWRITESETTING*)lParam;
- DBVARIANT dbv={0};
- pdisplayNameCacheEntry pdnce;
- if (MirandaExiting() || !pcli || !clistCache || (HANDLE)wParam == NULL) return 0;
-
- dbv.pszVal = NULL;
- pdnce=(pdisplayNameCacheEntry)pcli->pfnGetCacheEntry((HANDLE)wParam);
-
- if (pdnce==NULL)
- {
- TRACE("!!! Very bad pdnce not found.");
- //if (dbv.pszVal) mir_free_and_nill(dbv.pszVal);
- return 0;
- }
- if (pdnce->m_cache_bProtoNotExists==FALSE && pdnce->m_cache_cszProto)
- {
- if (!strcmp(cws->szModule,pdnce->m_cache_cszProto))
- {
- InvalidateDNCEbyPointer((HANDLE)wParam,pdnce,cws->value.type);
-
- if (!strcmp(cws->szSetting,"IsSubcontact"))
- {
- PostMessage(pcli->hwndContactTree,CLM_AUTOREBUILD,0,0);
- }
- if (!mir_strcmp(cws->szSetting, "Status") ||
- wildcmp((char*)cws->szSetting, (char*) "Status?",2))
- {
-
- if (g_szMetaModuleName && !mir_strcmp(cws->szModule,g_szMetaModuleName) && mir_strcmp(cws->szSetting, "Status"))
- {
- int res=0;
- //InvalidateDisplayNameCacheEntryByPDNE((HANDLE)wParam,pdnce,cws->value.type);
- if (pcli->hwndContactTree && g_flag_bOnModulesLoadedCalled)
- res=PostAutoRebuidMessage(pcli->hwndContactTree);
- if ((ModernGetSettingWord(NULL,"CList","SecondLineType",SETTING_SECONDLINE_TYPE_DEFAULT)==TEXT_STATUS_MESSAGE||ModernGetSettingWord(NULL,"CList","ThirdLineType",SETTING_THIRDLINE_TYPE_DEFAULT)==TEXT_STATUS_MESSAGE) &&pdnce->m_cache_hContact && pdnce->m_cache_cszProto)
- {
- // if (pdnce->status!=ID_STATUS_OFFLINE)
- amRequestAwayMsg((HANDLE)wParam);
- }
- ModernDBFreeVariant(&dbv);
- return 0;
- }
- if (!(pdnce->m_cache_nHidden==1))
- {
- pdnce___SetStatus( pdnce , cws->value.wVal ); //dont use direct set
- if (cws->value.wVal == ID_STATUS_OFFLINE)
- {
- if (g_CluiData.bRemoveAwayMessageForOffline)
- {
- ModernWriteSettingString((HANDLE)wParam,"CList","StatusMsg","");
- }
- }
- if ((ModernGetSettingWord(NULL,"CList","SecondLineType",0)==TEXT_STATUS_MESSAGE||ModernGetSettingWord(NULL,"CList","ThirdLineType",0)==TEXT_STATUS_MESSAGE) &&pdnce->m_cache_hContact && pdnce->m_cache_cszProto)
- {
- // if (pdnce->status!=ID_STATUS_OFFLINE)
- amRequestAwayMsg((HANDLE)wParam);
- }
- pcli->pfnClcBroadcast( INTM_STATUSCHANGED,wParam,0);
- cli_ChangeContactIcon((HANDLE)wParam, ExtIconFromStatusMode((HANDLE)wParam,cws->szModule, cws->value.wVal), 0); //by FYR
- pcli->pfnSortContacts();
- }
- else
- {
- if (!(!mir_strcmp(cws->szSetting, "LogonTS")
- ||!mir_strcmp(cws->szSetting, "TickTS")
- ||!mir_strcmp(cws->szSetting, "InfoTS")
- ))
- {
- pcli->pfnSortContacts();
- }
- ModernDBFreeVariant(&dbv);
- return 0;
- }
- }
- }
-
- if (!strcmp(cws->szModule,"CList"))
- {
- //name is null or (setting is myhandle)
- if (!strcmp(cws->szSetting,"Rate"))
- {
- pcli->pfnClcBroadcast(CLM_AUTOREBUILD, 0, 0);
- }
- else if (pdnce->m_cache_tcsName==NULL || !strcmp(cws->szSetting,"MyHandle"))
- {
- InvalidateDNCEbyPointer((HANDLE)wParam,pdnce,cws->value.type);
- }
- else if (!strcmp(cws->szSetting,"Group"))
- {
- InvalidateDNCEbyPointer((HANDLE)wParam,pdnce,cws->value.type);
- }
- else if (!strcmp(cws->szSetting,"Hidden"))
- {
- InvalidateDNCEbyPointer((HANDLE)wParam,pdnce,cws->value.type);
- if(cws->value.type==DBVT_DELETED || cws->value.bVal==0)
- {
- char *szProto=(char*)CallService(MS_PROTO_GETCONTACTBASEPROTO,wParam,0);
- // ChangeContactIcon((HANDLE)wParam,IconFromStatusMode(szProto,szProto==NULL?ID_STATUS_OFFLINE:DBGetContactSettingWord((HANDLE)wParam,szProto,"Status",ID_STATUS_OFFLINE)),1);
- cli_ChangeContactIcon((HANDLE)wParam,ExtIconFromStatusMode((HANDLE)wParam,szProto,szProto==NULL?ID_STATUS_OFFLINE:ModernGetSettingWord((HANDLE)wParam,szProto,"Status",ID_STATUS_OFFLINE)),1); //by FYR
- }
- pcli->pfnClcBroadcast(CLM_AUTOREBUILD,0, 0);
- }
- else if (!strcmp(cws->szSetting,"noOffline"))
- {
- InvalidateDNCEbyPointer((HANDLE)wParam,pdnce,cws->value.type);
- pcli->pfnClcBroadcast(CLM_AUTOREBUILD,0, 0);
- }
- }
- else if (!strcmp(cws->szModule,"Protocol"))
- {
- if (!strcmp(cws->szSetting,"p"))
- {
- char *szProto;
- InvalidateDNCEbyPointer((HANDLE)wParam,pdnce,cws->value.type);
- if(cws->value.type==DBVT_DELETED) szProto=NULL;
- else szProto=cws->value.pszVal;
- cli_ChangeContactIcon((HANDLE)wParam,ExtIconFromStatusMode((HANDLE)wParam,szProto,szProto==NULL?ID_STATUS_OFFLINE:ModernGetSettingWord((HANDLE)wParam,szProto,"Status",ID_STATUS_OFFLINE)),0); //by FYR
- }
- }
- // Clean up
- ModernDBFreeVariant(&dbv);
- //if (dbv.pszVal)
- // mir_free_and_nill(dbv.pszVal);
- }
-
- return 0;
-}
-
-int PostAutoRebuidMessage(HWND hwnd)
-{
- if (!CLM_AUTOREBUILD_WAS_POSTED)
- CLM_AUTOREBUILD_WAS_POSTED=PostMessage(hwnd,CLM_AUTOREBUILD,0,0);
- return CLM_AUTOREBUILD_WAS_POSTED;
-}