?? rsschannel.cpp
字號:
// RSSChannel.cpp: implementation of the CRSSChannel class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "RSSChannel.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CRSSChannel::CRSSChannel() : CRSSElement( _T("channel") )
{
m_Title = _T("");
m_URL = _T("");
m_Description = _T("");
m_Language = _T("");
m_Copyright = _T("");
m_ManagingEditor = _T("");
m_WebMaster = _T("");
m_PubDate = NULL;
m_LastBuildDate = NULL;
m_Generator = _T("");
m_Categorys.RemoveAll();
m_Docs = _T("");
m_Cloud = NULL;
m_TTL = 60; //初始化為60分鐘。
m_Image = NULL;
m_TextInput = NULL;
m_Rating = _T("");
m_lastUpdateTime = CTime::GetCurrentTime();
m_CacheGUID = _T("");
int i;
for(i=0;i<24;i++ )
m_SkipHours[i] = FALSE;
for(i=0;i<7;i++)
m_SkipDays[i] = FALSE;
m_Items.RemoveAll();
m_iCurrentCategory = -1;
m_iCurrentItem = -1;
hwndCallback = NULL;
m_bSaveTag = FALSE;
m_bRemoveTag = FALSE;
m_bAutoUpdateTitle = FALSE;
m_UpdateTimer = 30;
m_ItemCount = 0;
m_ReadedItems = 0;
m_RedFlagItems = 0;
}
CRSSChannel::~CRSSChannel()
{
ClearUp();
int i;
CRSSCategory* pcat;
for( i=0;i<m_Categorys.GetSize();i++)
{
pcat = (CRSSCategory*)m_Categorys.GetAt(i);
ASSERT(pcat);
delete(pcat);
}
m_Categorys.RemoveAll();
if( m_Image ) delete(m_Image);
if( m_PubDate ) delete(m_PubDate);
if( m_LastBuildDate ) delete(m_LastBuildDate);
if( m_Cloud ) delete( m_Cloud );
if( m_TextInput ) delete( m_TextInput );
}
void CRSSChannel::ClearUp()
{
int i = 0;
CRSSItem* pItem;
for( i=0;i<m_Items.GetSize();i++)
{
pItem = (CRSSItem*)m_Items.GetAt(i);
ASSERT(pItem);
delete(pItem);
}
m_Items.RemoveAll();
}
int CRSSChannel::AddCategory(CRSSCategory* category)
{
if( !category ) return -1;
return m_Categorys.Add( category );
}
BOOL CRSSChannel::RemoveCategory(int iIndex)
{
if( iIndex >= m_Categorys.GetSize() || iIndex < 0 ) return FALSE;
CRSSCategory* pcat;
pcat = (CRSSCategory*)m_Categorys.GetAt(iIndex);
m_Categorys.RemoveAt(iIndex);
delete( pcat );
return TRUE;
}
CRSSCategory* CRSSChannel::GetCategory(BOOL bFirst)
{
if( m_Categorys.GetSize() <= 0 ) return NULL;
if( bFirst )
m_iCurrentCategory = 0;
else
m_iCurrentCategory++;
if( m_Categorys.GetSize() <= m_iCurrentCategory )
return NULL;
return (CRSSCategory*)m_Categorys.GetAt( m_iCurrentCategory );
}
int CRSSChannel::AddItem(CRSSItem* pItem)
{
if( !pItem ) return -1;
CRSSItem* pItem1;
for( int i=0; i<m_Items.GetSize(); i++ )
{
pItem1 = (CRSSItem*)m_Items.GetAt(i);
ASSERT(pItem1);
if( pItem1->GetLink()==pItem->GetLink() && pItem1->GetTitle() == pItem->GetTitle() )
{
if( pItem->GetReadStatus() )
pItem1->SetReadStatus(TRUE);
if( pItem->GetRetakeDate()->GetDateTime() < pItem1->GetRetakeDate()->GetDateTime() )
pItem1->GetRetakeDate()->SetDateTime( pItem->GetRetakeDate()->GetDateTime() );
delete(pItem);
return i;
}
}
m_ItemCount++;
return m_Items.Add( pItem );
}
BOOL CRSSChannel::RemoveItem(int iIndex)
{
if( iIndex >= m_Items.GetSize() || iIndex < 0 ) return FALSE;
CRSSItem* pItem;
pItem = (CRSSItem*)m_Items.GetAt(iIndex);
m_Items.RemoveAt(iIndex);
m_ItemCount--;
if( pItem->GetReadStatus() ) m_ReadedItems--;
delete( pItem );
return TRUE;
}
BOOL CRSSChannel::RemoveItem( CRSSItem* pItem )
{
if( !pItem ) return FALSE;
CRSSItem* pItem1 = NULL;
for( int i=0;i<m_Items.GetSize();i++)
{
pItem1 = (CRSSItem*)m_Items.GetAt(i);
ASSERT(pItem1);
if( pItem1 == pItem )
{
m_Items.RemoveAt(i);
m_ItemCount--;
if( pItem->GetReadStatus() ) m_ReadedItems--;
delete( pItem );
return TRUE;
}
}
return FALSE;
}
CRSSItem* CRSSChannel::GetItem(BOOL bFirst)
{
if( m_Items.GetSize() <= 0 ) return NULL;
if( bFirst )
m_iCurrentItem = 0;
else
m_iCurrentItem++;
if( m_Items.GetSize() <= m_iCurrentItem )
return NULL;
return (CRSSItem*)m_Items.GetAt( m_iCurrentItem );
}
void CRSSChannel::SetSkipDays(CString day)
{
if( day.IsEmpty() ) return;
if( day.CompareNoCase( _T("monday") )==0 )
m_SkipDays[0] = TRUE;
else if(day.CompareNoCase( _T("tuesday") )==0 )
m_SkipDays[1] = TRUE;
else if(day.CompareNoCase( _T("wednesday") )==0 )
m_SkipDays[2] = TRUE;
else if(day.CompareNoCase( _T("thursday") )==0 )
m_SkipDays[3] = TRUE;
else if(day.CompareNoCase( _T("friday") )==0 )
m_SkipDays[4] = TRUE;
else if(day.CompareNoCase( _T("saturday") )==0 )
m_SkipDays[5] = TRUE;
else if(day.CompareNoCase( _T("sunday") )==0 )
m_SkipDays[1] = TRUE;
}
BOOL CRSSChannel::GetSkipDays(int day)
{
if( day < 0 || day > 6 ) return FALSE;
return m_SkipDays[day];
}
void CRSSChannel::SetSkipHours(CString hour)
{
if( hour.IsEmpty() ) return;
int iHours = atoi( (LPTSTR)(LPCTSTR)hour );
if( iHours < 0 || iHours > 23 ) return;
m_SkipHours[iHours] = TRUE;
}
BOOL CRSSChannel::GetSkipHours(int hour)
{
if( hour < 0 || hour >23 ) return FALSE;
return m_SkipHours[hour];
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -