void PanelView::Reload(void) //////////////////////////////////////////////////////////////////////// { switch (m_PanelMode) { case PM_NORMAL: ClearFileList(); ReadDirectory(); break; case PM_DISKS: ClearFileList(); ReadDisks(); break; } }
void PanelView::Reload(const char *itemname) //////////////////////////////////////////////////////////////////////// { switch (m_PanelMode) { case PM_NORMAL: ClearFileList(); ReadDirectory(itemname); break; case PM_DISKS: ClearFileList(); ReadDisks(); break; } }
void CPRJ3_0613Dlg::OnBnClickedGengxinliebiao() { int retval; //清空原有的文件列表 ClearFileList(); if (filelist_sock != 0){ closesocket(filelist_sock); filelist_sock = 0; fl_sock_status = S_CLOSE; } //Recurse(_T("E:\\实验程序")); // TODO: 在此添加控件通知处理程序代码 CtlPDU *sendbuff = (CtlPDU *)malloc(sizeof(CtlPDU)); sendbuff->type = CTL_PDU_TYPE; sendbuff->cmd = REQ_FILELIST; sendbuff->len = 0; retval = send(CtlSock, (char *)sendbuff, 1 + 1 + 1, 0); if (retval < 1 + 1 + 1){ MessageBox(_T("发送文件列表请求失败!"), _T("发送错误"), MB_OK); return; } }
void PanelView::GotoDisks(void) //////////////////////////////////////////////////////////////////////// { SetPanelMode(PM_DISKS); m_PathStringView->SetText("Mounted disks:"); ClearFileList(); ReadDisks(); }
void PanelView::GotoRoot(void) //////////////////////////////////////////////////////////////////////// { SetPanelMode(PM_NORMAL); m_Path.SetTo("/"); SetPathStringView(); ClearFileList(); ReadDirectory(); }
void PanelView::Reload(int index) //////////////////////////////////////////////////////////////////////// { switch (m_PanelMode) { case PM_NORMAL: ClearFileList(); ReadDirectory(); if (index > (m_CustomListView->IndexOf(m_CustomListView->LastItem()))) index = m_CustomListView->IndexOf(m_CustomListView->LastItem()); m_CustomListView->Select(index,false); // false -> remove previously selected item(s)... break; case PM_DISKS: ClearFileList(); ReadDisks(); m_CustomListView->Select(index,false); // false -> remove previously selected item(s)... break; } }
void PanelView::GotoDesktop(void) //////////////////////////////////////////////////////////////////////// { BPath dirPath; find_directory(B_DESKTOP_DIRECTORY, &dirPath, true); SetPanelMode(PM_NORMAL); m_Path.SetTo(dirPath.Path()); SetPathStringView(); ClearFileList(); ReadDirectory(); }
void ClearPaKDir(DIRECTORY **dir) { DIRECTORY *d1 = *dir, *d2; while(d1) { ClearFileList(&(d1->files)); d2 = d1; d1 = d1->next; free(d2); } }
void PanelView::ChangePath(const char *p) //////////////////////////////////////////////////////////////////////// { if (DoesEntryExist(p)) { m_Path.SetTo(p); SetPathStringView(); ClearFileList(); ReadDirectory(); } else GotoRoot(); }
void PanelView::GotoParent(void) //////////////////////////////////////////////////////////////////////// { // To set the cursor to the child entry where we came from... BString oldpath; SetPanelMode(PM_NORMAL); oldpath.SetTo(m_Path.String()); oldpath.Remove(0,oldpath.FindLast('/')+1); BPath path((const char *)m_Path.String()); if (path.GetParent(&path)==B_OK) m_Path.SetTo(path.Path()); SetPathStringView(); ClearFileList(); ReadDirectory(oldpath.String()); }
void PanelView::EnterDirectory(const char *p) //////////////////////////////////////////////////////////////////////// { char buf[256]; // TODO: mi a leghosszabb? Ki kellene keresni... int len = m_Path.Length(); // Ha mar van elotte / jel... if (m_Path.ByteAt(len-1)=='/') sprintf(buf,"%s%s",m_Path.String(),p); else sprintf(buf,"%s/%s",m_Path.String(),p); if (DoesEntryExist(p)) { m_Path.SetTo(buf); SetPathStringView(); ClearFileList(); ReadDirectory(); } else GotoRoot(); }
// // initialization // STDMETHODIMP CSDShellExt::Initialize (LPCITEMIDLIST pidlFolder, LPDATAOBJECT pDataObj, HKEY hProgID) { FORMATETC fmt = { CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }; STGMEDIUM stg = { TYMED_HGLOBAL }; HDROP hDrop; // // Look for CF_HDROP data in the data object. If there // is no such data, return an error back to Explorer. // if (FAILED(pDataObj->GetData(&fmt, &stg))) { return E_INVALIDARG; } // // check if extension is enabled // DWORD bufferSize = 4; DWORD keyType = REG_DWORD; SHGetValue(HKEY_CURRENT_USER, SecureDeleteKey, ShellNormalEnabled, &keyType, &normalEnabled, &bufferSize); SHGetValue(HKEY_CURRENT_USER, SecureDeleteKey, ShellMoveEnabled, &keyType, &moveEnabled, &bufferSize); SHGetValue(HKEY_CURRENT_USER, SecureDeleteKey, ShellRecycleEnabled, &keyType, &recycleEnabled, &bufferSize); if(!normalEnabled && !moveEnabled && !recycleEnabled) { // none of the features enabled return E_INVALIDARG; } // // reset data header // dataHeader.operationType = 0; dataHeader.objectCount = 0; // // get drop folder if drag-n-drop operation // if(pidlFolder != NULL && SHGetPathFromIDList(pidlFolder, dataHeader.data1)) { dataHeader.operationType = MOVE_OPERATION; } // // Get a pointer to the actual data. // hDrop = (HDROP)GlobalLock(stg.hGlobal); // // Make sure it worked. // if (hDrop == NULL) { return E_INVALIDARG; } // // get the files // unsigned int fileNumber = DragQueryFile (hDrop, 0xFFFFFFFF, NULL, 0); HRESULT hr = S_OK; if (fileNumber == 0) { GlobalUnlock (stg.hGlobal); ReleaseStgMedium (&stg); return E_INVALIDARG; } // // get the file names // wchar_t buffer[MAX_PATH]; ClearFileList(); for(unsigned int i = 0;i < fileNumber;i++) { if(DragQueryFile(hDrop, i, buffer, MAX_PATH) == 0) { // // error, abort // hr = E_INVALIDARG; break; } // // allocate string // int length = wcslen(buffer); wchar_t *name = new wchar_t[length + 1]; wcscpy(name, buffer); // // insert into the list // fileList.insert(&name); } GlobalUnlock(stg.hGlobal); ReleaseStgMedium(&stg); return hr; }