📄 listview.cpp
字号:
sei.lpFile = _T("beam.exe");
else
sei.lpFile = _T("irsquirt.exe");
ShellExecuteEx(&sei);
//MOD END
}
}
}
////////////////////////////////////////////////////////////////
void CListView::OnFileCopyFolder()
{
TCHAR szFolderTo[MAX_PATH] = {0};
wcscpy(szFolderTo, m_szCurrentFolder);
CFolderDlg fd;
if (fd.ShowFolderDlg(IDS_TITLE_COPY, szFolderTo, MAX_PATH)==IDOK)
{
//僼傽僀儖偺僐僺乕傪幚峴
int nCount = ListView_GetSelectedCount(m_hWnd);
if (nCount > 0)
{
LISTITEMINFO* pliinfo = new LISTITEMINFO[nCount];
MakeSelectedItemsStrings(pliinfo, nCount);
CCopyFileDlg cfd;
//MOD START TODA
int nRet = cfd.ShowCopyFileDlg(m_szCurrentFolder, szFolderTo, pliinfo, nCount, FALSE);
//MOD END
//ADD START TODA
if (fd.m_bRefresh || nRet == IDOK)
{
g_MainWnd.m_TreeView.SetCurrentFolder(szFolderTo);
LoadFolderItem(m_szCurrentFolder, FALSE);
}
//ADD END
delete[] pliinfo;
}
}
else
{
if (fd.m_bRefresh)
{
g_MainWnd.m_TreeView.SetCurrentFolder(szFolderTo); //ADD TODA
LoadFolderItem(m_szCurrentFolder, FALSE); //MOD TODA
}
}
}
////////////////////////////////////////////////////////////////
void CListView::OnFileMoveFolder()
{
TCHAR szFolderTo[MAX_PATH] = {0};
wcscpy(szFolderTo, m_szCurrentFolder);
CFolderDlg fd;
if (fd.ShowFolderDlg(IDS_TITLE_MOVE, szFolderTo, MAX_PATH)==IDOK)
{
//僼傽僀儖偺僐僺乕傪幚峴
int nCount = ListView_GetSelectedCount(m_hWnd);
if (nCount > 0)
{
LISTITEMINFO* pliinfo = new LISTITEMINFO[nCount];
MakeSelectedItemsStrings(pliinfo, nCount);
CCopyFileDlg cfd;
//MOD START TODA
// if (cfd.ShowCopyFileDlg(m_szCurrentFolder, szFolderTo, pliinfo, nCount, TRUE)==IDOK)
// LoadFolderItem(m_szCurrentFolder);
int nRet = cfd.ShowCopyFileDlg(m_szCurrentFolder, szFolderTo, pliinfo, nCount, TRUE);
if (fd.m_bRefresh || nRet == IDOK)
{
g_MainWnd.m_TreeView.SetCurrentFolder(szFolderTo);
LoadFolderItem(m_szCurrentFolder, TRUE);
}
//MOD END
delete[] pliinfo;
}
}
else
{
if (fd.m_bRefresh)
{
g_MainWnd.m_TreeView.SetCurrentFolder(szFolderTo); //ADD TODA
LoadFolderItem(m_szCurrentFolder, TRUE); //MOD TODA
}
}
}
//ADD START TODA
////////////////////////////////////////////////////////////////
void CListView::OnFileToApp()
{
//慖戰傾僀僥儉庢摼
int nIndex = GetSelectedItemIndex(0);
if (nIndex == -1)
return;
LISTITEMCOMP* plic = GetListItemStruct(nIndex);
if (plic->nItem != LIST_ITEM_FILE)
return;
//傾僾儕働乕僔儑儞慖戰僟僀傾儘僌嶌惉
CAssociation *pDlg = new CAssociation(g_MainWnd.m_hWnd, g_hInst);
pDlg->OpenChoose(plic->lpszPath, plic->lpszName);
delete pDlg;
}
//ADD END
////////////////////////////////////////////////////////////////
void CListView::OnEditCut()
{
//愗傝庢傝
int nCount = GetValidAndSelectedCount();
if (nCount > 0)
{
if (m_lpliinfo)
{
delete[] m_lpliinfo;
m_lpliinfo = NULL;
m_nCount = 0;
}
LISTITEMINFO* pliinfo = new LISTITEMINFO[nCount];
MakeSelectedItemsStrings(pliinfo, nCount);
wcscpy(m_szFolderFrom, m_szCurrentFolder);
m_lpliinfo = pliinfo;
m_nCount = nCount;
m_bFileMove = TRUE;
g_MainWnd.m_CmdBands.SetEnableEditPaste(TRUE);
for (int i = 0; i < ListView_GetItemCount(m_hWnd); i++)
{
BOOL bFocused = FALSE;
if (ListView_GetItemState(m_hWnd, i, LVIS_FOCUSED) == LVIS_FOCUSED)
bFocused = TRUE;
if (ListView_GetItemState(m_hWnd, i, LVIS_SELECTED) == LVIS_SELECTED)
{
if (bFocused)
{
ListView_SetItemState(m_hWnd, i, LVIS_FOCUSED | LVIS_CUT, LVIS_FOCUSED | LVIS_CUT);
}
else
{
ListView_SetItemState(m_hWnd, i, LVIS_CUT, LVIS_CUT);
}
}
} //End of for
}
}
////////////////////////////////////////////////////////////////
void CListView::OnEditCopy()
{
//僐僺乕
if (m_lpliinfo)
{
delete[] m_lpliinfo;
m_lpliinfo = NULL;
m_nCount = 0;
}
int nCount = GetValidAndSelectedCount();
if (nCount > 0)
{
LISTITEMINFO* pliinfo = new LISTITEMINFO[nCount];
MakeSelectedItemsStrings(pliinfo, nCount);
wcscpy(m_szFolderFrom, m_szCurrentFolder);
m_lpliinfo = pliinfo;
m_nCount = nCount;
m_bFileMove = FALSE;
g_MainWnd.m_CmdBands.SetEnableEditPaste(TRUE);
for (int i=0; i<ListView_GetItemCount(m_hWnd); i++)
{
if (ListView_GetItemState(m_hWnd, i, LVIS_SELECTED)==LVIS_SELECTED)
ListView_SetItemState(m_hWnd, i, 0, LVIS_CUT);
}
}
}
////////////////////////////////////////////////////////////////
void CListView::OnEditPaste(BOOL bUpdate) //MOD TODA
{
//揬傝晅偗
if (m_nCount > 0 && m_lpliinfo)
{
// 懚嵼妋擣
for (int i = 0; i < m_nCount; i++)
{
if (m_lpliinfo[i].nItem == LIST_ITEM_UPPER)
continue;
TCHAR szPath[MAX_PATH];
//MOD START TODA
// wsprintf(szPath, _T("%s\\%s"), m_szFolderFrom, m_lpliinfo[i].szName);
wsprintf(szPath, _T("%s\\%s"), m_lpliinfo[i].szPath, m_lpliinfo[i].szName);
//MOD END
if (GetFileAttributes(szPath) == 0xFFFFFFFF)
{
// 僄儔乕
MessageBox(g_MainWnd.m_hWnd, IDS_MSG_PASTEERROR, NULL, MB_OK|MB_ICONSTOP);
delete[] m_lpliinfo;
m_lpliinfo = NULL;
m_nCount = 0;
wcscpy(m_szFolderFrom, _T(""));
g_MainWnd.m_CmdBands.SetEnableEditPaste(FALSE);
return;
}
} //End of for
//DEL START TODA
// // 堏摦愭偑堏摦尦偲摨偠応崌偱愗傝庢傝偺帪偼僄儔乕
// if (m_bFileMove && wcscmp(m_szFolderFrom, m_szCurrentFolder) == 0)
// {
// MessageBox(g_MainWnd.m_hWnd, IDS_MSG_PASTEERROR1, NULL, MB_OK|MB_ICONSTOP);
// return;
// }
//DEL END
// 揬傝晅偗張棟
CCopyFileDlg cfd;
if (cfd.ShowCopyFileDlg(m_szFolderFrom, m_szCurrentFolder, m_lpliinfo, m_nCount, m_bFileMove)==IDOK)
{
//儕僗僩價儏乕峏怴
if(bUpdate) //ADD TODA
LoadFolderItem(m_szCurrentFolder, FALSE); //MOD TODA
//ADD START TODA
//専嶕僼僅儖僟側偺偐敾掕
BOOL bSearch = FALSE;
if(0 == wcscmp(m_szFolderFrom, SEARCH_FOLDER_NAME))
bSearch = TRUE;
// 僐僺乕or堏摦偟偨傕偺偵僼僅儖僟偑偁傞応崌偼僣儕乕價儏乕峏怴
BOOL bFolders = FALSE; //ADD TODA
for (int i = 0; i < m_nCount; i++) {
//ADD START TODA (専嶕寢壥僼僅儖僟帪)
if(bSearch && m_bFileMove)
EditSearch(m_lpliinfo[i].szPath, m_lpliinfo[i].szName, m_szCurrentFolder, m_lpliinfo[i].szName);
//ADD END
if (m_lpliinfo[i].nItem == LIST_ITEM_FOLDER)
{
g_MainWnd.m_TreeView.SetCurrentFolder(m_lpliinfo[i].szPath, TRUE, FALSE);
bFolders = TRUE;
}
} //End of for
//峏怴懳徾偑偁傞応崌
if(bFolders)
g_MainWnd.m_TreeView.SetCurrentFolder(m_szCurrentFolder, TRUE, bUpdate);
//ADD END
}
if (m_bFileMove)
{
delete[] m_lpliinfo;
m_lpliinfo = NULL;
m_nCount = 0;
wcscpy(m_szFolderFrom, _T(""));
g_MainWnd.m_CmdBands.SetEnableEditPaste(FALSE);
}
}
}
////////////////////////////////////////////////////////////////
void CListView::OnFileDelete()
{
//僼傽僀儖偺嶍彍
int nCount = GetValidAndSelectedCount();
if (nCount > 0)
{
LISTITEMINFO* pliinfo = new LISTITEMINFO[nCount];
MakeSelectedItemsStrings(pliinfo, nCount);
CDeleteFileDlg dfd;
if (dfd.ShowDeleteFileDlg(m_szCurrentFolder, pliinfo, nCount) == IDOK) {
//DEL START TODA (崅懍壔偺堊)
// HWND hwndPrev = GetFocus();
// ShowWindow(m_hWnd, SW_HIDE);
//DEL END
for (int i = nCount - 1; i >= 0; i--) {
if (pliinfo[i].bDone) {
LISTITEMCOMP* pDel = GetListItemStruct(pliinfo[i].nIndex);
if (pDel->lpszDispName) delete[] pDel->lpszDispName;
if (pDel->lpszDispSize) delete[] pDel->lpszDispSize;
if (pDel->lpszDispType) delete[] pDel->lpszDispType;
if (pDel->lpszDispTime) delete[] pDel->lpszDispTime;
delete[] pDel->lpszName;
delete[] pDel->lpszPath; //ADD TODA
delete pDel;
ListView_DeleteItem(m_hWnd, pliinfo[i].nIndex);
//ADD START TODA
if (pliinfo[i].nItem == LIST_ITEM_FOLDER)
g_MainWnd.m_TreeView.SetCurrentFolder(pliinfo[i].szPath);
//ADD END
}
}
ListView_Arrange(m_hWnd, LVA_DEFAULT);
LoadFolderReset(m_szCurrentFolder); //ADD TODA
//DEL START TODA
// ShowWindow(m_hWnd, SW_SHOW);
// SetFocus(hwndPrev);
//DEL END
}
delete[] pliinfo;
}
}
//ADD START TODA
////////////////////////////////////////////////////////////////
BOOL CListView::OnFileCompress() {
//慖戰傾僀僥儉悢傪庢摼
int nCount = GetValidAndSelectedCount();
//僄儔乕帪
if (nCount <= 0) return FALSE;
//傾僀僥儉儕僗僩嶌惉
LISTITEMINFO* pliinfo = new LISTITEMINFO[nCount];
MakeSelectedItemsStrings(pliinfo, nCount);
//埑弅
BOOL bRtn = g_MainWnd.m_Compress.OnFileCompress(
m_szCurrentFolder,
nCount,
pliinfo,
m_Settings.nCompDLL,
m_Settings.bMoveDir,
m_Settings.bAutoUnComp,
m_szCompressFolder);
//儕僗僩嶍彍
delete[] pliinfo;
//埑弅
if(bRtn) {
//僣儕乕價儏乕/儕僗僩價儏乕偺峏怴
LoadFolderItem(m_szCurrentFolder);
return TRUE;
}
return FALSE;
}
////////////////////////////////////////////////////////////////
BOOL CListView::OnFileUnCompress() {
//慖戰傾僀僥儉悢傪庢摼
int nCount = GetValidAndSelectedCount();
//僄儔乕帪
if (nCount <= 0) return FALSE;
//傾僀僥儉儕僗僩嶌惉
LISTITEMINFO* pliinfo = new LISTITEMINFO[nCount];
MakeSelectedItemsStrings(pliinfo, nCount);
//夝搥
BOOL bRtn = g_MainWnd.m_Compress.OnFileUnCompress(
m_szCurrentFolder,
nCount,
pliinfo,
m_Settings.nCompDLL,
m_Settings.bMoveDir,
m_Settings.bMakeDir,
m_Settings.bAutoUnComp,
m_szCompressFolder);
//儕僗僩嶍彍
delete[] pliinfo;
//夝搥偑偁偭偨応崌
if(bRtn) {
//僣儕乕價儏乕/儕僗僩價儏乕偺峏怴
LoadFolderItem(m_szCurrentFolder);
}
return bRtn;
}
//ADD END
////////////////////////////////////////////////////////////////
void CListView::OnFileOpenParam()
{
int nIndex = GetSelectedItemIndex(0);
if (nIndex != -1)
{
LISTITEMCOMP* plic = GetListItemStruct(nIndex);
if (plic->nItem == LIST_ITEM_FILE)
{
#ifdef __POCKET_PC
BOOL bSetSip = FALSE;
SIPINFO si;
memset(&si, 0, sizeof(SIPINFO));
si.cbSize = sizeof(SIPINFO);
SipGetInfo(&si);
if ((si.fdwFlags&SIPF_ON)!=SIPF_ON)
{
SipShowIM(SIPF_ON);
bSetSip = TRUE;
}
#endif
DialogBox(g_hInst, (LPCTSTR)IDD_EXECUTE_DLG, g_MainWnd.m_hWnd, (DLGPROC)FileOpenParamDlgProc);
#ifdef __POCKET_PC
if (bSetSip)
SipShowIM(SIPF_OFF);
#endif
}
}
}
//ADD START TODA
////////////////////////////////////////////////////////////////
HMENU CListView::GetOpenAppSubMenu1()
{
return GetSubMenu(GetSubMenu(m_hMenuPopup, 0), 2);
}
////////////////////////////////////////////////////////////////
HMENU CListView::GetOpenAppSubMenu2()
{
#if defined(__POCKET_PC)
//HMENU hMenu1 = (HMENU)SendMessage(g_MainWnd.m_CmdBands.m_hWnd, SHCMBM_GETSUBMENU, 0, ID_FILE);
//HMENU hMenu2 = GetSubMenu(hMenu1,1);
//return GetSubMenu(GetSubMenu((HMENU)SendMessage(g_MainWnd.m_CmdBands.m_hWnd, SHCMBM_GETMENU, 0, 0), 0), 8);
return GetSubMenu((HMENU)SendMessage(g_MainWnd.m_CmdBands.m_hWnd, SHCMBM_GETSUBMENU, 0, ID_FILE), 1);//mod by kawa
#else
return GetSubMenu(GetSubMenu(CommandBar_GetMenu(g_MainWnd.m_CmdBands.m_hMenubar, 0), 0), 8);
#endif
}
////////////////////////////////////////////////////////////////
void CListView::DeleteOpenAppSubMenuSep(HMENU hMenu)
{
DeleteMenu(hMenu, 6, MF_BYPOSITION);
}
//ADD END
////////////////////////////////////////////////////////////////
void CListView::InitOpenAppMenu()
{
//MOD TODA START (from GSFinder ver.1.99)
HMENU hSubMenu1 = GetOpenAppSubMenu1();
HMENU hSubMenu2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -