📄 filebrowserdlg.cpp
字号:
ErrorMessageDlg(L"CFileBrowserDlg::OnButtonCopyphone2pc(): CONACopyFile failed!", dwResult);
}
else
{
// show updated folder listing
m_lbPCFiles.ShowFiles();
AfxMessageBox(L"Copy completed succesfully!");
}
}
}
TRACE(L"CFileBrowserDlg::OnButtonCopyphone2pc(): End\n");
}
//===================================================================
// OnButtonCreate
//
// Creates new folder to selected phone folder
//===================================================================
void CFileBrowserDlg::OnButtonCreate()
{
TRACE(L"CFileBrowserDlg::OnButtonCreate(): Begin\n");
CCreateDlg dlg;
dlg.m_strName = L"";
if(dlg.DoModal() == IDOK)
{
FSHANDLE hFS = m_lbPhones.GetFSHandle();
if(hFS)
{
CString strPhoneFolder = m_lbPhones.GetCurrentFolder();
CFileOperationListener* pListener = new CFileOperationListener(m_hWnd,
hFS,
L"Creating",
strPhoneFolder + L"\\" + dlg.m_strName,
L"");
DWORD dwResult = CONACreateFolder(hFS, dlg.m_strName, strPhoneFolder);
delete pListener;
pListener = NULL;
if(dwResult != CONA_OK)
{
ErrorMessageDlg(L"CFileBrowserDlg::OnButtonCreate(): CONACreateFolder failed!", dwResult);
}
else
{
// show updated folder listing
m_lbPhones.ShowPhoneFolder(strPhoneFolder);
AfxMessageBox(L"Create folder completed succesfully!");
}
}
}
TRACE(L"CFileBrowserDlg::OnButtonCreate(): End\n");
}
//===================================================================
// OnButtonRename
//
// Renames selected phone file/folder
//===================================================================
void CFileBrowserDlg::OnButtonRename()
{
TRACE(L"CFileBrowserDlg::OnButtonRename(): Begin\n");
BOOL bIsFile = TRUE; // selected item is file - not folder
if(m_lbPhones.GetCurSel() != LB_ERR)
{
CRenameDlg dlg;
dlg.m_strOldName = m_lbPhones.GetCurrentFile();
if(dlg.m_strOldName.IsEmpty())
{
bIsFile = FALSE; // selected item is folder - not file
dlg.m_strOldName = m_lbPhones.GetSelectedFolder();
}
if(!dlg.m_strOldName.IsEmpty())
{
if(dlg.DoModal() == IDOK)
{
FSHANDLE hFS = m_lbPhones.GetFSHandle();
if(hFS)
{
CString strPhoneFolder = m_lbPhones.GetCurrentFolder();
CString strNewName = dlg.m_strNewName;
CString strOldName = dlg.m_strOldName;
strOldName = strOldName.Mid(strOldName.ReverseFind('\\') + 1);
DWORD dwResult = ECONA_FAILED;
if(bIsFile)
{
dwResult = CONARenameFile(hFS, strOldName, strNewName, strPhoneFolder);
if(dwResult != CONA_OK)
{
ErrorMessageDlg(L"CFileBrowserDlg::OnButtonRename(): CONARenameFile failed!", dwResult);
}
}
else
{
dwResult = CONARenameFolder(hFS, strOldName, strNewName, strPhoneFolder);
if(dwResult != CONA_OK)
{
ErrorMessageDlg(L"CFileBrowserDlg::OnButtonRename(): CONARenameFolder failed!", dwResult);
}
}
// show updated folder listing
m_lbPhones.ShowPhoneFolder(strPhoneFolder);
if(dwResult == CONA_OK)
{
AfxMessageBox(L"Rename completed succesfully!");
}
}
}
}
else
{
CONAPI_DEVICE* pDevice = (CONAPI_DEVICE*)m_lbPhones.GetItemDataPtr(m_lbPhones.GetCurSel());
dlg.m_strOldName = pDevice->pstrFriendlyName;
if(!dlg.m_strOldName.IsEmpty())
{
if(dlg.DoModal() == IDOK)
{
WCHAR szNewName[MAX_PATH] = {0};
wcsncpy_s(szNewName, MAX_PATH, dlg.m_strNewName, MAX_PATH);
TRACE(L"CFileBrowserDlg::OnButtonRename(): %s --> %s, Calling RenameFriendlyName(%s, %s)...\n", dlg.m_strOldName, szNewName, pDevice->pstrSerialNumber, szNewName);
DWORD dwResult = CONARenameFriendlyName(m_lbPhones.GetDMHandle(), pDevice->pstrSerialNumber, szNewName);
if(dwResult != CONA_OK)
{
ErrorMessageDlg(L"CFileBrowserDlg::OnButtonRename(): RenameFriendlyName failed!", dwResult);
}
else
{
m_lbPhones.ListAllPhones();
}
}
}
}
}
else
{
AfxMessageBox(L"Please select file/folder to be renamed.");
}
TRACE(L"CFileBrowserDlg::OnButtonRename(): End\n");
}
//===================================================================
// OnButtonDelete
//
// Deletes selected phone file/folder
//===================================================================
void CFileBrowserDlg::OnButtonDelete()
{
TRACE(L"CFileBrowserDlg::OnButtonDelete(): Begin\n");
if(m_lbPhones.GetState() == PHONELIST_STATE_PHONECONTENT)
{
CString strMessage;
FSHANDLE hFS = m_lbPhones.GetFSHandle();
if(hFS)
{
CString strSelectedtxt = L"";
int cursel = m_lbPhones.GetCurSel();
if(cursel != LB_ERR)
{
m_lbPhones.GetText(cursel, strSelectedtxt);
}
CString strSelectedFile = m_lbPhones.GetCurrentFile();
if(!strSelectedFile.IsEmpty())
{
CString strPhoneFile = m_lbPhones.GetCurrentFile();
CString strPhoneFolder = m_lbPhones.GetSelectedFolder();
strMessage.Format(L"Are you sure you want to permanently delete file '%s' from folder '%s'?", strPhoneFile, strPhoneFolder);
if(AfxMessageBox(strMessage, MB_YESNO) == IDYES)
{
CFileOperationListener* pListener = new CFileOperationListener(m_hWnd,
hFS,
L"Deleting",
strPhoneFolder + L"\\" + strPhoneFile,
L"");
DWORD dwResult = CONADeleteFile(hFS,
strPhoneFile,
strPhoneFolder);
delete pListener;
pListener = NULL;
if(dwResult != CONA_OK)
{
ErrorMessageDlg(L"CFileBrowserDlg::OnButtonDelete(): CONADeleteFile failed!", dwResult);
}
else
{
// show updated folder listing
m_lbPhones.ShowPhoneFolder(strPhoneFolder);
AfxMessageBox(L"Delete file completed succesfully!");
}
}
}
else if(!strSelectedtxt.IsEmpty() && strSelectedtxt != L"[..]")
{
WCHAR strPhoneFolder[MAX_PATH] = {0};
wcsncpy_s(strPhoneFolder, MAX_PATH, m_lbPhones.GetSelectedFolder(), MAX_PATH);
::PathRemoveFileSpec(strPhoneFolder);
CString strFolder = *((CString*)m_lbPhones.GetItemDataPtr(m_lbPhones.GetCurSel()));
strMessage.Format(L"Are you sure you want to permanently delete folder '%s' from folder '%s'?", strFolder, strPhoneFolder);
if(AfxMessageBox(strMessage, MB_YESNO) == IDYES)
{
CFileOperationListener* pListener = new CFileOperationListener(m_hWnd,
hFS,
L"Deleting",
CString(strPhoneFolder) + L"\\" + strFolder,
L"");
DWORD dwResult = CONADeleteFolder(hFS, strFolder, CONA_DELETE_FOLDER_WITH_FILES, strPhoneFolder);
delete pListener;
pListener = NULL;
if(dwResult != CONA_OK)
{
ErrorMessageDlg(L"CFileBrowserDlg::OnButtonDelete(): CONADeleteFolder failed!", dwResult);
}
else
{
// show updated folder listing
m_lbPhones.ShowPhoneFolder(strPhoneFolder);
AfxMessageBox(L"Delete folder completed succesfully!");
}
}
}
else
{
AfxMessageBox(L"Select file/folder to be deleted.");
}
}
}
else
{ // state is phonelist
AfxMessageBox(L"Please select phone file/folder to be deleted.");
}
TRACE(L"CFileBrowserDlg::OnButtonDelete(): End\n");
}
//===================================================================
// OnButtonInfo
//
// Show information dialog of selected phone file/folder
//===================================================================
void CFileBrowserDlg::OnButtonInfo()
{
TRACE(L"CFileBrowserDlg::OnButtonInfo(): Begin\n");
if(m_lbPhones.GetState() == PHONELIST_STATE_PHONECONTENT)
{
CString strMessage;
FSHANDLE hFS = m_lbPhones.GetFSHandle();
if(hFS)
{
CString strSelectedtxt = L"";
int cursel = m_lbPhones.GetCurSel();
if(cursel != LB_ERR)
{
m_lbPhones.GetText(cursel, strSelectedtxt);
}
CString strSelectedFile = m_lbPhones.GetCurrentFile();
if(!strSelectedFile.IsEmpty())
{
CString strPhoneFile = m_lbPhones.GetCurrentFile();
CString strPhoneFolder = m_lbPhones.GetSelectedFolder();
CONAPI_FILE_INFO fileInfo = {0};
DWORD dwResult = CONAGetFileInfo(hFS, strPhoneFile, &fileInfo, strPhoneFolder);
if(dwResult == CONA_OK)
{
CInfoDlg dlg;
dlg.SetFileInfo(&fileInfo);
dlg.DoModal();
CONAFreeFileInfoStructure(&fileInfo);
}
else
{
ErrorMessageDlg(L"CFileBrowserDlg::OnButtonInfo(): CONAGetFileInfo failed!", dwResult);
}
}
else if(!strSelectedtxt.IsEmpty() && strSelectedtxt != L"[..]")
{
WCHAR strPhoneFolder[MAX_PATH] = {0};
wcsncpy_s(strPhoneFolder, MAX_PATH, m_lbPhones.GetSelectedFolder(), MAX_PATH);
if(strPhoneFolder[wcslen(strPhoneFolder) - 1] == L':')
{
wcscpy_s(strPhoneFolder, L"\\\\");
}
else
{
::PathRemoveFileSpec(strPhoneFolder);
}
CString strFolder = *((CString*)m_lbPhones.GetItemDataPtr(m_lbPhones.GetCurSel()));
CONAPI_FOLDER_CONTENT info;
info.dwSize = sizeof(CONAPI_FOLDER_CONTENT);
DWORD dwResult = CONAGetFolderInfo(hFS, CONA_GET_FOLDER_INFO, strFolder, strPhoneFolder, &info, NULL);
if(dwResult == CONA_OK)
{
CInfoDlg dlg;
dlg.SetFolderInfo(info.pFolderInfo);
dlg.DoModal();
CONAFreeFolderContentStructure(&info);
}
else
{
ErrorMessageDlg(L"CFileBrowserDlg::OnButtonInfo(): CONAGetFolderInfo failed!", dwResult);
}
}
else
{
AfxMessageBox(L"No phone file or folder selected.");
}
}
}
else
{ // state is phonelist
AfxMessageBox(L"No phone file or folder selected.");
}
TRACE(L"CFileBrowserDlg::OnButtonInfo(): End\n");
}
void CFileBrowserDlg::OnOK()
{
// Disabled to prevent closing dialog by pressing enter
}
void CFileBrowserDlg::OnCancel()
{
CDialog::OnCancel();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -