vcl/Library_vclplug_qt5.mk | 1 vcl/inc/qt5/Qt5Instance.hxx | 5 ++ vcl/inc/qt5/Qt5Menu.hxx | 66 ++++++++++++++++++++++++++++++++ vcl/qt5/Qt5Instance.cxx | 23 +++++++++++ vcl/qt5/Qt5Menu.cxx | 89 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 184 insertions(+)
New commits: commit 3e386ed3652133a9835bb0243dd94e02ecc83005 Author: Katarina Behrens <katarina.behr...@cib.de> Date: Tue May 8 18:35:44 2018 +0200 Prep Qt5Instance for native menus Change-Id: I7ec34b13823b943ef5e99b92d919c2df795d6ace diff --git a/vcl/inc/qt5/Qt5Instance.hxx b/vcl/inc/qt5/Qt5Instance.hxx index 19d3bfc2d9f8..da27b187789e 100644 --- a/vcl/inc/qt5/Qt5Instance.hxx +++ b/vcl/inc/qt5/Qt5Instance.hxx @@ -79,6 +79,11 @@ public: virtual OUString GetDefaultPrinter() override; virtual void PostPrintersChanged() override; + virtual SalMenu* CreateMenu( bool, Menu* ) override; + virtual void DestroyMenu( SalMenu* pMenu ) override; + virtual SalMenuItem* CreateMenuItem( const SalItemParams* ) override; + virtual void DestroyMenuItem( SalMenuItem* pItem ) override; + virtual SalTimer* CreateSalTimer() override; virtual SalSystem* CreateSalSystem() override; virtual SalBitmap* CreateSalBitmap() override; diff --git a/vcl/qt5/Qt5Instance.cxx b/vcl/qt5/Qt5Instance.cxx index beab3ed902b8..e8c6c5786888 100644 --- a/vcl/qt5/Qt5Instance.cxx +++ b/vcl/qt5/Qt5Instance.cxx @@ -24,6 +24,7 @@ #include "Qt5Data.hxx" #include "Qt5FilePicker.hxx" #include "Qt5Frame.hxx" +#include "Qt5Menu.hxx" #include "Qt5Object.hxx" #include "Qt5Timer.hxx" #include "Qt5VirtualDevice.hxx" @@ -107,6 +108,28 @@ SalVirtualDevice* Qt5Instance::CreateVirtualDevice(SalGraphics* /* pGraphics */, } } +SalMenu* Qt5Instance::CreateMenu( bool bMenuBar, Menu* pVCLMenu ) +{ + Qt5Menu* pSalMenu = new Qt5Menu( bMenuBar ); + pSalMenu->SetMenu( pVCLMenu ); + return pSalMenu; +} + +void Qt5Instance::DestroyMenu( SalMenu* pMenu ) +{ + delete pMenu; +} + +SalMenuItem* Qt5Instance::CreateMenuItem( const SalItemParams* pItemData ) +{ + return new Qt5MenuItem( pItemData ); +} + +void Qt5Instance::DestroyMenuItem( SalMenuItem* pItem ) +{ + delete pItem; +} + SalTimer* Qt5Instance::CreateSalTimer() { return new Qt5Timer(); } SalSystem* Qt5Instance::CreateSalSystem() { return new SvpSalSystem(); } commit 748da4ae6657b2205c8006dbfa5c0c309ed7ccb3 Author: Katarina Behrens <katarina.behr...@cib.de> Date: Tue May 8 16:05:59 2018 +0200 Basic skeleton of native menus in the closet Change-Id: Ic54b3853b53987b3e5a85444da0b9167a785bd81 diff --git a/vcl/Library_vclplug_qt5.mk b/vcl/Library_vclplug_qt5.mk index 8ebee18f71e4..075eb0bb0be8 100644 --- a/vcl/Library_vclplug_qt5.mk +++ b/vcl/Library_vclplug_qt5.mk @@ -91,6 +91,7 @@ $(eval $(call gb_Library_add_exception_objects,vclplug_qt5,\ vcl/qt5/Qt5Graphics_Text \ vcl/qt5/Qt5Instance \ vcl/qt5/Qt5Instance_Print \ + vcl/qt5/Qt5Menu \ vcl/qt5/Qt5Object \ vcl/qt5/Qt5Painter \ vcl/qt5/Qt5Printer \ diff --git a/vcl/inc/qt5/Qt5Menu.hxx b/vcl/inc/qt5/Qt5Menu.hxx new file mode 100644 index 000000000000..cf7a715f5911 --- /dev/null +++ b/vcl/inc/qt5/Qt5Menu.hxx @@ -0,0 +1,66 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include <salmenu.hxx> + +class MenuItemList; +class Qt5MenuItem; +class Qt5Frame; + +class Qt5Menu : public SalMenu +{ +private: + std::vector< Qt5MenuItem* > maItems; + VclPtr<Menu> mpVCLMenu; + Qt5Menu* mpParentSalMenu; + Qt5Frame* mpFrame; + bool mbMenuBar; + +public: + Qt5Menu( bool bMenuBar ); + virtual ~Qt5Menu() override; + + virtual bool VisibleMenuBar() override; // must return TRUE to actually DISPLAY native menu bars + + virtual void InsertItem( SalMenuItem* pSalMenuItem, unsigned nPos ) override; + virtual void RemoveItem( unsigned nPos ) override; + virtual void SetSubMenu( SalMenuItem* pSalMenuItem, SalMenu* pSubMenu, unsigned nPos ) override; + virtual void SetFrame( const SalFrame* pFrame ) override; + const Qt5Frame* GetFrame() const; + virtual void CheckItem( unsigned nPos, bool bCheck ) override; + virtual void EnableItem( unsigned nPos, bool bEnable ) override; + virtual void ShowItem( unsigned nPos, bool bShow ) override; + virtual void SetItemText( unsigned nPos, SalMenuItem* pSalMenuItem, const OUString& rText ) override; + virtual void SetItemImage( unsigned nPos, SalMenuItem* pSalMenuItem, const Image& rImage) override; + virtual void SetAccelerator( unsigned nPos, SalMenuItem* pSalMenuItem, const vcl::KeyCode& rKeyCode, const OUString& rKeyName ) override; + virtual void GetSystemMenuData( SystemMenuData* pData ) override; + + void SetMenu( Menu* pMenu ) { mpVCLMenu = pMenu; } + Menu* GetMenu() { return mpVCLMenu; } + unsigned GetItemCount() { return maItems.size(); } + Qt5MenuItem* GetItemAtPos( unsigned nPos ) { return maItems[ nPos ]; } +}; + +class Qt5MenuItem : public SalMenuItem +{ +public: + Qt5MenuItem( const SalItemParams* ); + virtual ~Qt5MenuItem() override; + + sal_uInt16 mnId; // Item ID + MenuItemType mnType; // Item type + bool mbVisible; // Item visibility. + Menu* mpVCLMenu; + Qt5Menu* mpParentMenu; // The menu into which this menu item is inserted + Qt5Menu* mpSubMenu; // Submenu of this item (if defined) +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/qt5/Qt5Menu.cxx b/vcl/qt5/Qt5Menu.cxx new file mode 100644 index 000000000000..2471f779c463 --- /dev/null +++ b/vcl/qt5/Qt5Menu.cxx @@ -0,0 +1,89 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "Qt5Frame.hxx" +#include "Qt5Menu.hxx" + +Qt5Menu::Qt5Menu( bool bMenuBar ) : + mpVCLMenu( nullptr ), + mpParentSalMenu( nullptr ), + mpFrame( nullptr ), + mbMenuBar( bMenuBar ) +{ +} + +Qt5Menu::~Qt5Menu() +{ +} + +bool Qt5Menu::VisibleMenuBar() +{ + return false; +} + +void Qt5Menu::InsertItem( SalMenuItem* pSalMenuItem, unsigned nPos ) +{ +} + +void Qt5Menu::RemoveItem( unsigned nPos ) +{ +} + +void Qt5Menu::SetSubMenu( SalMenuItem* pSalMenuItem, SalMenu* pSubMenu, unsigned nPos ) +{ +} + +void Qt5Menu::SetFrame( const SalFrame* pFrame ) +{ + + mpFrame = const_cast<Qt5Frame*>( static_cast<const Qt5Frame*>( pFrame ) ); +} + +void Qt5Menu::ShowItem( unsigned nPos, bool bCheck ) +{ +} + +void Qt5Menu::CheckItem( unsigned nPos, bool bCheck ) +{ +} + +void Qt5Menu::EnableItem( unsigned nPos, bool bEnable ) +{ +} + +void Qt5Menu::SetItemText( unsigned nPos, SalMenuItem* pSalMenuItem, const rtl::OUString& rText ) +{ +} + +void Qt5Menu::SetItemImage( unsigned nPos, SalMenuItem* pSalMenuItem, const Image& rImage) +{ +} + +void Qt5Menu::SetAccelerator( unsigned nPos, SalMenuItem* pSalMenuItem, const vcl::KeyCode& rKeyCode, const OUString& rKeyName ) +{ +} + +void Qt5Menu::GetSystemMenuData( SystemMenuData* pData ) +{ +} + + +Qt5MenuItem::Qt5MenuItem( const SalItemParams* pItemData ) : + mnId( pItemData->nId ), + mpVCLMenu( pItemData->pMenu ), + mpParentMenu( nullptr ), + mpSubMenu( nullptr ) +{ +} + +Qt5MenuItem::~Qt5MenuItem() +{ +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits