📄 beereaderview.cpp
字号:
return iRet;
}
void CBeeReaderView::OnClick(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
CMainFrame* pMainWnd = (CMainFrame*)AfxGetMainWnd();
ASSERT(pMainWnd);
POSITION pos = GetListCtrl().GetFirstSelectedItemPosition();
CRSSItem* pItem;
int nIndex;// = pNMListView->iItem;
if ( pos != NULL )
{
nIndex = GetListCtrl().GetNextSelectedItem(pos);
pItem = (CRSSItem*)GetItemData(nIndex);
ASSERT(pItem);
if( m_TrackItem != pItem && m_uTimer != NULL )
KillTimer(2);
if( !pItem->GetReadStatus() )
{
m_TrackItem = pItem;
m_htTrack = nIndex;
m_uTimer = SetTimer(2,3000,0);
}
CString szRssItem = itemInfo.CreateRssItemFile( pItem );
if( szRssItem != _T("") )
pMainWnd->GetHtmlFrame()->Browse( szRssItem);
}
*pResult = 0;
}
void CBeeReaderView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CXTMenu menu;
VERIFY(menu.LoadMenu(IDR_MENU_POPUP_LIST));
CXTMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
UINT uFlags;
nIndex = HitTest( point,&uFlags );
if( nIndex < 0 ) return;
if (uFlags & LVHT_ONITEM )
{
if( GetListCtrl().GetItemState( nIndex, LVIS_SELECTED ) != LVIS_SELECTED )
{
menu.EnableMenuItem( IDM_LIST_VIEW,MF_BYCOMMAND|MF_GRAYED );
menu.EnableMenuItem( IDM_LIST_BROWSE,MF_BYCOMMAND|MF_GRAYED );
menu.EnableMenuItem( IDM_LIST_FLAGREAD,MF_BYCOMMAND|MF_GRAYED );
menu.EnableMenuItem( IDM_LIST_FLAGRED,MF_BYCOMMAND|MF_GRAYED );
menu.EnableMenuItem( IDM_LIST_DELETE_01,MF_BYCOMMAND|MF_GRAYED);
}
for( int i=0;i<10;i++)
{
if( i != m_iFilter )
menu.CheckMenuItem( IDM_LIST_FILTER_01+i,MF_BYCOMMAND|MF_UNCHECKED);
else
menu.CheckMenuItem( IDM_LIST_FILTER_01+i,MF_BYCOMMAND|MF_CHECKED);
}
if( m_bAscending )
{
menu.CheckMenuItem( IDM_LIST_SORT_ASC,MF_BYCOMMAND|MF_CHECKED);
menu.CheckMenuItem( IDM_LIST_SORT_DES,MF_BYCOMMAND|MF_UNCHECKED);
}
else
{
menu.CheckMenuItem( IDM_LIST_SORT_ASC,MF_BYCOMMAND|MF_UNCHECKED);
menu.CheckMenuItem( IDM_LIST_SORT_DES,MF_BYCOMMAND|MF_CHECKED);
}
UINT uCheck[4];
for( int j = 0; j<4; j++ )
{
if( m_nSortedCol == j )
uCheck[j] = MF_BYCOMMAND|MF_CHECKED;
else
uCheck[j] = MF_BYCOMMAND|MF_UNCHECKED;
}
menu.CheckMenuItem( IDM_LIST_SORTS_01,uCheck[0]);
menu.CheckMenuItem( IDM_LIST_SORTS_02,uCheck[1]);
menu.CheckMenuItem( IDM_LIST_SORTS_03,uCheck[2]);
menu.CheckMenuItem( IDM_LIST_SORTS_03,uCheck[3]);
}
ClientToScreen(&point);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,point.x, point.y, this);
return;
CListViewEx::OnRButtonDown(nFlags, point);
}
void CBeeReaderView::OnListBrowse()
{
// TODO: Add your command handler code here
}
void CBeeReaderView::OnListView()
{
// TODO: Add your command handler code here
int nIndex;
CMainFrame* pMainWnd = (CMainFrame*)AfxGetMainWnd();
ASSERT(pMainWnd);
POSITION pos = GetListCtrl().GetFirstSelectedItemPosition();
if( pos )
{
nIndex = GetListCtrl().GetNextSelectedItem(pos);
NM_LISTVIEW nm;
nm.iItem = nIndex;
nm.hdr.hwndFrom = GetSafeHwnd();
nm.hdr.code = NM_DBLCLK ;
SendMessage( WM_NOTIFY,0,(LPARAM)&nm);
}
}
void CBeeReaderView::OnListFlagread()
{
// TODO: Add your command handler code here
CRSSItem* pItem;
int nIndex;
CMainFrame* pMainWnd = (CMainFrame*)AfxGetMainWnd();
ASSERT(pMainWnd);
POSITION pos = GetListCtrl().GetFirstSelectedItemPosition();
if( pos )
{
while (pos)
{
nIndex = GetListCtrl().GetNextSelectedItem(pos);
pItem = (CRSSItem*)GetItemData(nIndex);
ASSERT(pItem);
BOOL bStatus = !pItem->GetReadStatus();
pItem->SetReadStatus( bStatus );
SetBoldItem( nIndex,!bStatus );
if( pMainWnd->GetWorkingChannel() )
pMainWnd->GetWorkingChannel()->SetSaveTag(TRUE);
else
{
pItem->GetParentChannel()->SetSaveTag(TRUE);
pMainWnd->GetRSSManager()->GetWriter()->Save( pItem->GetParentChannel(),pItem->GetParentChannel()->GetCacheGUID() );
pMainWnd->GetNewsTree()->SendMessage(WM_UPDATE_ITEMCOUNT,0,(LPARAM)pItem->GetParentChannel());
}
LV_ITEM lvitem;
lvitem.mask=LVIF_IMAGE;
lvitem.iItem=nIndex;
lvitem.iSubItem=0;
if( bStatus )
lvitem.iImage= 2;
else
lvitem.iImage = 1;
GetListCtrl().SetItem(&lvitem);
GetListCtrl().RedrawItems(nIndex,nIndex);
}
if( pMainWnd->GetWorkingChannel() )
pMainWnd->GetNewsTree()->SendMessage(WM_UPDATE_ITEMCOUNT,0,(LPARAM)pItem->GetParentChannel());
}
}
void CBeeReaderView::OnListFlagred()
{
// TODO: Add your command handler code here
CRSSItem* pItem;
int nIndex;
CMainFrame* pMainWnd = (CMainFrame*)AfxGetMainWnd();
ASSERT(pMainWnd);
POSITION pos = GetListCtrl().GetFirstSelectedItemPosition();
if( pos )
{
while (pos)
{
nIndex = GetListCtrl().GetNextSelectedItem(pos);
pItem = (CRSSItem*)GetItemData(nIndex);
ASSERT(pItem);
BOOL bStatus = !pItem->GetRedFlag();
pItem->SetRedFlag( bStatus );
SetRedFlagItem( nIndex,bStatus );
if( pMainWnd->GetWorkingChannel() )
pMainWnd->GetWorkingChannel()->SetSaveTag(TRUE);
else
{
pItem->GetParentChannel()->SetSaveTag(TRUE);
pMainWnd->GetRSSManager()->GetWriter()->Save( pItem->GetParentChannel(),pItem->GetParentChannel()->GetCacheGUID() );
}
}
}
}
void CBeeReaderView::OnMarkAllItem(UINT nID)
{
int iMarkType = nID - IDM_LIST_FLAGS_01;
if( iMarkType < 0 || iMarkType > 3 ) return;
CRSSItem* pItem;
BOOL bStatus;
CMainFrame* pMainWnd = (CMainFrame*)AfxGetMainWnd();
ASSERT(pMainWnd);
for( int i=0 ; i<GetListCtrl().GetItemCount(); i++ )
{
pItem = (CRSSItem*)GetItemData(i);
ASSERT(pItem);
if( iMarkType < 2 )
{
bStatus = iMarkType==0 ? TRUE : FALSE;
if( pItem->GetReadStatus() == bStatus ) continue;
pItem->SetReadStatus( bStatus );
SetBoldItem( i,!bStatus );
if( pMainWnd->GetWorkingChannel() )
pMainWnd->GetWorkingChannel()->SetSaveTag(TRUE);
else
{
pItem->GetParentChannel()->SetSaveTag(TRUE);
pMainWnd->GetRSSManager()->GetWriter()->Save( pItem->GetParentChannel(),pItem->GetParentChannel()->GetCacheGUID() );
pMainWnd->GetNewsTree()->SendMessage(WM_UPDATE_ITEMCOUNT,0,(LPARAM)pItem->GetParentChannel());
}
LV_ITEM lvitem;
lvitem.mask=LVIF_IMAGE;
lvitem.iItem=i;
lvitem.iSubItem=0;
if( bStatus )
lvitem.iImage= 2;
else
lvitem.iImage = 1;
GetListCtrl().SetItem(&lvitem);
GetListCtrl().RedrawItems(i,i);
}
else
{
bStatus = iMarkType == 2 ? TRUE : FALSE;
pItem->SetRedFlag( bStatus );
SetRedFlagItem( i,bStatus );
if( pMainWnd->GetWorkingChannel() )
pMainWnd->GetWorkingChannel()->SetSaveTag(TRUE);
else
{
pItem->GetParentChannel()->SetSaveTag(TRUE);
pMainWnd->GetRSSManager()->GetWriter()->Save( pItem->GetParentChannel(),pItem->GetParentChannel()->GetCacheGUID() );
pMainWnd->GetNewsTree()->SendMessage(WM_UPDATE_ITEMCOUNT,0,(LPARAM)pItem->GetParentChannel());
}
}
}
if( pMainWnd->GetWorkingChannel() )
pMainWnd->GetNewsTree()->SendMessage(WM_UPDATE_ITEMCOUNT,0,(LPARAM)pItem->GetParentChannel());
}
void CBeeReaderView::OnRemoveItem(UINT nID)
{
CRSSItem* pItem;
CMainFrame* pMainWnd = (CMainFrame*)AfxGetMainWnd();
ASSERT(pMainWnd);
int nItem = -1,i;
if( MessageBox(_T("删除的项将不可恢复,确定删除吗?"),_T("系统提示")
,MB_YESNO|MB_ICONQUESTION) == IDNO )
return;
GetListCtrl().LockWindowUpdate();
if( nID == IDM_LIST_DELETE_01 )
{
int uSelectedCount = GetListCtrl().GetSelectedCount();
if (uSelectedCount > 0)
{
for (i=0;i < uSelectedCount;i++)
{
nItem = GetListCtrl().GetNextItem(nItem, LVNI_SELECTED);
ASSERT(nItem != -1);
pItem = (CRSSItem*)GetItemData(nItem);
ASSERT(pItem);
pItem->GetParentChannel()->RemoveItem(pItem);
DeleteItem(nItem);
}
}
}
else
{
for( i=0; i < GetListCtrl().GetItemCount(); i++ )
{
pItem = (CRSSItem*)GetItemData(i);
ASSERT(pItem);
switch( nID )
{
case IDM_LIST_DELETE_02:
{
pItem->GetParentChannel()->RemoveItem(pItem);
DeleteItem(i);
i--;
break;
}
case IDM_LIST_DELETE_03:
{
if( pItem->GetReadStatus() )
{
pItem->GetParentChannel()->RemoveItem(pItem);
DeleteItem(i);
i--;
}
break;
}
case IDM_LIST_DELETE_04:
{
if(!pItem->GetReadStatus() )
{
pItem->GetParentChannel()->RemoveItem(pItem);
DeleteItem(i);
i--;
}
break;
}
case IDM_LIST_DELETE_05:
{
if( pItem->GetRedFlag() )
{
pItem->GetParentChannel()->RemoveItem(pItem);
DeleteItem(i);
i--;
}
break;
}
case IDM_LIST_DELETE_06:
{
if( !pItem->GetRedFlag() )
{
pItem->GetParentChannel()->RemoveItem(pItem);
DeleteItem(i);
i--;
}
break;
}
default:break;
}//swicth end.
if( !pMainWnd->GetWorkingChannel() )
{
pItem->GetParentChannel()->SetSaveTag(TRUE);
pMainWnd->GetRSSManager()->GetWriter()->Save( pItem->GetParentChannel(),pItem->GetParentChannel()->GetCacheGUID() );
pMainWnd->GetNewsTree()->SendMessage(WM_UPDATE_ITEMCOUNT,0,(LPARAM)pItem->GetParentChannel());
}
} //for end.
}//if end;
CXTSortClass csc (&GetListCtrl(), m_nSortedCol);
csc.Sort (m_bAscending ? true : false, DT_STRING);
GetListCtrl().UnlockWindowUpdate();
if( pMainWnd->GetWorkingChannel() )
{
pMainWnd->GetWorkingChannel()->SetSaveTag(TRUE);
pMainWnd->GetNewsTree()->SendMessage(WM_UPDATE_ITEMCOUNT,0,(LPARAM)pMainWnd->GetWorkingChannel());
}
}
void CBeeReaderView::OnFilterItem(UINT nID)
{
m_iFilter = nID - IDM_LIST_FILTER_01;
CMainFrame* pMainWnd = (CMainFrame*)AfxGetMainWnd();
ASSERT(pMainWnd);
DisplayItem(pMainWnd->GetWorkingChannel());
pMainWnd->m_CobFilter.SetCurSel(m_iFilter);
}
void CBeeReaderView::OnSortItem(UINT nID)
{
int iCol;
switch( nID )
{
case IDM_LIST_SORTS_01:
iCol = 0;
break;
case IDM_LIST_SORTS_02:
iCol = 1;
break;
case IDM_LIST_SORTS_03:
iCol = 3;
break;
case IDM_LIST_SORTS_04:
iCol = 4;
break;
default:
return;
}
CHeaderCtrl* pHeaderCtrl =GetListCtrl().GetHeaderCtrl();
ASSERT(pHeaderCtrl);
HD_NOTIFY nm;
nm.iItem = iCol;
nm.iButton = 0;
nm.hdr.hwndFrom = pHeaderCtrl->GetSafeHwnd();
nm.hdr.idFrom = 0;
nm.hdr.code = HDN_ITEMCLICKA ;
SendMessage( WM_NOTIFY,0,(LPARAM)&nm);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -