⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filebrowserdlg.cpp

📁 以前做NOKIA手机与PC通信时所参考的源代码,里面包括两个程序,一个是手机文件夹浏览源码,另一个手机SIS安装程序.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
                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 + -