Exemplo n.º 1
0
int FillFavoritesMenu (HMENU hMenu,int iLimit)
{
	int i, iItems=0;
	char szBuffer[256]={0};
	TCHAR *pszBuffer=NULL;

	for(i=0;i < iLimit; i++)
	{
		if(IsMarkedUserDefSession(i))
		{
			mir_snprintf(szBuffer, SIZEOF(szBuffer), "%s_%u", "UserSessionDsc", i);
			pszBuffer = DBGetStringT(NULL, __INTERNAL_NAME, szBuffer);
			if ((pszBuffer = DBGetStringT(NULL, __INTERNAL_NAME, szBuffer)))
			{
				AppendMenu(hMenu,MF_STRING,i+1,pszBuffer);
				iItems++;
				//TODO: test this
				mir_free(pszBuffer);
				pszBuffer=NULL;
			}
		}
	}
	if(pszBuffer) mir_free(pszBuffer);
	return iItems;
}
Exemplo n.º 2
0
int LoadSessionToCombobox (HWND hdlg,BOOL mode,int iLimit,char* pszSetting,int iFirstNum)
{
	int ses_count=iFirstNum,i, index;
	char szBuffer[256]={0};
	TCHAR *pszBuffer=NULL;
	if(session_list_recovered[0]&&!iFirstNum&&!mode)
	{
		index = SendDlgItemMessage(hdlg, IDC_LIST, CB_ADDSTRING, 0, (LPARAM)TranslateT("Session Before Last Crash"));
		SendDlgItemMessage(hdlg, IDC_LIST, CB_SETITEMDATA, (WPARAM)index, (LPARAM) 256);
	}
	for(i=0;i < iLimit; i++)
	{
		mir_snprintf(szBuffer, SIZEOF(szBuffer), "%s_%u", pszSetting, i);
		pszBuffer = DBGetStringT(NULL, __INTERNAL_NAME, szBuffer);
		if (pszBuffer)
		{
			if(!IsMarkedUserDefSession(i+iFirstNum)||mode==1)
			{
				index = SendDlgItemMessage(hdlg, IDC_LIST, CB_ADDSTRING, 0, (LPARAM)pszBuffer);
				SendDlgItemMessage(hdlg, IDC_LIST, CB_SETITEMDATA, (WPARAM)index, (LPARAM) (DWORD)i+iFirstNum);
			}
			else
			{
				SendDlgItemMessage(hdlg, IDC_LIST, CB_INSERTSTRING, 0, (LPARAM)pszBuffer);
				SendDlgItemMessage(hdlg, IDC_LIST, CB_SETITEMDATA, (WPARAM)0, (LPARAM) (DWORD)i+iFirstNum);
			}
			mir_free(pszBuffer);
			pszBuffer=NULL;
		}
		else
		{
			if (i==0) ses_count=iLimit-iFirstNum;
			break;
		}
	}
	if(pszBuffer)mir_free(pszBuffer);
	return ses_count;
}
Exemplo n.º 3
0
struct ClcGroup *AddGroup(HWND hwnd,struct ClcData *dat,const TCHAR *szName,DWORD flags,int groupId,int calcTotalMembers)
{
	TCHAR *pBackslash,*pNextField,szThisField[120-MAXEXTRACOLUMNS];
  TCHAR *HiddenGroup=NULL;
	struct ClcGroup *group=&dat->list;
	int i,compareResult;

	ClearRowByIndexCache();	
	dat->NeedResort=1;

    if (GetWindowLong(hwnd,GWL_STYLE)&CLS_USEGROUPS)                            //groups is using
        if (ServiceExists(MS_MC_GETDEFAULTCONTACT))                             //metacontacts dll is loaded  
            if (DBGetContactSettingByte(NULL,"MetaContacts","Enabled",1));      //and enabled
        {
            HiddenGroup=DBGetStringT(NULL,"MetaContacts","HiddenGroupName");   //TODO: UNICODE + Hidden groupname
           // if (!HiddenGroup) strdup("MetaContacts Hidden Group"); 
            if (szName && HiddenGroup)
            if (!lstrcmp(HiddenGroup,szName))                                    //group is metahidden
            {   
                if (HiddenGroup) mir_free(HiddenGroup);
                return NULL;
            }
        }
    if (HiddenGroup) mir_free(HiddenGroup);
            

