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; }
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(); }
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; }
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; }
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; }
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; }
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; }
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() ); } } }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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() ); } } }
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; }
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; }
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; }
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 ); }
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; }
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; }
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; }
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 ); } }
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; }
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; }
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; }