diff options
author | tjenssen <tim.jenssen@nokia.com> | 2012-03-13 13:38:26 +0100 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@nokia.com> | 2012-03-13 17:35:19 +0100 |
commit | fea754a77e599328c0a7d0801792ae1b5bc155fc (patch) | |
tree | 74d1b6fe4c43ca93e71585ea0719ec0e342ea90b /installerbuilder/libinstaller/3rdparty/p7zip_9.04/unix/CPP/7zip/UI/FileManager/PanelMenu.cpp | |
parent | c1da312f182ad1b81a1f0ce627e4f9b3eddbf92b (diff) |
remove old 7zip version
Change-Id: I8fa14b3132599ddd164633ad932eff4ef7734c74
Reviewed-by: Karsten Heimrich <karsten.heimrich@nokia.com>
Diffstat (limited to 'installerbuilder/libinstaller/3rdparty/p7zip_9.04/unix/CPP/7zip/UI/FileManager/PanelMenu.cpp')
-rw-r--r-- | installerbuilder/libinstaller/3rdparty/p7zip_9.04/unix/CPP/7zip/UI/FileManager/PanelMenu.cpp | 621 |
1 files changed, 0 insertions, 621 deletions
diff --git a/installerbuilder/libinstaller/3rdparty/p7zip_9.04/unix/CPP/7zip/UI/FileManager/PanelMenu.cpp b/installerbuilder/libinstaller/3rdparty/p7zip_9.04/unix/CPP/7zip/UI/FileManager/PanelMenu.cpp deleted file mode 100644 index 55ac88b96..000000000 --- a/installerbuilder/libinstaller/3rdparty/p7zip_9.04/unix/CPP/7zip/UI/FileManager/PanelMenu.cpp +++ /dev/null @@ -1,621 +0,0 @@ -#include "StdAfx.h" - -#include "Common/StringConvert.h" - -#include "Windows/COM.h" -#include "Windows/Clipboard.h" -// FIXME #include "Windows/Menu.h" -#include "Windows/PropVariant.h" -#include "Windows/PropVariantConversions.h" - -#include "../Common/PropIDUtils.h" -#include "../../PropID.h" - -#include "App.h" -#include "LangUtils.h" -#include "MyLoadMenu.h" -#include "PluginInterface.h" -#include "PropertyName.h" - -#include "resource.h" -#include "PropertyNameRes.h" - -using namespace NWindows; - -// {23170F69-40C1-278A-1000-000100020000} -DEFINE_GUID(CLSID_CZipContextMenu, -0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00); - -static const UINT kSevenZipStartMenuID = kPluginMenuStartID ; -static const UINT kSystemStartMenuID = kPluginMenuStartID + 100; - -void CPanel::InvokeSystemCommand(const char *command) -{ -#ifdef _WIN32 - NCOM::CComInitializer comInitializer; - if (!IsFsOrPureDrivesFolder()) - return; - CRecordVector<UInt32> operatedIndices; - GetOperatedItemIndices(operatedIndices); - if (operatedIndices.IsEmpty()) - return; - CMyComPtr<IContextMenu> contextMenu; - if (CreateShellContextMenu(operatedIndices, contextMenu) != S_OK) - return; - - CMINVOKECOMMANDINFO ci; - ZeroMemory(&ci, sizeof(ci)); - ci.cbSize = sizeof(CMINVOKECOMMANDINFO); - ci.hwnd = GetParent(); - ci.lpVerb = command; - contextMenu->InvokeCommand(&ci); -#endif -} - -static const wchar_t *kSeparator = L"--------------------------------------\n"; -static const wchar_t *kPropValueSeparator = L": "; - -extern UString ConvertSizeToString(UInt64 value); - -static void AddPropertyString(PROPID propID, const wchar_t *nameBSTR, - const NCOM::CPropVariant &prop, UString &s) -{ - if (prop.vt != VT_EMPTY) - { - UString val; - - if ((prop.vt == VT_UI8 || prop.vt == VT_UI4) && ( - propID == kpidSize || - propID == kpidPackSize || - propID == kpidNumSubDirs || - propID == kpidNumSubFiles || - propID == kpidNumBlocks || - propID == kpidClusterSize || - propID == kpidTotalSize || - propID == kpidFreeSpace || - propID == kpidPhySize || - propID == kpidHeadersSize || - propID == kpidFreeSpace - )) - val = ConvertSizeToString(ConvertPropVariantToUInt64(prop)); - else - val = ConvertPropertyToString(prop, propID); - - if (!val.IsEmpty()) - { - s += GetNameOfProperty(propID, nameBSTR); - s += kPropValueSeparator; - /* - if (propID == kpidComment) - s += L'\n'; - */ - s += val; - s += L'\n'; - } - } -} - -void CPanel::Properties() -{ - CMyComPtr<IGetFolderArchiveProperties> getFolderArchiveProperties; - _folder.QueryInterface(IID_IGetFolderArchiveProperties, &getFolderArchiveProperties); - if (!getFolderArchiveProperties) - { - InvokeSystemCommand("properties"); - return; - } - - { - UString message; - - CRecordVector<UInt32> operatedIndices; - GetOperatedItemIndices(operatedIndices); - if (operatedIndices.Size() == 1) - { - UInt32 index = operatedIndices[0]; - // message += L"Item:\n"; - UInt32 numProps; - if (_folder->GetNumberOfProperties(&numProps) == S_OK) - { - for (UInt32 i = 0; i < numProps; i++) - { - CMyComBSTR name; - PROPID propID; - VARTYPE varType; - - if (_folder->GetPropertyInfo(i, &name, &propID, &varType) != S_OK) - continue; - - NCOM::CPropVariant prop; - if (_folder->GetProperty(index, propID, &prop) != S_OK) - continue; - AddPropertyString(propID, name, prop, message); - } - } - message += kSeparator; - } - - message += LangString(IDS_PROP_FILE_TYPE, 0x02000214); - message += kPropValueSeparator; - message += GetFolderTypeID(); - message += L"\n"; - - { - NCOM::CPropVariant prop; - if (_folder->GetFolderProperty(kpidPath, &prop) == S_OK) - { - AddPropertyString(kpidName, L"Path", prop, message); - } - } - - CMyComPtr<IFolderProperties> folderProperties; - _folder.QueryInterface(IID_IFolderProperties, &folderProperties); - if (folderProperties) - { - UInt32 numProps; - if (folderProperties->GetNumberOfFolderProperties(&numProps) == S_OK) - { - for (UInt32 i = 0; i < numProps; i++) - { - CMyComBSTR name; - PROPID propID; - VARTYPE vt; - if (folderProperties->GetFolderPropertyInfo(i, &name, &propID, &vt) != S_OK) - continue; - NCOM::CPropVariant prop; - if (_folder->GetFolderProperty(propID, &prop) != S_OK) - continue; - AddPropertyString(propID, name, prop, message); - } - } - } - - CMyComPtr<IGetFolderArchiveProperties> getFolderArchiveProperties; - _folder.QueryInterface(IID_IGetFolderArchiveProperties, &getFolderArchiveProperties); - if (getFolderArchiveProperties) - { - CMyComPtr<IFolderArchiveProperties> getProps; - getFolderArchiveProperties->GetFolderArchiveProperties(&getProps); - if (getProps) - { - UInt32 numProps; - if (getProps->GetNumberOfArchiveProperties(&numProps) == S_OK) - { - if (numProps > 0) - message += kSeparator; - for (UInt32 i = 0; i < numProps; i++) - { - CMyComBSTR name; - PROPID propID; - VARTYPE vt; - if (getProps->GetArchivePropertyInfo(i, &name, &propID, &vt) != S_OK) - continue; - NCOM::CPropVariant prop; - if (getProps->GetArchiveProperty(propID, &prop) != S_OK) - continue; - AddPropertyString(propID, name, prop, message); - } - } - } - } - ::MessageBoxW(*(this), message, LangString(IDS_PROPERTIES, 0x03020900), MB_OK); - } -} - -void CPanel::EditCut() -{ - // InvokeSystemCommand("cut"); -} - -void CPanel::EditCopy() -{ - /* - CMyComPtr<IGetFolderArchiveProperties> getFolderArchiveProperties; - _folder.QueryInterface(IID_IGetFolderArchiveProperties, &getFolderArchiveProperties); - if (!getFolderArchiveProperties) - { - InvokeSystemCommand("copy"); - return; - } - */ - UString s; - CRecordVector<UInt32> indices; - GetSelectedItemsIndices(indices); - for (int i = 0; i < indices.Size(); i++) - { - if (i > 0) - s += L"\xD\n"; - s += GetItemName(indices[i]); - } - ClipboardSetText(_mainWindow, s); -} - -void CPanel::EditPaste() -{ - /* - UStringVector names; - ClipboardGetFileNames(names); - CopyFromNoAsk(names); - UString s; - for (int i = 0; i < names.Size(); i++) - { - s += L" "; - s += names[i]; - } - - MessageBoxW(0, s, L"", 0); - */ - - // InvokeSystemCommand("paste"); -} - -#ifdef _WIN32 -HRESULT CPanel::CreateShellContextMenu( - const CRecordVector<UInt32> &operatedIndices, - CMyComPtr<IContextMenu> &systemContextMenu) -{ - systemContextMenu.Release(); - UString folderPath = GetFsPath(); - - CMyComPtr<IShellFolder> desktopFolder; - RINOK(::SHGetDesktopFolder(&desktopFolder)); - if (!desktopFolder) - { - // ShowMessage("Failed to get Desktop folder."); - return E_FAIL; - } - - // Separate the file from the folder. - - - // Get a pidl for the folder the file - // is located in. - LPITEMIDLIST parentPidl; - DWORD eaten; - RINOK(desktopFolder->ParseDisplayName( - GetParent(), 0, (wchar_t *)(const wchar_t *)folderPath, - &eaten, &parentPidl, 0)); - - // Get an IShellFolder for the folder - // the file is located in. - CMyComPtr<IShellFolder> parentFolder; - RINOK(desktopFolder->BindToObject(parentPidl, - 0, IID_IShellFolder, (void**)&parentFolder)); - if (!parentFolder) - { - // ShowMessage("Invalid file name."); - return E_FAIL; - } - - // Get a pidl for the file itself. - CRecordVector<LPITEMIDLIST> pidls; - pidls.Reserve(operatedIndices.Size()); - for (int i = 0; i < operatedIndices.Size(); i++) - { - LPITEMIDLIST pidl; - UString fileName = GetItemRelPath(operatedIndices[i]); - if (IsFSDrivesFolder()) - fileName += WCHAR_PATH_SEPARATOR; - RINOK(parentFolder->ParseDisplayName(GetParent(), 0, - (wchar_t *)(const wchar_t *)fileName, &eaten, &pidl, 0)); - pidls.Add(pidl); - } - - ITEMIDLIST temp; - if (pidls.Size() == 0) - { - temp.mkid.cb = 0; - /* - LPITEMIDLIST pidl; - HRESULT result = parentFolder->ParseDisplayName(GetParent(), 0, - L"." WSTRING_PATH_SEPARATOR, &eaten, &pidl, 0); - if (result != NOERROR) - return; - */ - pidls.Add(&temp); - } - - // Get the IContextMenu for the file. - CMyComPtr<IContextMenu> cm; - RINOK( parentFolder->GetUIObjectOf(GetParent(), pidls.Size(), - (LPCITEMIDLIST *)&pidls.Front(), IID_IContextMenu, 0, (void**)&cm)); - if (!cm) - { - // ShowMessage("Unable to get context menu interface."); - return E_FAIL; - } - systemContextMenu = cm; - return S_OK; -} - -void CPanel::CreateSystemMenu(HMENU menuSpec, - const CRecordVector<UInt32> &operatedIndices, - CMyComPtr<IContextMenu> &systemContextMenu) -{ - systemContextMenu.Release(); - - CreateShellContextMenu(operatedIndices, systemContextMenu); - - if (systemContextMenu == 0) - return; - - // Set up a CMINVOKECOMMANDINFO structure. - CMINVOKECOMMANDINFO ci; - ZeroMemory(&ci, sizeof(ci)); - ci.cbSize = sizeof(CMINVOKECOMMANDINFO); - ci.hwnd = GetParent(); - - /* - if (Sender == GoBtn) - { - // Verbs that can be used are cut, paste, - // properties, delete, and so on. - String action; - if (CutRb->Checked) - action = "cut"; - else if (CopyRb->Checked) - action = "copy"; - else if (DeleteRb->Checked) - action = "delete"; - else if (PropertiesRb->Checked) - action = "properties"; - - ci.lpVerb = action.c_str(); - result = cm->InvokeCommand(&ci); - if (result) - ShowMessage( - "Error copying file to clipboard."); - - } - else - */ - { - // HMENU hMenu = CreatePopupMenu(); - CMenu popupMenu; - // CMenuDestroyer menuDestroyer(popupMenu); - if(!popupMenu.CreatePopup()) - throw 210503; - - HMENU hMenu = popupMenu; - - DWORD Flags = CMF_EXPLORE; - // Optionally the shell will show the extended - // context menu on some operating systems when - // the shift key is held down at the time the - // context menu is invoked. The following is - // commented out but you can uncommnent this - // line to show the extended context menu. - // Flags |= 0x00000080; - systemContextMenu->QueryContextMenu(hMenu, 0, kSystemStartMenuID, 0x7FFF, Flags); - - - { - CMenu menu; - menu.Attach(menuSpec); - CMenuItem menuItem; - menuItem.fMask = MIIM_SUBMENU | MIIM_TYPE | MIIM_ID; - menuItem.fType = MFT_STRING; - menuItem.hSubMenu = popupMenu.Detach(); - // menuDestroyer.Disable(); - menuItem.StringValue = LangString(IDS_SYSTEM, 0x030202A0); - menu.InsertItem(0, true, menuItem); - } - /* - if (Cmd < 100 && Cmd != 0) - { - ci.lpVerb = MAKEINTRESOURCE(Cmd - 1); - ci.lpParameters = ""; - ci.lpDirectory = ""; - ci.nShow = SW_SHOWNORMAL; - cm->InvokeCommand(&ci); - } - // If Cmd is > 100 then it's one of our - // inserted menu items. - else - // Find the menu item. - for (int i = 0; i < popupMenu1->Items->Count; i++) - { - TMenuItem* menu = popupMenu1->Items->Items[i]; - // Call its OnClick handler. - if (menu->Command == Cmd - 100) - menu->OnClick(this); - } - // Release the memory allocated for the menu. - DestroyMenu(hMenu); - */ - } -} - -void CPanel::CreateFileMenu(HMENU menuSpec) -{ - CreateFileMenu(menuSpec, _sevenZipContextMenu, _systemContextMenu, true); -} - -void CPanel::CreateSevenZipMenu(HMENU menuSpec, - const CRecordVector<UInt32> &operatedIndices, - CMyComPtr<IContextMenu> &sevenZipContextMenu) -{ - sevenZipContextMenu.Release(); - - CMenu menu; - menu.Attach(menuSpec); - // CMenuDestroyer menuDestroyer(menu); - // menu.CreatePopup(); - - bool sevenZipMenuCreated = false; - - CMyComPtr<IContextMenu> contextMenu; - if (contextMenu.CoCreateInstance(CLSID_CZipContextMenu, IID_IContextMenu) == S_OK) - { - CMyComPtr<IInitContextMenu> initContextMenu; - if (contextMenu.QueryInterface(IID_IInitContextMenu, &initContextMenu) != S_OK) - return; - UString currentFolderUnicode = _currentFolderPrefix; - UStringVector names; - int i; - for(i = 0; i < operatedIndices.Size(); i++) - names.Add(currentFolderUnicode + GetItemRelPath(operatedIndices[i])); - CRecordVector<const wchar_t *> namePointers; - for(i = 0; i < operatedIndices.Size(); i++) - namePointers.Add(names[i]); - - // NFile::NDirectory::MySetCurrentDirectory(currentFolderUnicode); - if (initContextMenu->InitContextMenu(currentFolderUnicode, &namePointers.Front(), - operatedIndices.Size()) == S_OK) - { - HRESULT res = contextMenu->QueryContextMenu(menu, 0, kSevenZipStartMenuID, - kSystemStartMenuID - 1, 0); - sevenZipMenuCreated = (HRESULT_SEVERITY(res) == SEVERITY_SUCCESS); - if (sevenZipMenuCreated) - sevenZipContextMenu = contextMenu; - // int code = HRESULT_CODE(res); - // int nextItemID = code; - } - } -} - -void CPanel::CreateFileMenu(HMENU menuSpec, - CMyComPtr<IContextMenu> &sevenZipContextMenu, - CMyComPtr<IContextMenu> &systemContextMenu, - bool programMenu) -{ - sevenZipContextMenu.Release(); - systemContextMenu.Release(); - - CRecordVector<UInt32> operatedIndices; - GetOperatedItemIndices(operatedIndices); - - CMenu menu; - menu.Attach(menuSpec); - - CreateSevenZipMenu(menu, operatedIndices, sevenZipContextMenu); - if (g_App.ShowSystemMenu) - CreateSystemMenu(menu, operatedIndices, systemContextMenu); - - if (menu.GetItemCount() > 0) - menu.AppendItem(MF_SEPARATOR, 0, (LPCTSTR)0); - - int i; - for (i = 0; i < operatedIndices.Size(); i++) - if (IsItemFolder(operatedIndices[i])) - break; - bool allAreFiles = (i == operatedIndices.Size()); - LoadFileMenu(menu, menu.GetItemCount(), programMenu, - IsFSFolder(), operatedIndices.Size(), allAreFiles); -} - -bool CPanel::InvokePluginCommand(int id) -{ - return InvokePluginCommand(id, _sevenZipContextMenu, _systemContextMenu); -} - -bool CPanel::InvokePluginCommand(int id, - IContextMenu *sevenZipContextMenu, IContextMenu *systemContextMenu) -{ - UInt32 offset; - bool isSystemMenu = (id >= kSystemStartMenuID); - if (isSystemMenu) - offset = id - kSystemStartMenuID; - else - offset = id - kSevenZipStartMenuID; - - CMINVOKECOMMANDINFOEX commandInfo; - commandInfo.cbSize = sizeof(commandInfo); - commandInfo.fMask = CMIC_MASK_UNICODE; - commandInfo.hwnd = GetParent(); - commandInfo.lpVerb = (LPCSTR)(MAKEINTRESOURCE(offset)); - commandInfo.lpParameters = NULL; - CSysString currentFolderSys = GetSystemString(_currentFolderPrefix); - commandInfo.lpDirectory = (LPCSTR)(LPCTSTR)(currentFolderSys); - commandInfo.nShow = SW_SHOW; - commandInfo.lpTitle = ""; - commandInfo.lpVerbW = (LPCWSTR)(MAKEINTRESOURCEW(offset)); - commandInfo.lpParameters = NULL; - UString currentFolderUnicode = _currentFolderPrefix; - commandInfo.lpDirectoryW = currentFolderUnicode; - commandInfo.lpTitleW = L""; - // commandInfo.ptInvoke.x = xPos; - // commandInfo.ptInvoke.y = yPos; - commandInfo.ptInvoke.x = 0; - commandInfo.ptInvoke.y = 0; - HRESULT result; - if (isSystemMenu) - result = systemContextMenu->InvokeCommand(LPCMINVOKECOMMANDINFO(&commandInfo)); - else - result = sevenZipContextMenu->InvokeCommand(LPCMINVOKECOMMANDINFO(&commandInfo)); - if (result == NOERROR) - { - KillSelection(); - return true; - } - return false; -} - -bool CPanel::OnContextMenu(HANDLE windowHandle, int xPos, int yPos) -{ - if (windowHandle != _listView) - return false; - /* - POINT point; - point.x = xPos; - point.y = yPos; - if (!_listView.ScreenToClient(&point)) - return false; - - LVHITTESTINFO info; - info.pt = point; - int index = _listView.HitTest(&info); - */ - - CRecordVector<UInt32> operatedIndices; - GetOperatedItemIndices(operatedIndices); - - if (xPos < 0 || yPos < 0) - { - if (operatedIndices.Size() == 0) - { - xPos = 0; - yPos = 0; - } - else - { - int itemIndex = _listView.GetNextItem(-1, LVNI_FOCUSED); - if (itemIndex == -1) - return false; - RECT rect; - if (!_listView.GetItemRect(itemIndex, &rect, LVIR_ICON)) - return false; - xPos = (rect.left + rect.right) / 2; - yPos = (rect.top + rect.bottom) / 2; - } - POINT point = {xPos, yPos}; - _listView.ClientToScreen(&point); - xPos = point.x; - yPos = point.y; - } - - CMenu menu; - CMenuDestroyer menuDestroyer(menu); - menu.CreatePopup(); - - CMyComPtr<IContextMenu> sevenZipContextMenu; - CMyComPtr<IContextMenu> systemContextMenu; - CreateFileMenu(menu, sevenZipContextMenu, systemContextMenu, false); - - int result = menu.Track(TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD | TPM_NONOTIFY, - xPos, yPos, _listView); - - if (result == 0) - return true; - - if (result >= kPluginMenuStartID) - { - InvokePluginCommand(result, sevenZipContextMenu, systemContextMenu); - return true; - } - if (ExecuteFileCommand(result)) - return true; - return true; -} -#endif - |