	if(!(GetWindowLong(hwnd,GWL_STYLE)&CLS_USEGROUPS)) return &dat->list;
	pNextField=(TCHAR*)szName;
	do {
		pBackslash=_tcschr(pNextField,'\\');
		if(pBackslash==NULL) {
			lstrcpyn(szThisField,pNextField,sizeof(szThisField));
			pNextField=NULL;
		}
		else {
			lstrcpyn(szThisField,pNextField,min(sizeof(szThisField),pBackslash-pNextField+1));
			pNextField=pBackslash+1;
		}
		compareResult=1;
		for(i=0;i<group->contactCount;i++) {
			if(group->contact[i].type==CLCIT_CONTACT) break;
			if(group->contact[i].type!=CLCIT_GROUP) continue;
			compareResult=lstrcmp(szThisField,group->contact[i].szText);
			if(compareResult==0) {
				if(pNextField==NULL && flags!=(DWORD)-1) {
					group->contact[i].groupId=(WORD)groupId;
					group=group->contact[i].group;
					group->expanded=(flags&GROUPF_EXPANDED)!=0;
					group->hideOffline=(flags&GROUPF_HIDEOFFLINE)!=0;
					group->groupId=groupId;
				}
				else group=group->contact[i].group;
				break;
			}
			if(pNextField==NULL && group->contact[i].groupId==0) break;
			if(groupId && group->contact[i].groupId>groupId) break;
		}
		if(compareResult) {
            if(groupId==0) 
                {
                  return NULL;
                  groupId=lastGroupId++;      
                }//return NULL;
			i=AddItemToGroup(group,i);
			group->contact[i].type=CLCIT_GROUP;
      if (group->contact[i].szText) mir_free(group->contact[i].szText);
			group->contact[i].szText=mir_strdupT(szThisField);
			group->contact[i].groupId=(WORD)(pNextField?0:groupId);
			group->contact[i].group=(struct ClcGroup*)mir_alloc(sizeof(struct ClcGroup));
			ZeroMemory(group->contact[i].group, sizeof(struct ClcGroup));
			group->contact[i].group->parent=group;
			group=group->contact[i].group;
			group->allocedCount=group->contactCount=0;
			group->contact=NULL;
			if(flags==(DWORD)-1 || pNextField!=NULL) {
				group->expanded=0;
				group->hideOffline=0;
			}
			else {
				group->expanded=(flags&GROUPF_EXPANDED)!=0;
				group->hideOffline=(flags&GROUPF_HIDEOFFLINE)!=0;
			}
			group->groupId=pNextField?0:groupId;
			group->totalMembers=0;
			if(flags!=(DWORD)-1 && pNextField==NULL && calcTotalMembers) {
				HANDLE hContact;
				//DBVARIANT dbv;
				int tick;
				DWORD style=GetWindowLong(hwnd,GWL_STYLE);
				hContact=(HANDLE)CallService(MS_DB_CONTACT_FINDFIRST,0,0);
				tick=GetTickCount();
				while(hContact) {
					pdisplayNameCacheEntry cacheEntry;
					cacheEntry=GetContactFullCacheEntry(hContact);

					if(cacheEntry->szGroup!=NULL&&lstrlen(cacheEntry->szGroup)!=0) {
						if(!lstrcmp(cacheEntry->szGroup,szName) && (style&CLS_SHOWHIDDEN || !cacheEntry->Hidden))
							group->totalMembers++;
						//mir_free(dbv.pszVal);
					}
					hContact=(HANDLE)CallService(MS_DB_CONTACT_FINDNEXT,(WPARAM)hContact,0);
				}
#ifdef _DEBUG
        {
          char buf[255];
				tick=GetTickCount()-tick;
				sprintf(buf,"AddGroup Finds %d\r\n",tick);
				TRACE(buf);
        }
#endif
			}
		}
	} while(pNextField);
	
	ClearRowByIndexCache();
	return group;
}