Esempio n. 1
0
BOOL CSortListCtrl::DeleteAllItems()
{
	for( int iItem = 0; iItem < GetItemCount(); iItem ++ )
		FreeItemMemory( iItem );

	return CListCtrl::DeleteAllItems();
}
Esempio n. 2
0
void CSortListCtrl::OnDestroy() 
{
	for( int iItem = 0; iItem < GetItemCount(); iItem ++ )
		FreeItemMemory( iItem );

	CListCtrl::OnDestroy();
}
/*
	OnDestroy()
*/
void CWallBrowserFileView::OnDestroy(void)
{
	// deve eliminare gli elementi della lista
    FreeItemMemory();

    CListViewEx::OnDestroy();
}
Esempio n. 4
0
BOOL CSortListCtrl::DeleteItem(int iItem)
{

	FreeItemMemory(iItem);
	return CListCtrl::DeleteItem(iItem);

}
Esempio n. 5
0
void CFileView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
{
    if (lHint == 0x5A) {
		FreeItemMemory ();
		GetListCtrl ().DeleteAllItems ();
		Refresh ((LPCTSTR) pHint);
		return;
	}	
	CListView::OnUpdate (pSender, lHint, pHint);
}
Esempio n. 6
0
void CFileView::OnDestroy() 
{
	FreeItemMemory ();
	CListView::OnDestroy ();
}
/*
	OnUpdate()
*/
void CWallBrowserFileView::OnUpdate(CView* pView,LPARAM lHint,CObject* pHint)
{
	BOOL bHint = FALSE;
	static BOOL bTreeExpanded = FALSE;

	if(lHint & ONUPDATE_FLAG_TREEEXPANDED)
	{
		TRACE("%s(%d): receiving ONUPDATE_FLAG_TREEEXPANDED\n",__FILE__,__LINE__);
		bTreeExpanded = TRUE;

		CWallBrowserDoc* pDoc = (CWallBrowserDoc*)GetDocument();
		if(pDoc)
		{
			TRACE("%s(%d): sending ONUPDATE_FLAG_TREEEXPANDEDEX\n",__FILE__,__LINE__);
			pDoc->UpdateAllViews(NULL,ONUPDATE_FLAG_TREEEXPANDEDEX);
		}
	}

	if(!bTreeExpanded)
		goto done;

	if(lHint & ONUPDATE_FLAG_DIRSELECTED)
	{
		TRACE("%s(%d): receiving ONUPDATE_FLAG_DIRSELECTED\n",__FILE__,__LINE__);
		
		// ri-selezionando la directory, riposiziona sul primo file della lista
		if(m_nPictures > 0)
			OnSelectItem(0);
		
		bHint = TRUE;
	}
	if((lHint & ONUPDATE_FLAG_TREEEXPANDED) || (lHint & ONUPDATE_FLAG_DIRCHANGED) || (lHint & ONUPDATE_FLAG_DIRUPDATED))
	{
		TRACE("%s(%d): receiving ONUPDATE_FLAG_TREEEXPANDED || ONUPDATE_FLAG_DIRCHANGED || ONUPDATE_FLAG_DIRUPDATED\n",__FILE__,__LINE__);
		
		// salva l'elemento corrente della lista per il confronto nel caso in cui venga aggiornata la directory
		char szItem[_MAX_PATH+1];
		int nItem = GetCurrentItem(szItem,sizeof(szItem));

		SetRedraw(FALSE);
		FreeItemMemory();
		GetListCtrl().DeleteAllItems();
		SetCurrentItem(0);
		SetRedraw(TRUE);

		CWallBrowserDoc* pDoc = (CWallBrowserDoc*)GetDocument();
		if(pDoc)
		{
			pDoc->SetPictureFlag(FALSE);
			pDoc->ResetFileName();
			
			if(m_pMainFrameStatusBar)
				m_pMainFrameStatusBar->SetPaneText(ID_INDICATOR_FILENAME_ID,"reading directory...");

			LoadList(pDoc->GetPathName());
			
			if(m_pMainFrameStatusBar)
				m_pMainFrameStatusBar->SetPaneText(ID_INDICATOR_FILENAME_ID,"");
		}

		CWnd* pWnd = AfxGetMainWnd();
		if(pWnd)
		{
			pWnd->SendMessage(WM_VIEW_PREVIOUS_PICTURE,m_nPictures > 0 ? TRUE : FALSE,0L);
			pWnd->SendMessage(WM_VIEW_NEXT_PICTURE,m_nPictures > 0 ? TRUE : FALSE,0L);
		}
		
		if(m_nPictures > 0)
		{
			if(lHint & ONUPDATE_FLAG_DIRUPDATED)
			{
				COnUpdateInfo* pOnUpdateInfo = (COnUpdateInfo*)pHint;
				strcpyn(szItem,pOnUpdateInfo->GetInfo(),sizeof(szItem));

				LVFINDINFO lv = {0};
				lv.flags = LVFI_STRING;
				lv.psz = szItem;
				if((nItem = GetListCtrl().FindItem(&lv,-1)) < 0)
					nItem = 0;
			}
			else
				nItem = 0;

			OnSelectItem(nItem);
		}
		else
			memset(m_szFileName,'\0',sizeof(m_szFileName));

		bHint = TRUE;
	}
	if(lHint & ONUPDATE_FLAG_DEFAULTLIBRARY)
	{
		TRACE("%s(%d): receiving ONUPDATE_FLAG_DEFAULTLIBRARY\n",__FILE__,__LINE__);
		
		char szItem[_MAX_PATH+1];
		int nItem = GetCurrentItem(szItem,sizeof(szItem));
		int nTotItems = GetListCtrl().GetItemCount();

		SetRedraw(FALSE);
		FreeItemMemory();
		GetListCtrl().DeleteAllItems();
		SetCurrentItem(0);
		SetRedraw(TRUE);

		CWallBrowserDoc* pDoc = (CWallBrowserDoc*)GetDocument();
		if(pDoc)
		{
			if(m_pMainFrameStatusBar)
				m_pMainFrameStatusBar->SetPaneText(ID_INDICATOR_FILENAME_ID,"reading directory...");

			LoadList(pDoc->GetPathName());
			
			if(m_pMainFrameStatusBar)
				m_pMainFrameStatusBar->SetPaneText(ID_INDICATOR_FILENAME_ID,"");
		}

		// per gestire il cambio di libreria senza ridisegnare l'immagine se rimane la stessa
		BOOL bChanged = FALSE;

		if(nTotItems==GetListCtrl().GetItemCount())
		{
			strcpyn(m_szFileName,szItem,sizeof(m_szFileName));
			{
				LV_ITEM lvitem;
				lvitem.mask = LVIF_TEXT;
				lvitem.iItem = nItem;
				lvitem.iSubItem = 0;
				lvitem.pszText = szItem;
				lvitem.cchTextMax = sizeof(szItem)-1;
				GetListCtrl().GetItem(&lvitem);
			}
			if(strcmp(m_szFileName,szItem)!=0)
			{
				memset(m_szFileName,'\0',sizeof(m_szFileName));
				bChanged = TRUE;
			}

			OnSelectItem(nItem);
		}
		else
		{
			bChanged = TRUE;

			nTotItems = GetListCtrl().GetItemCount();
			
			if(nItem > nTotItems-1)
				nItem = nTotItems-1;
			if(nItem >= 0)
				OnSelectItem(nItem);
		}

		CWnd* pWnd = AfxGetMainWnd();
		if(pWnd)
		{
			pWnd->SendMessage(WM_VIEW_PREVIOUS_PICTURE,nTotItems > 0 ? TRUE : FALSE,0L);
			pWnd->SendMessage(WM_VIEW_NEXT_PICTURE,nTotItems > 0 ? TRUE : FALSE,0L);
		}
		
		bHint = TRUE;
	}

	if(m_pMainFrameStatusBar)
	{
		char szStatus[_MAX_PATH+1];
		_snprintf(szStatus,
				sizeof(szStatus)-1,
				"%d file(s)",
				m_nFiles
				);
		m_pMainFrameStatusBar->SetPaneText(ID_INDICATOR_FILES_ID,szStatus);

		_snprintf(szStatus,
				sizeof(szStatus)-1,
				"%d picture(s)",
				m_nPictures
				);
		m_pMainFrameStatusBar->SetPaneText(ID_INDICATOR_PICTURES_ID,szStatus);
	}

done:
	
	if(!bHint)
		CListViewEx::OnUpdate(pView,lHint,pHint);
}