/* -*- 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 #include #include #include #include #include namespace com::sun::star::ui { class XContextChangeEventListener; } class NotebookbarContextControl; class SystemWindow; class SfxViewShell; /// This implements Widget Layout-based notebook-like menu bar. class VCL_DLLPUBLIC NotebookBar final : public Control, public VclBuilderContainer { friend class NotebookBarContextChangeEventListener; public: NotebookBar(Window* pParent, const OString& rID, const OUString& rUIXMLDescription, const css::uno::Reference& rFrame, const NotebookBarAddonsItem& aNotebookBarAddonsItem); virtual ~NotebookBar() override; virtual void dispose() override; virtual bool PreNotify( NotifyEvent& rNEvt ) override; virtual Size GetOptimalSize() const override; virtual void setPosSizePixel(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight, PosSizeFlags nFlags = PosSizeFlags::All) override; virtual void Resize() override; void SetSystemWindow(SystemWindow* pSystemWindow); void StateChanged(const StateChangedType nStateChange ) override; void DataChanged(const DataChangedEvent& rDCEvt) override; void ControlListenerForCurrentController(bool bListen); void StopListeningAllControllers(); bool IsWelded() const { return m_bIsWelded; } VclPtr& GetMainContainer() { return m_xVclContentArea; } const OUString & GetUIFilePath() const { return m_sUIXMLDescription; } void SetDisposeCallback(const Link rDisposeCallback, const SfxViewShell* pViewShell); private: VclPtr m_pSystemWindow; css::uno::Reference m_pEventListener; std::set> m_alisteningControllers; std::vector m_pContextContainers; css::uno::Reference mxFrame; const SfxViewShell* m_pViewShell; VclPtr m_xVclContentArea; bool m_bIsWelded; OUString m_sUIXMLDescription; Link m_rDisposeLink; AllSettings DefaultSettings; AllSettings PersonaSettings; void UpdateBackground(); void UpdateDefaultSettings(); void UpdatePersonaSettings(); }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */