Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/LibreOffice/include/test/a11y/   (Office von Apache Version 25.8.3.2©)  Datei vom 5.10.2025 mit Größe 4 kB image not shown  

Quelle  eventposter.hxx   Sprache: C

 
/* -*- 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 <test/testdllapi.hxx>

#include <com/sun/star/accessibility/XAccessible.hpp>
#include <com/sun/star/uno/Reference.hxx>

#include <LibreOfficeKit/LibreOfficeKitEnums.h>
#include <rtl/ustring.hxx>
#include <vcl/window.hxx>

namespace test
{
/**
 * @brief Base helper class to send events to a window.
 *
 * Implementations of this helper will usually just wrap an implementation of post*Event*() calls.
 * This class is mostly useful to encapsulate the calls when getting the target window is not
 * trivial or is only relevant to sending events, and to have a generic event poster interface.
 *
 * Additionally, this class provides simplified helpers to send event pairs, like key down/up, or
 * text+commit, to make it easier on the common case for callers.
 */

class OOO_DLLPUBLIC_TEST EventPosterHelperBase
{
public:
    virtual ~EventPosterHelperBase(){};

    /** @see SfxLokHelper::postKeyEventAsync */
    virtual void postKeyEventAsync(int nType, int nCharCode, int nKeyCode) const = 0;

    /** Posts a full key down/up cycle */
    void postKeyEventAsync(int nCharCode, int nKeyCode) const
    {
        postKeyEventAsync(LOK_KEYEVENT_KEYINPUT, nCharCode, nKeyCode);
        postKeyEventAsync(LOK_KEYEVENT_KEYUP, nCharCode, nKeyCode);
    }

    /** @see SfxLokHelper::postExtTextEventAsync */
    virtual void postExtTextEventAsync(int nType, const OUString& rText) const = 0;

    /** Posts a full text input + commit sequence */
    void postExtTextEventAsync(const OUString& rText) const
    {
        postExtTextEventAsync(LOK_EXT_TEXTINPUT, rText);
        postExtTextEventAsync(LOK_EXT_TEXTINPUT_END, rText);
    }
};

/**
 * @brief Helper to send events to a window.
 *
 * This helper basically just wraps SfxLokHelper::post*EventAsync() calls to hold the target window
 * reference in the class.
 */

class OOO_DLLPUBLIC_TEST EventPosterHelper : public EventPosterHelperBase
{
protected:
    VclPtr<vcl::Window> mxWindow;

public:
    EventPosterHelper(void)
        : mxWindow(nullptr)
    {
    }
    EventPosterHelper(VclPtr<vcl::Window> xWindow)
        : mxWindow(xWindow)
    {
    }
    EventPosterHelper(vcl::Window* pWindow)
        : mxWindow(pWindow)
    {
    }

    vcl::Window* getWindow() const { return mxWindow; }

    void setWindow(VclPtr<vcl::Window> xWindow) { mxWindow = xWindow; }
    void setWindow(vcl::Window* pWindow) { mxWindow = pWindow; }

    explicit operator bool() const { return mxWindow && !mxWindow->isDisposed(); }
    bool operator!() const { return !bool(*this); }

    using EventPosterHelperBase::postKeyEventAsync;
    using EventPosterHelperBase::postExtTextEventAsync;

    /** @see SfxLokHelper::postKeyEventAsync */
    virtual void postKeyEventAsync(int nType, int nCharCode, int nKeyCode) const override;
    /** @see SfxLokHelper::postExtTextEventAsync */
    virtual void postExtTextEventAsync(int nType, const OUString& rText) const override;
};

/**
 * @brief Accessibility-specialized helper to send events to a window.
 *
 * This augments @c test::EventPosterHelper to simplify usage in accessibility tests.
 */

class OOO_DLLPUBLIC_TEST AccessibleEventPosterHelper : public EventPosterHelper
{
public:
    AccessibleEventPosterHelper(void)
        : EventPosterHelper()
    {
    }
    AccessibleEventPosterHelper(const css::uno::Reference<css::accessibility::XAccessible>& xAcc)
    {
        setWindow(xAcc);
    }

    /**
     * @brief Sets the window on which post events based on an accessible object inside it.
     * @param xAcc An accessible object inside a toplevel.
     *
     * This method tries and find the top level window containing @p xAcc to use it to post events.
     *
     * This currently relies on a toplevel accessible being a @c VCLXWindow, and requires that
     * window's output device to be set (@see VCLXWindow::GetWindow()).
     */

    void setWindow(css::uno::Reference<css::accessibility::XAccessible> xAcc);
};
}

/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */

Messung V0.5
C=98 H=98 G=97

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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.