CLocalListView::CLocalListView(wxWindow* pParent, CState *pState, CQueueView *pQueue) : CFileListCtrl<CLocalFileData>(pParent, pState, pQueue), CStateEventHandler(pState) { wxGetApp().AddStartupProfileRecord(_T("CLocalListView::CLocalListView")); m_pState->RegisterHandler(this, STATECHANGE_LOCAL_DIR); m_pState->RegisterHandler(this, STATECHANGE_APPLYFILTER); m_pState->RegisterHandler(this, STATECHANGE_LOCAL_REFRESH_FILE); m_dropTarget = -1; const unsigned long widths[4] = { 120, 80, 100, 120 }; AddColumn(_("Filename"), wxLIST_FORMAT_LEFT, widths[0], true); AddColumn(_("Filesize"), wxLIST_FORMAT_RIGHT, widths[1]); AddColumn(_("Filetype"), wxLIST_FORMAT_LEFT, widths[2]); AddColumn(_("Last modified"), wxLIST_FORMAT_LEFT, widths[3]); LoadColumnSettings(OPTION_LOCALFILELIST_COLUMN_WIDTHS, OPTION_LOCALFILELIST_COLUMN_SHOWN, OPTION_LOCALFILELIST_COLUMN_ORDER); InitSort(OPTION_LOCALFILELIST_SORTORDER); SetImageList(GetSystemImageList(), wxIMAGE_LIST_SMALL); #ifdef __WXMSW__ m_pVolumeEnumeratorThread = 0; #endif InitHeaderSortImageList(); SetDropTarget(new CLocalListViewDropTarget(this)); EnablePrefixSearch(true); }
CLocalTreeView::CLocalTreeView(wxWindow* parent, wxWindowID id, CState *pState, CQueueView *pQueueView) : wxTreeCtrlEx(parent, id, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxTR_EDIT_LABELS | wxTR_LINES_AT_ROOT | wxTR_HAS_BUTTONS | wxNO_BORDER), CSystemImageList(16), CStateEventHandler(pState), m_pQueueView(pQueueView) { wxGetApp().AddStartupProfileRecord(_T("CLocalTreeView::CLocalTreeView")); #ifdef __WXMAC__ SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)); #endif pState->RegisterHandler(this, STATECHANGE_LOCAL_DIR); pState->RegisterHandler(this, STATECHANGE_APPLYFILTER); SetImageList(GetSystemImageList()); #ifdef __WXMSW__ m_pVolumeEnumeratorThread = 0; CreateRoot(); #else wxTreeItemId root = AddRoot(_T("/")); SetItemImage(root, GetIconIndex(dir), wxTreeItemIcon_Normal); SetItemImage(root, GetIconIndex(opened_dir), wxTreeItemIcon_Selected); SetItemImage(root, GetIconIndex(dir), wxTreeItemIcon_Expanded); SetItemImage(root, GetIconIndex(opened_dir), wxTreeItemIcon_SelectedExpanded); SetDir(_T("/")); #endif SetDropTarget(new CLocalTreeViewDropTarget(this)); }
CSearchDialogFileList::CSearchDialogFileList(CSearchDialog* pParent, CState* pState, CQueueView* pQueue) : CFileListCtrl<CSearchFileData>(pParent, pState, pQueue, true), m_searchDialog(pParent) { m_hasParent = false; SetImageList(GetSystemImageList(), wxIMAGE_LIST_SMALL); m_dirIcon = GetIconIndex(dir); InitSort(OPTION_SEARCH_SORTORDER); InitHeaderSortImageList(); const unsigned long widths[7] = { 130, 130, 75, 80, 120, 80, 80 }; AddColumn(_("Filename"), wxLIST_FORMAT_LEFT, widths[0]); AddColumn(_("Path"), wxLIST_FORMAT_LEFT, widths[1]); AddColumn(_("Filesize"), wxLIST_FORMAT_RIGHT, widths[2]); AddColumn(_("Filetype"), wxLIST_FORMAT_LEFT, widths[3]); AddColumn(_("Last modified"), wxLIST_FORMAT_LEFT, widths[4]); AddColumn(_("Permissions"), wxLIST_FORMAT_LEFT, widths[5]); AddColumn(_("Owner/Group"), wxLIST_FORMAT_LEFT, widths[6]); LoadColumnSettings(OPTION_SEARCH_COLUMN_WIDTHS, OPTION_SEARCH_COLUMN_SHOWN, OPTION_SEARCH_COLUMN_ORDER); }
CLocalTreeView::CLocalTreeView(wxWindow* parent, wxWindowID id, CState *pState, CQueueView *pQueueView) : wxTreeCtrl(parent, id, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxTR_EDIT_LABELS | wxTR_LINES_AT_ROOT | wxTR_HAS_BUTTONS | wxNO_BORDER), CSystemImageList(16), CStateEventHandler(pState, STATECHANGE_LOCAL_DIR | STATECHANGE_APPLYFILTER), m_pQueueView(pQueueView) { m_setSelection = false; SetImageList(GetSystemImageList()); #ifdef __WXMSW__ m_pVolumeEnumeratorThread = 0; CreateRoot(); #else AddRoot(_T("/"), GetIconIndex(dir), GetIconIndex(opened_dir)); SetDir(_T("/")); #endif SetDropTarget(new CLocalTreeViewDropTarget(this)); }
wxBitmap CRemoteTreeView::CreateIcon(int index, const wxString& overlay /*=_T("")*/) { // Create memory DC wxSize s = CThemeProvider::GetIconSize(iconSizeSmall); #ifdef __WXMSW__ wxBitmap bmp(s.x, s.y, 32); #else wxBitmap bmp(s.x, s.y, 24); #endif wxMemoryDC dc; dc.SelectObject(bmp); // Make sure the background is set correctly dc.SetBrush(wxBrush(GetBackgroundColour())); dc.SetPen(wxPen(GetBackgroundColour())); dc.DrawRectangle(0, 0, s.x, s.y); // Draw item from system image list GetSystemImageList()->Draw(index, dc, 0, 0, wxIMAGELIST_DRAW_TRANSPARENT); // Load overlay if (!overlay.empty()) { wxImage unknownIcon = wxArtProvider::GetBitmap(overlay, wxART_OTHER, CThemeProvider::GetIconSize(iconSizeSmall)).ConvertToImage(); // Convert mask into alpha channel if (unknownIcon.IsOk() && !unknownIcon.HasAlpha()) { wxASSERT(unknownIcon.HasMask()); unknownIcon.InitAlpha(); } // Draw overlay dc.DrawBitmap(unknownIcon, 0, 0, true); } dc.SelectObject(wxNullBitmap); return bmp; }
CLocalListView::CLocalListView(wxWindow* parent, wxWindowID id, CState *pState, CQueueView *pQueue) : wxListCtrl(parent, id, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxLC_VIRTUAL | wxLC_REPORT | wxNO_BORDER | wxLC_EDIT_LABELS), CSystemImageList(16), CStateEventHandler(pState, STATECHANGE_LOCAL_DIR | STATECHANGE_APPLYFILTER | STATECHANGE_LOCAL_REFRESH_FILE) { m_dropTarget = -1; m_hasParent = true; m_pQueue = pQueue; unsigned long widths[4] = { 120, 80, 100, 120 }; if (!wxGetKeyState(WXK_SHIFT) || !wxGetKeyState(WXK_ALT) || !wxGetKeyState(WXK_CONTROL)) COptions::Get()->ReadColumnWidths(OPTION_LOCALFILELIST_COLUMN_WIDTHS, 4, widths); InsertColumn(0, _("Filename"), wxLIST_FORMAT_LEFT, widths[0]); InsertColumn(1, _("Filesize"), wxLIST_FORMAT_RIGHT, widths[1]); InsertColumn(2, _("Filetype"), wxLIST_FORMAT_LEFT, widths[2]); InsertColumn(3, _("Last modified"), wxLIST_FORMAT_LEFT, widths[3]); wxString sortInfo = COptions::Get()->GetOption(OPTION_LOCALFILELIST_SORTORDER); m_sortDirection = sortInfo[0] - '0'; if (m_sortDirection < 0 || m_sortDirection > 1) m_sortDirection = 0; if (sortInfo.Len() == 3) { m_sortColumn = sortInfo[2] - '0'; if (m_sortColumn < 0 || m_sortColumn > 3) m_sortColumn = 0; } else m_sortColumn = 0; SetImageList(GetSystemImageList(), wxIMAGE_LIST_SMALL); #ifdef __WXMSW__ // Initialize imagelist for list header m_pHeaderImageList = new wxImageListEx(8, 8, true, 3); wxBitmap bmp; bmp.LoadFile(wxGetApp().GetResourceDir() + _T("empty.png"), wxBITMAP_TYPE_PNG); m_pHeaderImageList->Add(bmp); bmp.LoadFile(wxGetApp().GetResourceDir() + _T("up.png"), wxBITMAP_TYPE_PNG); m_pHeaderImageList->Add(bmp); bmp.LoadFile(wxGetApp().GetResourceDir() + _T("down.png"), wxBITMAP_TYPE_PNG); m_pHeaderImageList->Add(bmp); HWND hWnd = (HWND)GetHandle(); if (!hWnd) { delete m_pHeaderImageList; m_pHeaderImageList = 0; return; } HWND header = (HWND)SendMessage(hWnd, LVM_GETHEADER, 0, 0); if (!header) { delete m_pHeaderImageList; m_pHeaderImageList = 0; return; } TCHAR buffer[1000] = {0}; HDITEM item; item.mask = HDI_TEXT; item.pszText = buffer; item.cchTextMax = 999; SendMessage(header, HDM_GETITEM, 0, (LPARAM)&item); SendMessage(header, HDM_SETIMAGELIST, 0, (LPARAM)m_pHeaderImageList->GetHandle()); #endif SetDropTarget(new CLocalListViewDropTarget(this)); #if (!defined(__WIN32__) && !defined(__WXMAC__)) || defined(__WXUNIVERSAL__) // The generic list control a scrolled child window. In order to receive // scroll events, we have to connect the event handler to it. ((wxWindow*)m_mainWin)->Connect(-1, wxEVT_KEY_DOWN, wxKeyEventHandler(CLocalListView::OnKeyDown), 0, this); #endif }
BOOL CFileExplore::OnInitDialog() { CResizableDialog::OnInitDialog(); //m_CheckHeader.Create(IDB_TRAYSTATUS_BITMAP,16,0,0xFF00FF); //m_FileList.GetHeaderCtrl()->SetImageList(&m_CheckHeader); m_SortHeader.SubclassWindow(m_FileList.GetHeaderCtrl()->GetSafeHwnd()); m_iSortingMode = GetOptionInt(IDS_OFSMESSENGER,IDS_FILEL,1); m_hSplitter = AfxGetApp()->LoadCursor(IDC_SPLITH); ShowSizeGrip(FALSE); //m_FileList.SetExtendedStyle (m_FileList.GetExtendedStyle ()|LVS_EX_FULLROWSELECT); m_FileList.SetImageList(CImageList::FromHandle(GetSystemImageList(TRUE)),LVSIL_SMALL); CString strSection = GetString(IDS_OFSMESSENGER); CString strEntry = GetString(IDS_COLUMN_WIDTH); m_FileList.InsertColumn(0,GetString(IDS_FILENAME_NAME),LVCFMT_LEFT,AfxGetApp()->GetProfileInt(strSection, strEntry+_T("30"), 150)); m_FileList.InsertColumn(1,GetString(IDS_FILESIZE_NAME),LVCFMT_RIGHT,AfxGetApp()->GetProfileInt(strSection, strEntry+_T("33"), 80),3); m_FileList.InsertColumn(2,GetString(IDS_FILETYPE_NAME),LVCFMT_LEFT,AfxGetApp()->GetProfileInt(strSection, strEntry+_T("32"), 130),2); m_FileList.InsertColumn(3,GetString(IDS_FILEMODIFIED_NAME),LVCFMT_LEFT,AfxGetApp()->GetProfileInt(strSection, strEntry+_T("31"), 125),1); m_DirTree.SetImageList(CImageList::FromHandle(GetSystemImageList(TRUE)),TVSIL_NORMAL); //m_hRoot = CreateTreeItem(TVI_ROOT,GetString(IDS_MYDOCUMENTS)); //LoadTreeByPath(m_hRoot,m_strStartFolder); //m_DirTree.Expand(m_hRoot,TVE_EXPAND); /* CString strDefaultPath = GetDefaultPath(); CString strPathAddon = GetStartFolder(); while(!strDefaultPath.IsEmpty()) { int Pos = strDefaultPath.Find(_T('\\')); if(Pos==-1) { strPathAddon += _T('\\')+strDefaultPath; } else { strPathAddon += _T('\\')+strDefaultPath.Left(Pos); strDefaultPath = strDefaultPath.Mid(Pos+1); } LoadTreeByPath(m_hRoot,m_strStartFolder); }*/ AddAnchor(&m_DirTree,CSize(0,0),CSize(0,100)); AddAnchor(&m_VSplitter,CSize(0,0),CSize(0,100)); AddAnchor(&m_FileList,CSize(0,0),CSize(100,100)); HANDLE hHanle1 = GetProp(m_FileList.GetSafeHwnd(),(LPCTSTR)(DWORD)0xC01C); m_OleFileListDropTarget.Register(&m_FileList); m_OleDirTreeDropTarget.Register(&m_DirTree); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }