You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
2.4 KiB
140 lines
2.4 KiB
/* ----------------------------------------------------------------------
|
|
|
|
Copyright (c) 1996, Microsoft Corporation
|
|
All rights reserved
|
|
|
|
stiderc.c
|
|
|
|
---------------------------------------------------------------------- */
|
|
|
|
#include "precomp.h"
|
|
|
|
#include "global.h"
|
|
#include "dirlist.h"
|
|
|
|
UINT gfOprahMode = 0;
|
|
|
|
|
|
VOID static _GetPsz(LPTSTR * ppsz, PTCHAR pszDest)
|
|
{
|
|
PTCHAR pch = *ppsz;
|
|
|
|
while (_T('\0') != *pch)
|
|
{
|
|
*pszDest++ = (*pch++)-1;
|
|
}
|
|
*pszDest = _T('\0');
|
|
*ppsz = pch+1;
|
|
}
|
|
|
|
|
|
PTCHAR static _NextWord(PTCHAR pch)
|
|
{
|
|
pch = (PTCHAR) _StrChr(pch, _T(','));
|
|
if (NULL != pch)
|
|
{
|
|
*pch = _T('\0');
|
|
pch++;
|
|
}
|
|
return pch;
|
|
}
|
|
|
|
|
|
HRESULT OprahDirectory(CDirListView* pdlv)
|
|
{
|
|
HRSRC hRes;
|
|
PVOID pData;
|
|
LPTSTR psz;
|
|
PTCHAR pch;
|
|
TCHAR szEmail[32];
|
|
TCHAR szCity[32];
|
|
TCHAR szCountry[128];
|
|
TCHAR rgsz[4][32];
|
|
|
|
if (NULL == (hRes = FindResource(GetInstanceHandle(), MAKEINTRESOURCE(IDC_STIDERC), "CDAT")) ||
|
|
(NULL == (psz = (LPTSTR) LockResource(LoadResource(GetInstanceHandle(), hRes))) ) )
|
|
{
|
|
return E_FAIL;
|
|
}
|
|
|
|
_GetPsz(&psz, szEmail);
|
|
_GetPsz(&psz, szCity);
|
|
_GetPsz(&psz, rgsz[0]);
|
|
_GetPsz(&psz, rgsz[1]);
|
|
_GetPsz(&psz, rgsz[2]);
|
|
_GetPsz(&psz, rgsz[3]);
|
|
|
|
for ( ; ; )
|
|
{
|
|
TCHAR szRow[MAX_PATH];
|
|
|
|
UINT bFlags;
|
|
LPTSTR pszFirst;
|
|
LPTSTR pszLast;
|
|
LPTSTR pszComments;
|
|
LPTSTR pszCity;
|
|
LPTSTR pszCountry;
|
|
|
|
_GetPsz(&psz, szRow);
|
|
if (FEmptySz(szRow))
|
|
break;
|
|
|
|
pch = szRow;
|
|
bFlags = (*pch) - _T('\0');
|
|
pch++;
|
|
|
|
pszFirst = pch;
|
|
pch = _NextWord(pch);
|
|
|
|
pszLast = pch;
|
|
pch = _NextWord(pch);
|
|
|
|
pszComments = pch;
|
|
pch++;
|
|
switch (*pch)
|
|
{
|
|
case _T(','):
|
|
pch++;
|
|
case _T('\0'):
|
|
pszComments = rgsz[*pszComments-_T('1')];
|
|
break;
|
|
default:
|
|
pch = _NextWord(pch);
|
|
break;
|
|
}
|
|
|
|
if (FEmptySz(pch))
|
|
{
|
|
pszCity = szCity;
|
|
pszCountry = TEXT("US");
|
|
}
|
|
else
|
|
{
|
|
pszCity = pch;
|
|
pszCountry = _NextWord(pch);
|
|
}
|
|
|
|
if ((_T('\0') != pszCountry[0]) &&
|
|
(_T('\0') != pszCountry[1]) &&
|
|
(_T('\0') == pszCountry[2]))
|
|
{
|
|
if (pdlv->FFindCountry(szCountry, pszCountry))
|
|
{
|
|
pszCountry = szCountry;
|
|
}
|
|
}
|
|
|
|
pdlv->Add(szEmail, pszFirst, pszLast, pszCity, pszCountry, pszComments,
|
|
(bFlags & 0x04) ? II_IN_CALL : II_NOT_IN_CALL,
|
|
(bFlags & 0x01) ? II_AUDIO_CAPABLE : 0,
|
|
(bFlags & 0x02) ? II_VIDEO_CAPABLE : 0);
|
|
}
|
|
|
|
FreeResource(hRes);
|
|
|
|
pdlv->CancelDirectory();
|
|
|
|
return E_FAIL;
|
|
}
|
|
|
|
|