示例#1
0
BOOL CSkin::LoadFromXML(CXMLElement* pXML, const CString& strPath)
{
	if ( ! pXML->IsNamed( _T("skin") ) ) return FALSE;
	
	BOOL bSuccess = FALSE;
	
	for ( POSITION pos = pXML->GetElementIterator() ; pos ; )
	{
		CXMLElement* pSub = pXML->GetNextElement( pos );
		bSuccess = FALSE;
		
		if ( pSub->IsNamed( _T("commandImages") ) )
		{
			if ( ! LoadCommandImages( pSub, strPath ) ) break;
		}
		else if ( pSub->IsNamed( _T("commandMap") ) )
		{
			if ( ! LoadCommandMap( pSub ) ) break;
		}
		else if ( pSub->IsNamed( _T("menus") ) )
		{
			if ( ! LoadMenus( pSub ) ) break;
		}
		else if ( pSub->IsNamed( _T("toolbars") ) )
		{
			if ( ! LoadToolbars( pSub ) ) break;
		}

		bSuccess = TRUE;
	}
	
	return bSuccess;
}
示例#2
0
BOOL CCollectionFile::File::Parse(CXMLElement* pRoot)
{
	//if ( ! pRoot->IsNamed( L"file" ) ) return FALSE;	// Discards DC++

	for ( POSITION pos = pRoot->GetElementIterator(); pos; )
	{
		CXMLElement* pXML = pRoot->GetNextElement( pos );

		if ( pXML->IsNamed( L"id" ) )
		{
			if ( ! m_oSHA1 )  m_oSHA1.fromUrn( pXML->GetValue() );
			if ( ! m_oTiger ) m_oTiger.fromUrn( pXML->GetValue() );
			if ( ! m_oED2K )  m_oED2K.fromUrn( pXML->GetValue() );
			if ( ! m_oMD5 )   m_oMD5.fromUrn( pXML->GetValue() );
			if ( ! m_oBTH )   m_oBTH.fromUrn( pXML->GetValue() );
			if ( ! m_oBTH )   m_oBTH.fromUrn< Hashes::base16Encoding >( pXML->GetValue() );
		}
		else if ( pXML->IsNamed( L"description" ) )
		{
			if ( CXMLElement* pName = pXML->GetElementByName( L"name" ) )
				m_sName = pName->GetValue();

			if ( CXMLElement* pSize = pXML->GetElementByName( L"size" ) )
			{
				if ( _stscanf( pSize->GetValue(), L"%I64i", &m_nSize ) != 1 )
					return FALSE;
			}
		}
		else if ( pXML->IsNamed( L"metadata" ) )
		{
			if ( m_pMetadata ) delete m_pMetadata;
			m_pMetadata = CCollectionFile::CloneMetadata( pXML );
		}
		//else if ( pXML->IsNamed( L"packaged" ) )
		//{
		//	if ( CXMLElement* pSource = pXML->GetElementByName( L"source" ) )
		//		/*m_sSource =*/ pSource->GetValue();	// ToDo: Use Sources?
		//}
	}

	// DC++ format
	if ( m_sName.IsEmpty() && ! m_oTiger && m_nSize == SIZE_UNKNOWN )
	{
		m_sName = pRoot->GetAttributeValue( L"Name" );
		_stscanf( pRoot->GetAttributeValue( L"Size" ), L"%I64i", &m_nSize );
		m_oTiger.fromString( pRoot->GetAttributeValue( L"TTH" ) );
	}

	return HasHash();
}
示例#3
0
BOOL CHostBrowser::LoadDCDirectory(CXMLElement* pRoot, CQueryHit*& pHits)
{
	for ( POSITION pos = pRoot->GetElementIterator(); pos; )
	{
		CXMLElement* pElement = pRoot->GetNextElement( pos );
		if ( pElement->IsNamed( L"Directory" ) )
		{
			// <Directory Name="Downloads">

			if ( ! LoadDCDirectory( pElement, pHits ) )
				return FALSE;
		}
		else if ( pElement->IsNamed( L"File" ) )
		{
			// <File Name="music.mp3" Size="100000" TTH="3A6D6T2NDRLU6BGSTSJNW3R3QWTV6A44M6AGXMA"/>

			CString strName = pElement->GetAttributeValue( L"Name" );
			QWORD nSize;
			if ( _stscanf( pElement->GetAttributeValue( L"Size" ), L"%I64i", &nSize ) != 1 )
				nSize = SIZE_UNKNOWN;
			CString strTiger = pElement->GetAttributeValue( L"TTH" );

			if ( strName.IsEmpty() || nSize == SIZE_UNKNOWN )
				return FALSE;

			if ( CQueryHit* pHit = new CQueryHit( PROTOCOL_DC ) )
			{
				pHit->m_sName		= strName;
				pHit->m_nSize		= nSize;
				pHit->m_bSize		= TRUE;
				pHit->m_bChat		= TRUE;
				pHit->m_bBrowseHost	= TRUE;
				pHit->m_oTiger.fromString( strTiger );
				pHit->m_sNick		= m_sNick;
				pHit->m_bBusy		= TRI_FALSE;
				pHit->m_bPush		= TRI_TRUE;
				pHit->m_pAddress	= m_pAddress;
				pHit->m_nPort		= m_nPort;
				pHit->m_sCountry	= theApp.GetCountryCode( m_pAddress );
				pHit->m_pVendor		= m_pVendor ? m_pVendor : VendorCache.m_pNull;

				pHit->Resolve();

				pHit->m_pNext = pHits;
				pHits = pHit;
			}
		}
	}
	return TRUE;
}
BOOL CSchemaMember::LoadDescriptor(CXMLElement* pXML)
{
	CString strSearch = pXML->GetAttributeValue( _T("search") );
	
	if ( strSearch.CompareNoCase( _T("generic") ) == 0 )
	{
		m_bIndexed	= TRUE;
		m_bSearched	= TRUE;
	}
	else if ( strSearch.CompareNoCase( _T("indexed") ) == 0 )
	{
		m_bIndexed = TRUE;
	}
	
	CString strTitle = m_sTitle;
	m_sTitle.Empty();
	
	for ( POSITION pos = pXML->GetElementIterator() ; pos ; )
	{
		CXMLElement* pElement = pXML->GetNextElement( pos );
		
		if ( pElement->IsNamed( _T("display") ) )
		{
			LoadDisplay( pElement );
		}
		else if ( pElement->IsNamed( _T("title") ) )
		{
			if ( pElement->GetAttributeValue( _T("language") ).
				 CompareNoCase( Settings.General.Language ) == 0 )
			{
				m_sTitle = pElement->GetValue();
			}
			else if ( m_sTitle.IsEmpty() )
			{
				m_sTitle = pElement->GetValue();
			}
		}
		else if ( pElement->IsNamed( _T("link") ) )
		{
			m_sLinkURI	= pElement->GetAttributeValue( _T("location") );
			m_sLinkName	= pElement->GetAttributeValue( _T("remote") );
		}
	}
	
	if ( m_sTitle.IsEmpty() ) m_sTitle = strTitle;
	
	return TRUE;
}
示例#5
0
BOOL CPlayProfilePage::LoadXML()
{
	CString strValue;
	CXMLAttribute* pAttri = NULL;
	
	for ( POSITION pos = m_pXML->GetElementIterator() ; pos ; )
	{
		CXMLElement* pMap = m_pXML->GetNextElement( pos );
		if ( ! pMap->IsNamed( _T("Map") ) ) continue;
		
		if ( pAttri = pMap->GetAttribute( _T("ID") ) )
		{
			strValue = pAttri->GetValue();
			int nItem = m_wndList.InsertItem(
				LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM,
				m_wndList.GetItemCount(), strValue, 0, 0,
				CoolInterface.ImageForID(ID_REPORT_MUSIC), (LPARAM)pMap );
			
			if ( pAttri = pMap->GetAttribute( _T("Play") ) )
			{
				m_wndList.SetItemText( nItem, 1, pAttri->GetValue() );
			}
		}
	}

	return TRUE;
}
示例#6
0
CXMLElement* CHisReport::FindToday() const
{
    CString strValue;

    WORD nYear, nMonth, nDay;
    CTime tt = CTime::GetCurrentTime();
    nYear = tt.GetYear();
    nMonth = tt.GetMonth();
    nDay = tt.GetDay();

    for ( POSITION pos = m_pXML->GetElementIterator() ; pos ; )
    {
        CXMLElement* pXML = m_pXML->GetNextElement( pos );
        if ( ! pXML->IsNamed( _T("History") ) ) continue;

        WORD nYear2, nMonth2, nDay2;
        nYear2 = nMonth2 = nDay2 = 0;

        strValue = pXML->GetAttributeValue( _T("Date") );
        _stscanf( strValue, _T("%d年%d月%d日"), &nYear2, &nMonth2, &nDay2 );

        if ( nYear != nYear2 || nMonth != nMonth2 || nDay != nDay2 ) continue;

        return pXML;
    }

    return NULL;
}
示例#7
0
CXMLElement* CProfiles::FindProcess(LPCTSTR xJobId, POSITION& posNext, CXMLElement** ppActionXML)
{
    CSingleLock pLock( &m_pSection, TRUE );
    if ( ! m_pXMLMonitor ) return NULL;

    CXMLElement* pAction = NULL;
    if ( ! ppActionXML ) ppActionXML = &pAction;

    *ppActionXML = m_pXMLMonitor->GetElementByName( _T("ShortMessage") );

    if ( CXMLElement* pXML = m_pXMLMonitor->GetElementByName( _T("Process") ) )
    {
        if ( ! posNext ) posNext = pXML->GetElementIterator();
        if ( ! posNext ) return NULL;

        CXMLElement* pMap = pXML->GetNextElement( posNext );
        if ( ! pMap->IsNamed( _T("Map") ) ) return posNext ? FindProcess( xJobId, posNext ) : NULL;

        if ( ! xJobId || ! _tcscmp(xJobId, _T("ÈÎÒâ")) ) return pMap;

        CXMLAttribute* pAttri = pMap->GetAttribute( "Host" );
        if ( pAttri && pAttri->GetValue() == xJobId ) return pMap;

        return posNext ? FindProcess( xJobId, posNext, ppActionXML ) : NULL;
    }

    return NULL;
}
示例#8
0
BOOL CGroupingDlg::OnSyncDataViewResp(CXMLElement* pXML)
{
	CWaitCursor pCursor;
	
	m_wndGroup.ResetContent();
	m_pXML->Delete(); m_pXML = pXML;
	
	for ( POSITION posNext = pXML->GetElementIterator(); posNext; )
	{
		CXMLElement* pSync = pXML->GetNextElement( posNext );
		if ( ! pSync->IsNamed( "SyncOrder" ) ) continue;
		
		static LPCTSTR pszGroup[] = { _T("xgroupname"), _T("xgroupnum") };
		
		CXMLAttribute* pAttri = pSync->GetAttribute( pszGroup[0] );
		if ( ! pAttri || pAttri->GetValue().IsEmpty() ) pAttri = pSync->GetAttribute( pszGroup[1] );
		
		if ( pAttri && m_wndGroup.FindStringExact( -1, pAttri->GetValue() ) == CB_ERR )
		m_wndGroup.SetItemDataPtr( m_wndGroup.AddString( pAttri->GetValue() ), pXML );
	}
	
	m_wndGroup.SetCurSel( 0 );
	SendMessage(WM_COMMAND, MAKELONG(m_wndGroup.GetDlgCtrlID(),CBN_SELCHANGE), (LPARAM)m_hWnd);
	
	return TRUE;
}
示例#9
0
void CGroupingDlg::OnSelChangeGroup()
{
	m_wndList.DeleteAllItems();
	CWaitCursor pCursor;
	
	int nItem = m_wndGroup.GetCurSel();
	if ( nItem < 0 ) return;
	
	CXMLElement* pXML = (CXMLElement*)m_wndGroup.GetItemDataPtr( nItem );
	ASSERT( pXML != NULL );
	
	for ( POSITION posNext = pXML->GetElementIterator(); posNext; )
	{
		CXMLElement* pSync = pXML->GetNextElement( posNext );
		if ( ! pSync->IsNamed( "SyncOrder" ) ) continue;
		
		static LPCTSTR pszGroup[] = { _T("xgroupname"), _T("xgroupnum") };
		
		CXMLAttribute* pAttri = pSync->GetAttribute( pszGroup[0] );
		if ( ! pAttri || pAttri->GetValue().IsEmpty() ) pAttri = pSync->GetAttribute( pszGroup[1] );
		
		if ( pAttri && m_wndGroup.FindStringExact( -1, pAttri->GetValue() ) != nItem ) continue;
		
		static LPCTSTR pszSuffix[] = { _T("xphone"), _T("xname"), NULL };
		
		int nItem = m_wndList.InsertItem( LVIF_TEXT|LVIF_PARAM,
				m_wndList.GetItemCount(), NULL, 0, 0, 0, (LPARAM)pSync );
		
		for ( int i = 0; pszSuffix[i] != NULL; i ++ )
		{
			CXMLAttribute* pAttri = pSync->GetAttribute( pszSuffix[i] );
			if ( pAttri ) m_wndList.SetItemText( nItem, i, pAttri->GetValue() );
		}
	}
}
示例#10
0
BOOL CProfiles::IsDenied(IN_ADDR* pAddress)
{
	CSingleLock pLock( &m_pSection, TRUE );
	
	if ( ! m_pXMLSecure ) return FALSE;
	
	CString strValue;
	BOOL bFound = FALSE;
	CXMLAttribute* pAttri = NULL;
	
	for ( POSITION pos = m_pXMLSecure->GetElementIterator() ; pos ; )
	{
		CXMLElement* pMap = m_pXMLSecure->GetNextElement( pos );
		if ( ! pMap->IsNamed( _T("Map") ) ) continue;
		
		if ( pAttri = pMap->GetAttribute( _T("Host") ) )
		{
			strValue = pAttri->GetValue();
			if ( strValue.CompareNoCase( _T("任意") ) == 0
			  || inet_addr((LPCTSTR)strValue) == *(DWORD*)pAddress )
			{
				bFound = TRUE; break;
			}
		}
	}
	
	// 拒绝条件: 拒绝 && bFound ==> TRUE
	//         : !拒绝 && !Found ==> TRUE
	// 受理方法: 异或 = 0 ==> TRUE, 否则 FALSE
	CString xAction = m_pXMLSecure->GetAttributeValue( _T("Action") );
	if ( xAction.CompareNoCase( _T("拒绝") ) ^ bFound  ) return FALSE;
	
	return TRUE;
}
示例#11
0
BOOL CAnalogProfilePage::LoadXML()
{
	CString strValue;
	CXMLAttribute* pAttri = NULL;
	
	for ( POSITION pos = m_pXML->GetElementIterator() ; pos ; )
	{
		CXMLElement* pMap = m_pXML->GetNextElement( pos );
		if ( ! pMap->IsNamed( _T("Map") ) ) continue;
		
		if ( pAttri = pMap->GetAttribute( _T("ID") ) )
		{
			int nItem = m_wndList.InsertItem( LVIF_IMAGE|LVIF_PARAM,
				m_wndList.GetItemCount(), NULL, 0, 0, 28, (LPARAM)pMap );
			
			strValue = pAttri->GetValue();
			m_wndList.SetItemText( nItem, 1, pAttri->GetValue() );
			
			if ( pAttri = pMap->GetAttribute( _T("LinkId") ) )
			{
				m_wndList.SetItemText( nItem, 0, pAttri->GetValue() );
			}
			
			if ( pAttri = pMap->GetAttribute( _T("LocalId") ) )
			{
				m_wndList.SetItemText( nItem, 2, pAttri->GetValue() );
			}
		}
	}

	return TRUE;
}
示例#12
0
BOOL CUserMeetingDlg::CreateMenuGroup(CXMLElement* pXML, HMENU hParent)
{
	UINT nMenuId = MIN_GROUP;
	
	for ( POSITION pos = pXML->GetElementIterator() ; pos ; )
	{
		CXMLElement* pSync = pXML->GetNextElement( pos );
		if ( ! pSync->IsNamed( "SyncOrder" ) ) continue;
		
		static LPCTSTR pszGroup[] = { _T("xgroupname"), _T("xgroupnum") };
		
		CXMLAttribute* pAttri = pSync->GetAttribute( pszGroup[0] );
		if ( ! pAttri || pAttri->GetValue().IsEmpty() ) pAttri = pSync->GetAttribute( pszGroup[1] );
		
		if ( pAttri && m_wndGroup.FindStringExact( -1, pAttri->GetValue() ) != m_wndGroup.GetCurSel() ) continue;
		
		HMENU hMenu = FindMenuGroup( hParent, pAttri->GetValue() );	if ( ! hMenu )
		{
			hMenu = CreatePopupMenu();
			AppendMenu( hParent, MF_STRING|MF_POPUP, (UINT)hMenu, pAttri->GetValue() );
		}
		
		CString strText = pSync->GetAttributeValue( _T("xname") );
		if ( ! strText.IsEmpty() ) strText += '\t';
		
		strText += pSync->GetAttributeValue( _T("xphone") );
		AppendMenu( hMenu, MF_STRING, nMenuId++, strText );
		
		if ( nMenuId > MAX_GROUP ) break;
	}
	
	return TRUE;
}
示例#13
0
BOOL CSkin::LoadCommandBitmap(CXMLElement* pBase, const CString& strPath)
{
	static LPCTSTR pszNames[] = { _T("id"), _T("id1"), _T("id2"), _T("id3"), _T("id4"), _T("id5"), _T("id6"), _T("id7"), _T("id8"), _T("id9"), NULL };
	
	CString strFile = strPath;
	strFile += pBase->GetAttributeValue( _T("id") );
	strFile += pBase->GetAttributeValue( _T("path") );
	
	HBITMAP hBitmap = LoadBitmap( strFile );
	if ( hBitmap == NULL ) return TRUE;
	
	strFile = pBase->GetAttributeValue( _T("mask") );
	COLORREF crMask = RGB( 0, 255, 0 );
	
	if ( strFile.GetLength() == 6 )
	{
		int nRed, nGreen, nBlue;
		_stscanf( strFile.Mid( 0, 2 ), _T("%x"), &nRed );
		_stscanf( strFile.Mid( 2, 2 ), _T("%x"), &nGreen );
		_stscanf( strFile.Mid( 4, 2 ), _T("%x"), &nBlue );
		crMask = RGB( nRed, nGreen, nBlue );
	}
	
	CoolInterface.ConfirmImageList();
	int nBase = ImageList_AddMasked( CoolInterface.m_pImages.m_hImageList, hBitmap, crMask );
	
	if ( nBase < 0 )
	{
		DeleteObject( hBitmap );
		return FALSE;
	}
	
	int nIndex = 0;
	
	for ( POSITION pos = pBase->GetElementIterator() ; pos ; )
	{
		CXMLElement* pXML = pBase->GetNextElement( pos );
		if ( ! pXML->IsNamed( _T("image") ) ) continue;
		
		strFile = pXML->GetAttributeValue( _T("index") );
		if ( strFile.GetLength() ) _stscanf( strFile, _T("%i"), &nIndex );
		nIndex += nBase;
		
		for ( int nName = 0 ; pszNames[ nName ] ; nName++ )
		{
			UINT nID = LookupCommandID( pXML, pszNames[ nName ] );
			if ( nID ) CoolInterface.m_pImageMap.SetAt( (LPVOID)nID, (LPVOID)nIndex );
			if ( nName && ! nID ) break;
		}
		
		nIndex -= nBase;
		nIndex ++;
	}
	
	DeleteObject( hBitmap );
	
	return TRUE;
}
示例#14
0
BOOL CSkin::LoadCommandImages(CXMLElement* pBase, const CString& strPath)
{
	for ( POSITION pos = pBase->GetElementIterator() ; pos ; )
	{
		CXMLElement* pXML = pBase->GetNextElement( pos );
		
		if ( pXML->IsNamed( _T("icon") ) )
		{
			UINT nID = LookupCommandID( pXML );
			if ( nID == 0 ) continue;
			
			CString strFile = strPath;
			strFile += pXML->GetAttributeValue( _T("res") );
			strFile += pXML->GetAttributeValue( _T("path") );
			
			int nPos = strFile.Find( '$' );
			HICON hIcon = NULL;
			
			if ( nPos < 0 )
			{
				if ( ExtractIconEx( strFile, 0, NULL, &hIcon, 1 ) != NULL && hIcon != NULL )
				{
					CoolInterface.AddIcon( nID, hIcon );
				}
			}
			else
			{
				HINSTANCE hInstance = NULL;
				UINT nIconID = 0;
				
				if ( _stscanf( strFile.Left( nPos ), _T("%lu"), &hInstance ) != 1 ) return TRUE;
				if ( _stscanf( strFile.Mid( nPos + 1 ), _T("%lu"), &nIconID ) != 1 ) return TRUE;
				
				hIcon = (HICON)LoadImage( hInstance, MAKEINTRESOURCE(nIconID), IMAGE_ICON, 16, 16, 0 );
				if ( hIcon != NULL ) CoolInterface.AddIcon( nID, hIcon );
			}
		}
		else if ( pXML->IsNamed( _T("bitmap") ) )
		{
			if ( ! LoadCommandBitmap( pXML, strPath ) ) return FALSE;
		}
	}
	
	return TRUE;
}
示例#15
0
BOOL CSkin::LoadMenus(CXMLElement* pBase)
{
	for ( POSITION pos = pBase->GetElementIterator() ; pos ; )
	{
		CXMLElement* pXML = pBase->GetNextElement( pos );
		if ( pXML->IsNamed( _T("menu") ) && ! LoadMenu( pXML ) ) return FALSE;
	}
	
	return TRUE;
}
示例#16
0
BOOL CSkin::LoadToolbars(CXMLElement* pBase)
{
	for ( POSITION pos = pBase->GetElementIterator() ; pos ; )
	{
		CXMLElement* pXML = pBase->GetNextElement( pos );
		if ( pXML->IsNamed( _T("toolbar") ) && ! CreateToolBar( pXML ) ) return FALSE;
	}

	return TRUE;
}
示例#17
0
BOOL CSkin::CreateMenu(CXMLElement* pRoot, HMENU hMenu)
{
	for ( POSITION pos = pRoot->GetElementIterator() ; pos ; )
	{
		CXMLElement* pXML	= pRoot->GetNextElement( pos );
		CString strText		= pXML->GetAttributeValue( _T("text") );
		
		int nAmp = strText.Find( '_' );
		if ( nAmp >= 0 ) strText.SetAt( nAmp, '&' );
		
		if ( pXML->IsNamed( _T("item") ) )
		{
			if ( UINT nID = LookupCommandID( pXML ) )
			{
				CString strKeys = pXML->GetAttributeValue( _T("shortcut") );
				
				if ( strKeys.GetLength() ) strText += '\t' + strKeys;
				
				AppendMenu( hMenu, MF_STRING, nID, strText );
			}
		}
		else if ( pXML->IsNamed( _T("menu") ) )
		{
			HMENU hSubMenu = CreatePopupMenu();
			
			if ( ! CreateMenu( pXML, hSubMenu ) )
			{
				DestroyMenu( hSubMenu );
				return FALSE;
			}
			
			AppendMenu( hMenu, MF_STRING|MF_POPUP, (UINT)hSubMenu, strText );
		}
		else if ( pXML->IsNamed( _T("separator") ) )
		{
			AppendMenu( hMenu, MF_SEPARATOR, ID_SEPARATOR, NULL );
		}
	}

	return TRUE;
}
示例#18
0
void CCollectionFile::LoadDC(CXMLElement* pRoot)
{
	for ( POSITION pos = pRoot->GetElementIterator(); pos; )
	{
		CXMLElement* pElement = pRoot->GetNextElement( pos );
		if ( pElement->IsNamed( L"Directory" ) )
		{
			// <Directory Name="Downloads">

			LoadDC( pElement );
		}
		else if ( pElement->IsNamed( L"File" ) )
		{
			// <File Name="music.mp3" Size="100000" TTH="3A6D6T2NDRLU6BGSTSJNW3R3QWTV6A44M6AGXMA"/>

			augment::auto_ptr< File > pNewFile( new File( this ) );
			if ( pNewFile.get() && pNewFile->Parse( pElement ) )
				m_pFiles.AddTail( pNewFile.release() );
		}
	}
}
示例#19
0
BOOL CSecurity::FromXML(CXMLElement* pXML)
{
	if ( ! pXML->IsNamed( _T("security") ) ) return FALSE;

	int nCount = 0;

	for ( POSITION pos = pXML->GetElementIterator() ; pos ; )
	{
		CXMLElement* pElement = pXML->GetNextElement( pos );

		if ( pElement->IsNamed( _T("rule") ) )
		{
			CQuickLock oLock( m_pSection );
			CSecureRule* pRule	= NULL;
			CString strGUID		= pElement->GetAttributeValue( _T("guid") );
			BOOL bExisting		= FALSE;
			GUID pGUID;

			if ( Hashes::fromGuid( strGUID, &pGUID ) )
			{
				if ( ( pRule = GetGUID( pGUID ) ) != NULL )
					bExisting = TRUE;

				if ( pRule == NULL )
				{
					pRule = new CSecureRule( FALSE );
					pRule->m_pGUID = pGUID;
				}
			}
			else
			{
				pRule = new CSecureRule();
			}

			if ( pRule->FromXML( pElement ) )
			{
				if ( ! bExisting )
					m_pRules.AddTail( pRule );

				nCount++;
			}
			else
			{
				if ( ! bExisting )
					delete pRule;
			}
		}
	}

	return nCount > 0;
}
示例#20
0
BOOL CSchemaChild::Load(CXMLElement* pXML)
{
	m_sURI = pXML->GetAttributeValue( _T("location") );
	if ( m_sURI.IsEmpty() ) return FALSE;

	CString strType = pXML->GetAttributeValue( _T("type") );

	if ( strType == _T("folder") )
		m_nType = CSchema::stFolder;
	else if ( strType == _T("file") )
		m_nType = CSchema::stFile;
	else
		return FALSE;

	for ( POSITION pos = pXML->GetElementIterator() ; pos ; )
	{
		CXMLElement* pElement = pXML->GetNextElement( pos );

		if (	pElement->IsNamed( _T("identity") ) ||
				pElement->IsNamed( _T("shared") ) )
		{
			CSchemaChildMap* pMap = new CSchemaChildMap();

			if ( pMap->Load( pElement ) )
			{
				m_pMap.AddTail( pMap );
			}
			else
			{
				delete pMap;
				return FALSE;
			}
		}
	}

	return TRUE;
}
示例#21
0
DWORD GetUserGroupInfo(LPCTSTR xUserId, HMENU hMenu)
{
	CXMLElement* pXML;
	DWORD nResult = CUserWnd::GetUserGroupInfo( xUserId, &pXML );
	
	if ( ! nResult && pXML != NULL )
	{
		ASSERT( pXML->IsNamed( ISyncDataView ) );
		
		CreateMenuGroup( pXML, hMenu );
		pXML->Delete();
	}
	
	return nResult;
}
示例#22
0
void CPlayerWnd::LoadXML(CXMLElement* pXML)
{
	ASSERT( pXML->IsNamed( _T("XlivePlayer") ) );
	
	for ( POSITION pos = pXML->GetElementIterator() ; pos ; )
	{
		CXMLElement* pMap = pXML->GetNextElement( pos );
		if ( ! pMap->IsNamed( _T("Cookie") ) ) continue;
		
		int nItem = m_wndHistory.AddString( pMap->GetValue() );
		if ( nItem >= MAX_ITEM ) break;
	}
	
	m_wndHistory.SetCurSel( 0 );
}
示例#23
0
BOOL CRichDocument::LoadXMLStyles(CXMLElement* pParent)
{
	for ( POSITION pos = pParent->GetElementIterator() ; pos ; )
	{
		CXMLElement* pXML = pParent->GetNextElement( pos );
		if ( ! pXML->IsNamed( _T("style") ) ) continue;
		
		CString strName = pXML->GetAttributeValue( _T("name") );
		CharLower( strName.GetBuffer() );
		strName.ReleaseBuffer();
		
		CString strFontFace = theApp.m_sDefaultFont;
		int nFontSize = theApp.m_nDefaultFontSize + 1;
		int nFontWeight = FW_BOLD;
		
		if ( CXMLElement* pFont = pXML->GetElementByName( _T("font") ) )
		{
			strFontFace = pFont->GetAttributeValue( _T("face") );
			CString strTemp = pFont->GetAttributeValue( _T("size") );
			_stscanf( strTemp, _T("%i"), &nFontSize );
			strTemp = pFont->GetAttributeValue( _T("weight") );
			_stscanf( strTemp, _T("%i"), &nFontWeight );
		}
		
		CXMLElement* pColours = pXML->GetElementByName( _T("colours") );
		if ( pColours == NULL ) pColours = pXML;
		
		if ( strName == _T("default") || strName.IsEmpty() )
		{
			LoadXMLColour( pColours, _T("text"), &m_crText );
			LoadXMLColour( pColours, _T("link"), &m_crLink );
			LoadXMLColour( pColours, _T("hover"), &m_crHover );
			CreateFonts( strFontFace, nFontSize );
		}
		else if ( strName == _T("heading") )
		{
			LoadXMLColour( pColours, _T("text"), &m_crHeading );
			
			if ( m_fntHeading.m_hObject ) m_fntHeading.DeleteObject();
			m_fntHeading.CreateFont( -nFontSize, 0, 0, 0, nFontWeight, FALSE, FALSE, FALSE,
				DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
				DEFAULT_PITCH|FF_DONTCARE, strFontFace );
		}
	}
	
	return TRUE;
}
BOOL CFavouritesProfilePage::OnInitDialog()
{
	CSettingsPage::OnInitDialog();

	m_gdiImageList.Create( 16, 16, ILC_COLOR16|ILC_MASK, 1, 1 );
	HICON hIcon = AfxGetApp()->LoadIcon( IDI_WEB_URL );
	if ( theApp.m_bRTL ) hIcon = CreateMirroredIcon( hIcon );
	m_gdiImageList.Add( hIcon );

	CRect rc;
	m_wndList.GetClientRect( &rc );
	rc.right -= GetSystemMetrics( SM_CXVSCROLL ) + 1;

	m_wndList.SetImageList( &m_gdiImageList, LVSIL_SMALL );
	m_wndList.InsertColumn( 0, _T("Name"), LVCFMT_LEFT, rc.right / 2, -1 );
	m_wndList.InsertColumn( 1, _T("URL"), LVCFMT_LEFT, rc.right / 2, 0 );

	m_wndList.SendMessage( LVM_SETEXTENDEDLISTVIEWSTYLE,
		LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT );

	if ( CXMLElement* pBookmarks = MyProfile.GetXML( _T("bookmarks") ) )
	{
		for ( POSITION pos = pBookmarks->GetElementIterator() ; pos ; )
		{
			CXMLElement* pBookmark = pBookmarks->GetNextElement( pos );

			if ( pBookmark->IsNamed( _T("bookmark") ) )
			{
				CString strTitle	= pBookmark->GetAttributeValue( _T("title") );
				CString strURL		= pBookmark->GetAttributeValue( _T("url") );
				if ( theApp.m_bRTL ) strURL = _T("\x202A") + strURL;

				int nItem = m_wndList.InsertItem( LVIF_TEXT|LVIF_IMAGE,
					m_wndList.GetItemCount(), strTitle, 0, 0, 0, 0 );
				m_wndList.SetItemText( nItem, 1, strURL );
			}
		}
	}

	Skin.Translate( _T("CFavouritesProfileList"), m_wndList.GetHeaderCtrl() );
	UpdateData( FALSE );
	m_wndAdd.EnableWindow( FALSE );
	m_wndRemove.EnableWindow( FALSE );

	return TRUE;
}
示例#25
0
BOOL CIconComboCtrl::LoadXML(CXMLElement* pXML)
{
	if ( ( GetStyle() & CBS_OWNERDRAWVARIABLE ) == 0 )
	{
		ModifyStyle( 0, CBS_OWNERDRAWVARIABLE|CBS_HASSTRINGS );
	}
	
	SetExtendedUI( TRUE );
	
	for ( POSITION posNext = pXML->GetElementIterator(); posNext; )
	{
		CXMLElement* pMap = pXML->GetNextElement( posNext );
		if ( ! pMap->IsNamed( "item" ) ) continue;
		
		AddString( pMap );
	}
	
	return TRUE;
}
示例#26
0
BOOL CSkin::LoadCommandMap(CXMLElement* pBase)
{
	for ( POSITION pos = pBase->GetElementIterator() ; pos ; )
	{
		CXMLElement* pXML = pBase->GetNextElement( pos );

		if (  pXML->IsNamed( _T("command") ) )
		{
			CString strTemp = pXML->GetAttributeValue( _T("code") );
			UINT nID;

			if ( _stscanf( strTemp, _T("%lu"), &nID ) != 1 )
				return FALSE;

			strTemp = pXML->GetAttributeValue( _T("id") );

			CoolInterface.NameCommand( nID, strTemp );
		}
	}

	return TRUE;
}
示例#27
0
void CPlayProfilePage::OnAdd() 
{
	int nItem = m_wndList.GetNextItem( -1, LVNI_SELECTED );
	CXMLElement* pXML = ( nItem != -1 ) ? (CXMLElement*)m_wndList.GetItemData(nItem) : NULL;
	
	if ( pXML ) pXML = pXML->Clone();
	else pXML = new CXMLElement( NULL, _T("Album") );
	
	if ( pXML = m_pXML->AddElement( pXML ) )
	{
		CString strValue;
		m_wndClass.GetWindowText( strValue );
		
		pXML->SetName( strValue.CompareNoCase("子类") == 0 ? _T("Album") : _T("Play") );
		
		m_wndKey.GetWindowText( strValue );
		pXML->AddAttribute( _T("ID"), strValue );
		
		int nItem = m_wndList.InsertItem( LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM, m_wndList.GetItemCount(),
			strValue, 0, 0, pXML->IsNamed( "Album" ) ? 23 : 24, (LPARAM)pXML );
		
		m_wndName.GetWindowText( strValue );
		pXML->AddAttribute( _T("Play"), strValue );
		m_wndList.SetItemText( nItem, 1, strValue );
		
		m_wndClass.GetWindowText( strValue );
		pXML->AddAttribute( _T("Class"), strValue );
		
		m_wndHost.GetWindowText( strValue );
		pXML->AddAttribute( _T("Host"), strValue );
		m_wndList.SetItemText( nItem, 2, strValue );
		
		m_wndAdmin.GetWindowText( strValue );
		pXML->AddAttribute( _T("Admin"), strValue );
		
		m_wndGroup.GetWindowText( strValue );
		pXML->AddAttribute( _T("Group"), strValue );
	}
}
示例#28
0
BOOL CRulerSettingsPage::LoadXML()
{
	CString strValue;
	CXMLElement* pXML = NULL;
	CXMLAttribute* pAttri = NULL;
	
	if ( pXML = m_pXML->GetElementByName( _T("BlackList") ) )
	{
		for ( POSITION pos = pXML->GetElementIterator() ; pos ; )
		{
			CXMLElement* pMap = pXML->GetNextElement( pos );
			if ( ! pMap->IsNamed( _T("Map") ) ) continue;

			if ( pAttri = pMap->GetAttribute( _T("ID") ) )
			{
				strValue = pAttri->GetValue();
				m_wndExtList.AddString( strValue );
			}
		}
	}

	return TRUE;
}
示例#29
0
BOOL CPlayProfilePage::LoadXML(CXMLElement* pParent)
{
	m_wndList.DeleteAllItems();
	
	if ( pParent->IsNamed( "Album" ) )
	{
		m_wndList.InsertItem( LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM, 0,
			"..", 0, 0, 23, (LPARAM)pParent->GetParent() );
	}
	
	for ( POSITION pos = pParent->GetElementIterator() ; pos ; )
	{
		CXMLElement* pXML = pParent->GetNextElement( pos );
		
		if ( CXMLAttribute* pAttri = pXML->GetAttribute( _T("ID") ) )
		{
			CString strValue = pAttri->GetValue();
			
			int nItem = m_wndList.InsertItem( LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM, m_wndList.GetItemCount(),
				strValue, 0, 0, pXML->IsNamed( "Album" ) ? 23 : 24, (LPARAM)pXML );
			
			if ( pAttri = pXML->GetAttribute( _T("Play") ) )
			{
				m_wndList.SetItemText( nItem, 1, pAttri->GetValue() );
			}
			
			if ( pAttri = pXML->GetAttribute( _T("Host") ) )
			{
				m_wndList.SetItemText( nItem, 2, pAttri->GetValue() );
			}
		}
	}
	
	m_pXML = pParent;
	return TRUE;
}
示例#30
0
BOOL CSkin::CreateToolBar(CXMLElement* pBase)
{
	CCoolBarCtrl* pBar = new CCoolBarCtrl();
	
	for ( POSITION pos = pBase->GetElementIterator() ; pos ; )
	{
		CXMLElement* pXML = pBase->GetNextElement( pos );
		
		if ( pXML->IsNamed( _T("button") ) )
		{
			if ( UINT nID = LookupCommandID( pXML ) )
			{
				CCoolBarItem* pItem = pBar->Add( nID, pXML->GetAttributeValue( _T("text") ) );
				CString strTemp = pXML->GetAttributeValue( _T("colour") );
				
				if ( strTemp.GetLength() == 6 )
				{
					int nRed, nGreen, nBlue;
					_stscanf( strTemp.Mid( 0, 2 ), _T("%x"), &nRed );
					_stscanf( strTemp.Mid( 2, 2 ), _T("%x"), &nGreen );
					_stscanf( strTemp.Mid( 4, 2 ), _T("%x"), &nBlue );
					pItem->m_crText = RGB( nRed, nGreen, nBlue );
				}
				
				strTemp = pXML->GetAttributeValue( _T("tip") );
				if ( strTemp.GetLength() ) pItem->SetTip( strTemp );
				
				strTemp = pXML->GetAttributeValue( _T("visible") );
				if ( strTemp.GetLength() ) pItem->Show( FALSE );
			}
		}
		else if ( pXML->IsNamed( _T("separator") ) )
		{
			pBar->Add( ID_SEPARATOR );
		}
		else if ( pXML->IsNamed( _T("rightalign") ) )
		{
			pBar->Add( ID_RIGHTALIGN );
		}
		else if ( pXML->IsNamed( _T("control") ) )
		{
			UINT nID, nWidth, nHeight = 0;
			CString strTemp;
			
			strTemp = pXML->GetAttributeValue( _T("id") );
			if ( _stscanf( strTemp, _T("%lu"), &nID ) == 1 )
			{
				strTemp = pXML->GetAttributeValue( _T("width") );
				
				if ( _stscanf( strTemp, _T("%lu"), &nWidth ) == 1 )
				{
					strTemp = pXML->GetAttributeValue( _T("height") );
					_stscanf( strTemp, _T("%lu"), &nHeight );
					pBar->Add( nID, nWidth, nHeight );
				}
			}
		}
		else if ( pXML->IsNamed( _T("label") ) )
		{
			CCoolBarItem* pItem = pBar->Add( 1, pXML->GetAttributeValue( _T("text") ) );
			pItem->m_crText = 0;
			pItem->SetTip( pXML->GetAttributeValue( _T("tip") ) );
		}
	}
	
	CString strName = pBase->GetAttributeValue( _T("name") );
	
	CCoolBarCtrl* pOld = NULL;
	if ( m_pToolbars.Lookup( strName, (void*&)pOld ) && pOld ) delete pOld;
	
	m_pToolbars.SetAt( strName, pBar );
	
	return TRUE;
}