// Declared const due to design error in wxWidgets. // Won't be fixed since a fix would break backwards compatibility // Both functions use a const_cast<CLocalListView *>(this) and modify // the instance. wxString CLocalListView::OnGetItemText(long item, long column) const { CLocalListView *pThis = const_cast<CLocalListView *>(this); t_fileData *data = pThis->GetData(item); if (!data) return _T(""); if (!column) return data->name; else if (column == 1) { if (data->size < 0) return _T(""); else return wxLongLong(data->size).ToString(); } else if (column == 2) { if (!item && m_hasParent) return _T(""); if (data->fileType == _T("")) data->fileType = pThis->GetType(data->name, data->dir); return data->fileType; } else if (column == 3) { if (!data->hasTime) return _T(""); return data->lastModified.Format(_T("%c")); } return _T(""); }
// See comment to OnGetItemText int CLocalListView::OnGetItemImage(long item) const { CLocalListView *pThis = const_cast<CLocalListView *>(this); t_fileData *data = pThis->GetData(item); if (!data) return -1; int &icon = data->icon; if (icon == -2) { wxString path = _T(""); if (data->name != _T("..")) { #ifdef __WXMSW__ if (m_dir == _T("\\")) path = data->name + _T("\\"); else #endif path = m_dir + data->name; } icon = pThis->GetIconIndex(data->dir ? dir : file, path); } return icon; }
wxListItemAttr* CLocalListView::OnGetItemAttr(long item) const { CLocalListView *pThis = const_cast<CLocalListView *>(this); const CLocalFileData* const data = pThis->GetData((unsigned int)item); if (!data) return 0; #ifndef __WXMSW__ if (item == m_dropTarget) return &pThis->m_dropHighlightAttribute; #endif switch (data->flags) { case different: return &pThis->m_comparisonBackgrounds[0]; case lonely: return &pThis->m_comparisonBackgrounds[1]; case newer: return &pThis->m_comparisonBackgrounds[2]; default: return 0; } return 0; }