/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ /* * 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 #include #include #include #include #include #include #define ACTION_TYPE "action_type" #define PARENT_ID "parent_id" #define WINDOW_ID "id" #define CLOSE_ID "close_id" #define MENU_PTR "menu_ptr" namespace vcl { class ILibreOfficeKitNotifier; } class JSDialogSender { std::unique_ptr mpIdleNotify; protected: bool m_bCanClose; // specifies if can send a close message public: JSDialogSender() : m_bCanClose(true) { } JSDialogSender(const VclPtr& aNotifierWindow, const VclPtr& aContentWindow, const OUString& sTypeOfJSON) : m_bCanClose(true) { initializeSender(aNotifierWindow, aContentWindow, sTypeOfJSON); } virtual ~JSDialogSender() COVERITY_NOEXCEPT_FALSE; virtual void sendFullUpdate(bool bForce = false); void sendClose(); void sendUpdate(const VclPtr& pWindow, bool bForce = false); virtual void sendAction(const VclPtr& pWindow, std::unique_ptr pData); virtual void sendPopup(const VclPtr& pWindow, const OUString& sParentId, const OUString& sCloseId); virtual void sendMenu(const VclPtr& pMenu); virtual void sendClosePopup(vcl::LOKWindowId nWindowId); void flush() { mpIdleNotify->Invoke(); } protected: void initializeSender(const VclPtr& rNotifierWindow, const VclPtr& rContentWindow, const OUString& rTypeOfJSON) { mpIdleNotify.reset(new JSDialogNotifyIdle(rNotifierWindow, rContentWindow, rTypeOfJSON)); } }; /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */