⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 beereaderview.cpp

📁 beereader source code
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	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 + -