/* -*- 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/.
*/
struct SFX2_DLLPUBLIC LokMouseEventData
{ int mnType;
Point maPosition; int mnCount;
MouseEventModifiers meModifiers; int mnButtons; int mnModifier;
std::optional<Point> maLogicPosition;
LokMouseEventData(int nType, Point aPosition, int nCount, MouseEventModifiers eModifiers, int nButtons, int nModifier)
: mnType(nType)
, maPosition(aPosition)
, mnCount(nCount)
, meModifiers(eModifiers)
, mnButtons(nButtons)
, mnModifier(nModifier)
{}
};
class SFX2_DLLPUBLIC SfxLokHelper
{ public: /// Gets the short cut accelerators. static std::unordered_map<OUString, css::uno::Reference<css::ui::XAcceleratorConfiguration>>& getAcceleratorConfs(); /// Create a new view shell from the current view frame. /// This assumes a single document is ever loaded. staticint createView(); /// Create a new view shell for the given DocId, for multi-document support. staticint createView(int nDocId); /// Destroy a view shell from the global shell list. staticvoid destroyView(int nId); /// Set a view shell as current one. staticvoid setView(int nId); /// Determines if a call to setView() is in progress or not. staticbool isSettingView(); /// Set the edit mode for a document with callbacks disabled. staticvoid setEditMode(int nMode, vcl::ITiledRenderable* pDoc); /// Get view shell with id static SfxViewShell* getViewOfId(int nId); /// Get the currently active view. staticint getView(const SfxViewShell* pViewShell = nullptr); /// Get the number of views of the current DocId. static std::size_t getViewsCount(int nDocId); /// Get viewIds of views of the current DocId. staticbool getViewIds(int nDocId, int* pArray, size_t nSize); /// Set View Blocked for some uno commands staticvoid setBlockedCommandList(int nViewId, constchar* blockedCommandList); /// Get the document id for a view staticint getDocumentIdOfView(int nViewId); /// Get the default language that should be used for views staticconst LanguageTag & getDefaultLanguage(); /// Set language of the given view. staticvoid setViewLanguage(int nId, const OUString& rBcp47LanguageTag); /// Set the default language for views. staticvoid setDefaultLanguage(const OUString& rBcp47LanguageTag); /// Enable/Disable AT support for the given view. staticvoid setAccessibilityState(int nId, bool nEnabled); // Set the readonly state of the view. staticvoid setViewReadOnly(int nId, bool readOnly); // In readonly view, can user add / modify comments or not. staticvoid setAllowChangeComments(int nId, bool allow); /// Get the language used by the loading view (used for all save operations). staticconst LanguageTag & getLoadLanguage(); /// Set the language used by the loading view (used for all save operations). staticvoid setLoadLanguage(const OUString& rBcp47LanguageTag); /// Set the locale for the given view. staticvoid setViewLocale(int nId, const OUString& rBcp47LanguageTag); /// Get the device form factor that should be used for a new view. static LOKDeviceFormFactor getDeviceFormFactor(); /// Set the device form factor that should be used for a new view. staticvoid setDeviceFormFactor(std::u16string_view rDeviceFormFactor);
/// Set timezone of the given view. /// @isSet true to use @rTimezone, even if it's empty. Otherwise, no timezone. /// @rTimezone the value to set (which could be empty). staticvoid setDefaultTimezone(bool isSet, const OUString& rTimezone); /// Get timezone of the given view. See @setDefaultTimezone. static std::pair<bool, OUString> getDefaultTimezone(); /// Set the timezone of the given view. staticvoid setViewTimezone(int nId, bool isSet, const OUString& rTimezone); /// Get the timezone of the given view. static std::pair<bool, OUString> getViewTimezone(int nId);
/// Iterate over any view shell, except pThisViewShell, passing it to the f function. template<typename ViewShellType, typename FunctionType> staticvoid forEachOtherView(ViewShellType* pThisViewShell, FunctionType f);
/// Invoke the LOK callback of all other views showing the same document as pThisView, with a payload of rKey-rPayload. staticvoid notifyOtherViews(const SfxViewShell* pThisView, int nType, std::string_view rKey, const OString& rPayload); /// Invoke the LOK callback of all views except pThisView, with a JSON payload created from the given property tree. staticvoid notifyOtherViews(const SfxViewShell* pThisView, int nType, const boost::property_tree::ptree& rTree); /// Same as notifyOtherViews(), but works on a selected "other" view, not on all of them. staticvoid notifyOtherView(const SfxViewShell* pThisView, SfxViewShell const* pOtherView, int nType, std::string_view rKey, const OString& rPayload); /// Same as notifyOtherViews(), the property-tree version, but works on a selected "other" view, not on all of them. staticvoid notifyOtherView(const SfxViewShell* pThisView, SfxViewShell const* pOtherView, int nType, const boost::property_tree::ptree& rTree);
/// Emits a LOK_CALLBACK_STATE_CHANGED staticvoid sendUnoStatus(const SfxViewShell* pShell, const SfxPoolItem* pItem); /// Emits a LOK_CALLBACK_WINDOW staticvoid notifyWindow(const SfxViewShell* pThisView,
vcl::LOKWindowId nWindowId,
std::u16string_view rAction, const std::vector<vcl::LOKPayloadItem>& rPayload = std::vector<vcl::LOKPayloadItem>()); /// Emits a LOK_CALLBACK_DOCUMENT_SIZE_CHANGED - if @bInvalidateAll - first invalidates all parts staticvoid notifyDocumentSizeChanged(SfxViewShell const* pThisView, const OString& rPayload, vcl::ITiledRenderable* pDoc, bool bInvalidateAll = true); /// Emits a LOK_CALLBACK_DOCUMENT_SIZE_CHANGED for all views of the same document - if @bInvalidateAll - first invalidates all parts staticvoid notifyDocumentSizeChangedAllViews(vcl::ITiledRenderable* pDoc, bool bInvalidateAll = true); /// Emits a LOK_CALLBACK_DOCUMENT_SIZE_CHANGED for all views of the same document with the same part staticvoid notifyPartSizeChangedAllViews(vcl::ITiledRenderable* pDoc, int nPart); /// Emits a LOK_CALLBACK_INVALIDATE_TILES, but tweaks it according to setOptionalFeatures() if needed. staticvoid notifyInvalidation(SfxViewShell const* pThisView, int nPart, tools::Rectangle const *); /// Emits a LOK_CALLBACK_INVALIDATE_TILES, but tweaks it according to setOptionalFeatures() if needed /// uses the Part reported by pThisView staticvoid notifyInvalidation(SfxViewShell const* pThisView, tools::Rectangle const *); /// Notifies all views with the given type and payload. staticvoid notifyAllViews(int nType, const OString& rPayload);
/// Notify about the editing context change. staticvoid notifyContextChange(const css::ui::ContextChangeEventObject& rEvent);
/// Emits an LOK_CALLBACK_VIEW_RENDER_STATE staticvoid notifyViewRenderState(SfxViewShell const* pViewShell, vcl::ITiledRenderable* pDoc);
// Notify about the given type needing an update. staticvoid notifyUpdate(SfxViewShell const* pViewShell, int nType); // Notify about the given type needing a per-viewid update. staticvoid notifyUpdatePerViewId(SfxViewShell const* pViewShell, int nType); /// Same as notifyUpdatePerViewId(), pTargetShell will be notified, relevant viewId in pViewShell, /// pSourceView->getLOKPayload() will be called to get the data. staticvoid notifyUpdatePerViewId(SfxViewShell const* pTargetShell, SfxViewShell const* pViewShell,
SfxViewShell const* pSourceShell, int nType); // Notify other views about the given type needing a per-viewid update. staticvoid notifyOtherViewsUpdatePerViewId(SfxViewShell const* pViewShell, int nType);
static OString makePayloadJSON(const SfxViewShell* pThisView, int nViewId, std::string_view rKey, const OString& rPayload); /// Makes a LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR payload, but tweaks it according to setOptionalFeatures() if needed. static OString makeVisCursorInvalidation(int nViewId, const OString& rRectangle, bool bMispelledWord = false, const OString& rHyperlink = ""_ostr);
/// Helper for posting async key event staticvoid postKeyEventAsync(const VclPtr<vcl::Window> &xWindow, int nType, int nCharCode, int nKeyCode, int nRepeat = 0);
/// Helper for posting input event staticvoid postExtTextEventAsync(const VclPtr<vcl::Window> &xWindow, int nType, const OUString &rText);
/// A special value to signify 'infinity'. /// This value is chosen such that sal_Int32 will not overflow when manipulated. staticconst tools::Long MaxTwips = 1e9;
/// Helper for diagnosing run-time problems staticvoid dumpState(rtl::OStringBuffer &rState);
/// Process the mouse event in the currently active in-place component (if any). /// Returns true if the event has been processed, and no further processing is necessary. staticbool testInPlaceComponentMouseEventHit(SfxViewShell* pViewShell, int nType, intnX, int nY, int nCount, int nButtons, int nModifier, double fScaleX, double fScaleY, bool bNegativeX = false);
/// Extracts base64 data inside begin/end markers. static std::string extractCertificate(const std::string& rCert); /// Extracts multiple certificates in base64 from inside begin/end markers. static std::vector<std::string> extractCertificates(const std::string& rCerts); /// Takes a single CA certificate to add them to the list of trusted certificates. static css::uno::Reference<css::security::XCertificate> addCertificate(const css::uno::Reference<css::xml::crypto::XCertificateCreator>& xCertificateCreator, const css::uno::Sequence<sal_Int8>& rCert); /// Takes a CA chain to add them to the list of trusted certificates. staticvoid addCertificates(const std::vector<std::string>& rCerts); /// Parses a private key + certificate pair. static css::uno::Reference<css::security::XCertificate> getSigningCertificate(const std::string& rCert, const std::string& rKey); /// Decides if it's OK to call getCommandValues(rCommand). staticbool supportsCommand(std::u16string_view rCommand); /// Returns information about a given command in JSON format. staticvoid getCommandValues(tools::JsonWriter& rJsonWriter, std::string_view rCommand); /// Parses key-value parameters of rCommand. static std::map<OUString, OUString> parseCommandParameters(std::u16string_view rCommand); /// Registers function pointers in comphelper/ to set/get of the current LOK view. staticvoid registerViewCallbacks();
/// If LOK is active, switch to the language/locale of the provided shell and back on delete. class SfxLokLanguageGuard
{ bool m_bSetLanguage; const SfxViewShell* m_pOldShell;
/// Used to keep track of the last N views that text edited a document through an EditView class SFX2_DLLPUBLIC LOKEditViewHistory
{ public: typedef std::list<SfxViewShell*> ViewShellList; typedef std::unordered_map<int, ViewShellList> EditViewHistoryMap;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.