📄 commandbandsppc.cpp
字号:
#include "GSFinder.h"
#include "CommandBandsPPC.h"
#include "ListView.h"
TCHAR g_szMainTipsStrings[][32] = {
_T(""), _T(""), _T(""), IDS_UPFOLDER, IDS_REFRESH,
IDS_FOLDERVIEW, IDS_CTRLKEY, IDS_SHOWTOOLBAR
};
//MOD START TODA
TCHAR g_szToolTipsStrings[][32] = {
IDS_BACK, IDS_FRONT,
IDS_DELETE, IDS_PROPERTY, IDS_CUT, IDS_COPY, IDS_PASTE,
IDS_LISTSTYLE, IDS_GOTOFOLDER
};
//MOD END
TCHAR g_szAddrTipsStrings[] = IDS_GOTOFOLDER;
LPTSTR g_lpszMainTips[8];
LPTSTR g_lpszToolTips[9];
WNDPROC Org_CmbEditProc = NULL;
///////////////////////////////////////////////////////////////
LRESULT CALLBACK CmbEditProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
//ADD START TODA
case WM_SETFOCUS:
g_MainWnd.m_CmdBands.SetEnableItemSelected3();
g_MainWnd.m_CmdBands.SetEnableEditPasteBef();
break;
case WM_KILLFOCUS:
g_MainWnd.m_CmdBands.SetEnableEditPasteAft();
break;
//ADD END
case WM_KEYDOWN: //MOD TODA (WM_KEYUP->WM_KEYDOWN)
{
if (wParam == VK_RETURN) {
g_MainWnd.m_ListView.OnViewUpdate();
return 0;
}
break;
}
default:
break;
}
return CallWindowProc(Org_CmbEditProc, hWnd, message, wParam, lParam);
}
///////////////////////////////////////////////////////////////
CCmdBands::CCmdBands()
{
m_Settings.bShowToolBar = TRUE;
m_Settings.bShowAddressBar = TRUE;
}
///////////////////////////////////////////////////////////////
CCmdBands::~CCmdBands()
{
}
///////////////////////////////////////////////////////////////
//僐儅儞僪僶儞僪偺嶌惉
void CCmdBands::Init(HWND hwndParent)
{
GetSettings();
CreateMenuBar(hwndParent);
CreateToolBar(hwndParent);
CreateAddressBar(hwndParent);
ShowWindow(m_hAddressbar, m_Settings.bShowAddressBar?SW_SHOW:SW_HIDE);
ShowWindow(m_hToolbar, m_Settings.bShowToolBar?SW_SHOW:SW_HIDE);
SetCheckViewToolBar();
SetCheckViewAddressBar();
GetRecent();
}
///////////////////////////////////////////////////////////////
void CCmdBands::Destroy()
{
SaveSettings();
SaveRecent();
DestroyWindow(m_hWnd);
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetFolderName(LPCTSTR lpszPath)
{
TCHAR szPath[MAX_PATH];
wcscpy(szPath, GetRootName());
if (wcslen(lpszPath))
wcscpy(szPath, lpszPath);
int nIndex = SendMessage(m_hComboBox, CB_FINDSTRINGEXACT, 0, (LPARAM)szPath);
if (nIndex != CB_ERR)
SendMessage(m_hComboBox, CB_DELETESTRING, nIndex, 0);
SendMessage(m_hComboBox, CB_INSERTSTRING, 0, (LPARAM)szPath);
SendMessage(m_hComboBox, CB_SETCURSEL, 0, 0);
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckListStyle(DWORD dwStyle, DWORD dwExStyle)
{
HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETSUBMENU, 0, ID_EDIT); //mod by kawa
//HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETMENU, 0, 0);
CheckMenuItem(hMenu, ID_VIEW_LARGEICON, (dwStyle == LVS_ICON)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
CheckMenuItem(hMenu, ID_VIEW_SMALLICON, (dwStyle == LVS_SMALLICON)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
CheckMenuItem(hMenu, ID_VIEW_LIST, (dwStyle == LVS_LIST)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
//MOD START TODA
CheckMenuItem(hMenu, ID_VIEW_REPORT, (dwStyle == LVS_REPORT && !dwExStyle)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
CheckMenuItem(hMenu, ID_VIEW_REPORTLINE, (dwStyle == LVS_REPORT && dwExStyle)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
//MOD END
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckSort(int nSort, BOOL bRaise)
{
HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETSUBMENU, 0, ID_EDIT); //mod by kawa
//HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETMENU, 0, 0);
CheckMenuItem(hMenu, ID_VIEW_SORT_NAME, (nSort == LIST_SORT_NAME)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
CheckMenuItem(hMenu, ID_VIEW_SORT_EXT, (nSort == LIST_SORT_EXT)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
CheckMenuItem(hMenu, ID_VIEW_SORT_SIZE, (nSort == LIST_SORT_SIZE)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
CheckMenuItem(hMenu, ID_VIEW_SORT_TIME, (nSort == LIST_SORT_TIME)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
CheckMenuItem(hMenu, ID_VIEW_SORT_NOT_RAISE, bRaise?MF_BYCOMMAND|MF_UNCHECKED:MF_BYCOMMAND|MF_CHECKED);
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckKeyOn(BOOL bCtrlOn, BOOL bShiftOn)
{
HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETSUBMENU, 0, ID_EDIT);//mod by kawa
//HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETMENU, 0, 0);
//僐儞僩儘乕儖
SendMessage(m_hWnd, TB_SETSTATE, ID_EDIT_CONTROL_ON, bCtrlOn?TBSTATE_CHECKED|TBSTATE_ENABLED:TBSTATE_ENABLED);
CheckMenuItem(hMenu, ID_EDIT_CONTROL_ON, bCtrlOn?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
//僔僼僩
CheckMenuItem(hMenu, ID_EDIT_SHIFT_ON, bShiftOn?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckViewStatusWnd(BOOL bShowStatusWnd)
{
HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETSUBMENU, 0, ID_EDIT);//mod by kawa
//HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETMENU, 0, 0);
CheckMenuItem(hMenu, ID_VIEW_STATUSBAR, bShowStatusWnd?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
}
//ADD START TODA
///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckViewFolder(BOOL bShowFolder)
{
HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETSUBMENU, 0, ID_EDIT);//mod by kawa
//HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETMENU, 0, 0);
CheckMenuItem(hMenu, ID_VIEW_FOLDER, bShowFolder?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
SendMessage(m_hWnd, TB_SETSTATE, ID_VIEW_FOLDER, bShowFolder?TBSTATE_CHECKED|TBSTATE_ENABLED:TBSTATE_ENABLED);
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckViewSide(BOOL bViewSide)
{
HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETSUBMENU, 0, ID_EDIT);//mod by kawa
//HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETMENU, 0, 0);
CheckMenuItem(hMenu, ID_VIEW_SIDE, bViewSide?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckDragDrop(BOOL bDragDrop)
{
//HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETMENU, 0, 0);
HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETSUBMENU, 0, ID_EDIT);//mod by kawa
CheckMenuItem(hMenu, ID_EDIT_DRAGDROP, bDragDrop?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
}
//ADD END
///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckViewToolBar()
{
HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETSUBMENU, 0, ID_EDIT);//mod by kawa
//HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETMENU, 0, 0);
CheckMenuItem(hMenu, ID_VIEW_TOOLBAR, m_Settings.bShowToolBar?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
SendMessage(m_hWnd, TB_SETSTATE, ID_VIEW_TOOLBAR, m_Settings.bShowToolBar?TBSTATE_CHECKED|TBSTATE_ENABLED:TBSTATE_ENABLED);
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckViewAddressBar()
{
HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETSUBMENU, 0, ID_EDIT);//mod by kawa
//HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETMENU, 0, 0);
CheckMenuItem(hMenu, ID_VIEW_ADDRESSBAR, m_Settings.bShowAddressBar?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetEnableUpperFolder(BOOL bEnable)
{
HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETSUBMENU, 0, ID_EDIT);//mod by kawa
//HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETMENU, 0, 0);
EnableMenuItem(hMenu, ID_VIEW_UPFOLDER, bEnable?MF_BYCOMMAND|MF_ENABLED:MF_BYCOMMAND|MF_GRAYED);
SendMessage(m_hWnd, TB_SETSTATE, ID_VIEW_UPFOLDER, bEnable?TBSTATE_ENABLED:TBSTATE_INDETERMINATE);
}
//ADD START TODA
///////////////////////////////////////////////////////////////
void CCmdBands::SetEnableFront(BOOL bEnable)
{
HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETMENU, 0, 0);
EnableMenuItem(hMenu, ID_GO_FRONT, bEnable?MF_BYCOMMAND|MF_ENABLED:MF_BYCOMMAND|MF_GRAYED);
SendMessage(m_hToolbar, TB_SETSTATE, ID_GO_FRONT, bEnable?TBSTATE_ENABLED:TBSTATE_INDETERMINATE);
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetEnableBack(BOOL bEnable)
{
HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETMENU, 0, 0);
EnableMenuItem(hMenu, ID_GO_BACK, bEnable?MF_BYCOMMAND|MF_ENABLED:MF_BYCOMMAND|MF_GRAYED);
SendMessage(m_hToolbar, TB_SETSTATE, ID_GO_BACK, bEnable?TBSTATE_ENABLED:TBSTATE_INDETERMINATE);
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetEnableCompressSelected(HMENU hMenu, HMENU hMenu2, int nPos, int nPos2, DWORD nCompDLL)
{
HMENU hSubMenu = hMenu2;
HMENU hSubMenu2 = hMenu2;
if(nPos != -1)
hSubMenu = GetSubMenu(hMenu2, nPos);
if(nPos2 != -1)
hSubMenu2 = GetSubMenu(hMenu2, nPos2);
if(g_MainWnd.m_Compress.IsCompress(nCompDLL)) {
EnableMenuItem(hMenu, ID_FILE_COMPRESS, MF_BYCOMMAND|MF_ENABLED);
EnableMenuItem(hSubMenu2, ID_FILE_COMPRESS, MF_BYCOMMAND|MF_ENABLED);
} else {
EnableMenuItem(hMenu, ID_FILE_COMPRESS, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hSubMenu2, ID_FILE_COMPRESS, MF_BYCOMMAND|MF_GRAYED);
}
if(g_MainWnd.m_Compress.IsUnCompress()) {
EnableMenuItem(hMenu, ID_FILE_UNCOMPRESS, MF_BYCOMMAND|MF_ENABLED);
EnableMenuItem(hSubMenu, ID_FILE_UNCOMPRESS, MF_BYCOMMAND|MF_ENABLED);
} else {
EnableMenuItem(hMenu, ID_FILE_UNCOMPRESS, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hSubMenu, ID_FILE_UNCOMPRESS, MF_BYCOMMAND|MF_GRAYED);
}
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetEnableSearchSelected(HMENU hMenu, LPTSTR lpszPath)
{
if(wcscmp(SEARCH_FOLDER_NAME, lpszPath)==0)
{
EnableMenuItem(hMenu, ID_FILE_CREATE_SHORTCUT, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu, ID_FILE_CREATEFOLDER, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu, ID_EDIT_PASTE_SHORTCUT, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu, ID_FILE_CREATEFOLDER, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu, ID_FILE_COMPRESS, MF_BYCOMMAND|MF_GRAYED);
}
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetEnableItemSelected()
{
//ADD START TODA
HWND hFocus = GetFocus();
if(hFocus != g_MainWnd.m_ListView.m_hWnd)
hFocus = NULL;
//ADD END
//MOD START TODA (from GSFinder ver.1.99)
//HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETMENU, 0, 0);
HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETSUBMENU, 0, ID_FILE);//mod by kawa
HMENU hMenu2 = (HMENU)SendMessage(m_hWnd, SHCMBM_GETSUBMENU, 0, ID_EDIT);//add by kawa
if (hFocus && g_MainWnd.m_ListView.GetValidAndSelectedCount()) //MOD TODA
{
//儊僯儏乕傪桳岠偵
EnableMenuItem(hMenu, ID_FILE_OPEN, MF_BYCOMMAND|MF_ENABLED);
EnableMenuItem(hMenu, ID_FILE_OPEN_PARAM, MF_BYCOMMAND|MF_ENABLED);//add by kawa
EnableMenuItem(hMenu, ID_FILE_CREATE_SHORTCUT, MF_BYCOMMAND|MF_ENABLED);
EnableMenuItem(hMenu, ID_FILE_DELETE, MF_BYCOMMAND|MF_ENABLED);
EnableMenuItem(hMenu, ID_FILE_RENAME, MF_BYCOMMAND|MF_ENABLED);
EnableMenuItem(hMenu, ID_FILE_PROPERTY, MF_BYCOMMAND|MF_ENABLED);
//EnableMenuItem(hMenu, ID_EDIT_CUT, MF_BYCOMMAND|MF_ENABLED);
//EnableMenuItem(hMenu, ID_EDIT_COPY, MF_BYCOMMAND|MF_ENABLED);
//EnableMenuItem(hMenu, ID_EDIT_COPY_FILE_NAME, MF_BYCOMMAND|MF_ENABLED);
//EnableMenuItem(hMenu, ID_EDIT_COPY_FILE_PATH, MF_BYCOMMAND|MF_ENABLED);
EnableMenuItem(hMenu2, ID_EDIT_CUT, MF_BYCOMMAND|MF_ENABLED); //mod by kawa
EnableMenuItem(hMenu2, ID_EDIT_COPY, MF_BYCOMMAND|MF_ENABLED); //mod by kawa
EnableMenuItem(hMenu2, ID_EDIT_COPY_FILE_NAME, MF_BYCOMMAND|MF_ENABLED); //mod by kawa
EnableMenuItem(hMenu2, ID_EDIT_COPY_FILE_PATH, MF_BYCOMMAND|MF_ENABLED); //mod by kawa
EnableMenuItem(hMenu, ID_FILE_COPY_FOLDER, MF_BYCOMMAND|MF_ENABLED);
EnableMenuItem(hMenu, ID_FILE_MOVE_FOLDER, MF_BYCOMMAND|MF_ENABLED);
EnableMenuItem(hMenu, ID_FILE_SHORTCUT_FOLDER, MF_BYCOMMAND|MF_ENABLED);
//ADD START TODA (埑弅儊僯儏乕)
//SetEnableCompressSelected(GetSubMenu(hMenu, 0), 0, 8, g_MainWnd.m_ListView.m_Settings.nCompDLL);
SetEnableCompressSelected(hMenu,GetSubMenu(hMenu, 0), 0, 8, g_MainWnd.m_ListView.m_Settings.nCompDLL);
//ADD END
//僣乕儖僶乕傪桳岠偵
SendMessage(m_hToolbar, TB_SETSTATE, ID_FILE_DELETE, TBSTATE_ENABLED);
SendMessage(m_hToolbar, TB_SETSTATE, ID_FILE_PROPERTY, TBSTATE_ENABLED);
SendMessage(m_hToolbar, TB_SETSTATE, ID_EDIT_CUT, TBSTATE_ENABLED);
SendMessage(m_hToolbar, TB_SETSTATE, ID_EDIT_COPY, TBSTATE_ENABLED);
if (g_MainWnd.m_ListView.IsSelectionFile())
{
EnableMenuItem(hMenu, ID_FILE_IR_SEND, MF_BYCOMMAND|MF_ENABLED);
EnableMenuItem(hMenu, ID_FILE_TO_APP, MF_BYCOMMAND|MF_ENABLED);
for (int i=0; i<g_MainWnd.m_ListView.m_nOpenAppInfoCount; i++)
EnableMenuItem(hMenu, ID_FILE_OPEN_APP + i, MF_BYCOMMAND|MF_ENABLED);
}
else
{
EnableMenuItem(hMenu, ID_FILE_IR_SEND, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu, ID_FILE_TO_APP, MF_BYCOMMAND|MF_GRAYED);
for (int i=0; i<g_MainWnd.m_ListView.m_nOpenAppInfoCount; i++)
EnableMenuItem(hMenu, ID_FILE_OPEN_APP + i, MF_BYCOMMAND|MF_GRAYED);
}
}
else if (hFocus && ListView_GetSelectedCount(g_MainWnd.m_ListView.m_hWnd)) //MOD TODA
{
//儊僯儏乕傪柍岠偵
EnableMenuItem(hMenu, ID_FILE_OPEN, MF_BYCOMMAND|MF_ENABLED);
EnableMenuItem(hMenu, ID_FILE_OPEN_PARAM, MF_BYCOMMAND|MF_ENABLED);//add by kawa
EnableMenuItem(hMenu, ID_FILE_CREATE_SHORTCUT, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu, ID_FILE_DELETE, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu, ID_FILE_RENAME, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu, ID_FILE_PROPERTY, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu, ID_FILE_IR_SEND, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu, ID_FILE_COPY_FOLDER, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu, ID_FILE_MOVE_FOLDER, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu, ID_FILE_SHORTCUT_FOLDER, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu, ID_FILE_TO_APP, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu2, ID_EDIT_CUT, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu2, ID_EDIT_COPY, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu2, ID_EDIT_COPY_FILE_NAME, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu2, ID_EDIT_COPY_FILE_PATH, MF_BYCOMMAND|MF_GRAYED);
//ADD START TODA
EnableMenuItem(hMenu, ID_FILE_COMPRESS, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(hMenu, ID_FILE_UNCOMPRESS, MF_BYCOMMAND|MF_GRAYED);
//ADD END
for (int i=0; i<g_MainWnd.m_ListView.m_nOpenAppInfoCount; i++)
EnableMenuItem(hMenu, ID_FILE_OPEN_APP + i, MF_BYCOMMAND|MF_GRAYED);
//僣乕儖僶乕傪柍岠偵
SendMessage(m_hToolbar, TB_SETSTATE, ID_FILE_DELETE, TBSTATE_INDETERMINATE);
SendMessage(m_hToolbar, TB_SETSTATE, ID_FILE_PROPERTY, TBSTATE_INDETERMINATE);
SendMessage(m_hToolbar, TB_SETSTATE, ID_EDIT_CUT, TBSTATE_INDETERMINATE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -