cohtml::IViewListener
Interface that allows to listen for various events in the View.
#include <View.h>
Public Classes
Name | |
---|---|
struct | IClipboardData The class should be used by the implementer to set the data recovered from the clipboard. Use this class only in the context of a ViewListener::OnClipboardTextGet call. |
Public Functions
Name | |
---|---|
IViewListener() | |
virtual | ~IViewListener() |
virtual bool | OnNavigateTo(const char * url) Called when a navigation is about to occur. The user is able to interrupt the navigation or let it continue normally. |
virtual InterceptRequestStatus | OnResourceRequestIntercepted(const char * url) Only used when View::InterceptResourceRequests is explicitly set to true. Called before sending a request to load a resource from the specified url. |
virtual void | OnScriptContextCreated() Called immediately after the script context has been created for the page. This happens before starting to build the DOM. Execute any scripts that will influence DOM creation here. |
virtual void | OnDOMBuilt() Called when the page’s DOM is fully constructed, but the referenced resources may not finish loading. |
virtual void | OnLoadFailed(const char * url, const char * error) Called when a navigation change request failed. |
virtual void | OnFinishLoad(const char * url) Called when a page, including the resources it refers to, is completely loaded and initialized. |
virtual void | OnReadyForBindings() Called when the view is ready to accept JavaScript bindings. |
virtual void | OnBindingsReleased() Called when the JavaScript bindings are released. All registered event, call handlers and models have been automatically unregistered. |
virtual ScreenInfo | OnScreenInfoRequested() Called when JavaScript requested screen metrics Returns current screen metrics. |
virtual EventAction::Actions | OnNodeTouched(const INodeProxy * node, const TouchEventData * event, void * userData, const InputEventPhase::PhaseType phase) Called before an event is passed to a DOM node for evaluation. The user is able to interrupt the handling and bubbling of events or let them continue normally. Phase is the current PhaseType of the event. |
virtual EventAction::Actions | OnNodeMouseEvent(const INodeProxy * node, const MouseEventData * event, void * userData, const InputEventPhase::PhaseType phase) Called before an event is passed to a DOM node for evaluation. The user is able to interrupt the handling and bubbling of events or let them continue normally. Phase is the current PhaseType of the event. |
virtual EventAction::Actions | OnNodeKeyEvent(const INodeProxy * node, const KeyEventData * event, void * userData, const InputEventPhase::PhaseType phase) Called before an event is passed to a DOM node for evaluation. The user is able to interrupt the handling and bubbling of events or let them continue normally. Phase is the current PhaseType of the event. |
virtual void | OnAudioStreamCreated(int id, int bitDepth, int channels, float samplingRate) Called by the UI when a media element initializes an audio stream. |
virtual void | OnAudioStreamClosed(int id) Called when an audio stream is destroyed. |
virtual void | OnAudioStreamPlay(int id) Called by the UI when a media element starts playing an audio stream. |
virtual void | OnAudioStreamPause(int id) Called by the UI when a playing media element pauses. |
virtual void | OnAudioDataReceived(int id, int samples, float ** pcm, int channels) Called by the UI when there is decoded PCM data available for playing. |
virtual void | OnAudioStreamEnded(int id) Called when an audio stream ends and will no longer receive data. |
virtual void | OnAudioStreamVolumeChanged(int id, float volume) Called when an audio stream volume has changed. |
virtual void | OnTextInputTypeChanged(TextInputControlType::ControlType type) Called when the current text input control changes (i.e. the user click an edit-box). Use this method to decide when to allow for IME input. |
virtual void | OnCaretRectChanged(int x, int y, unsigned width, unsigned height) Called when the caret changes during IME composition. You can use this method to correctly position a custom IME control & candidate list. |
virtual void | OnCursorChanged(CursorTypes::Cursors cursor, const char * url, const float * xHotspot, const float * yHotspot) Called when the cursor under the pointer changes. The user should modify the visible cursor from the OS to reflect the change. |
virtual void | OnClipboardTextSet(const char * text, unsigned lengthBytes) Called when the user has initiated an operation of putting data in the Clipboard (copy or cut). The implementer must communicate with the OS API and set the passed data in the Clipboard. |
virtual void | OnClipboardTextGet(IClipboardData * setDataObject) Called when the user has initiated an operation that recovers data from the clipboard (paste). The implementer should get the text from the clipboard with the OS API and call the passed callback to set the data. |
virtual IClientSideSocket * | OnCreateWebSocket(ISocketListener * listener, const char * url, const char ** protocols, unsigned protocolsCount) Called when the view tries to establish a web socket connection. When JS tries to create a new web sockets it will create a new cohtml::ISocketListener in the cohtml::View. OnCreateWebSocket will be called after that and it must respond with a cohtml::IClientSideSocket object which represent the socket implementation for the current platform. |
Public Functions Documentation
function IViewListener
IViewListener()
function ~IViewListener
virtual ~IViewListener()
function OnNavigateTo
inline virtual bool OnNavigateTo(
const char * url
)
Called when a navigation is about to occur. The user is able to interrupt the navigation or let it continue normally.
Parameters:
- url The URL which the view will load
function OnResourceRequestIntercepted
inline virtual InterceptRequestStatus OnResourceRequestIntercepted(
const char * url
)
Only used when View::InterceptResourceRequests is explicitly set to true. Called before sending a request to load a resource from the specified url.
Parameters:
- url The URL requested by the view
Return: Returns InterceptRequestStatus::Restrict if the request should be intercepted or InterceptRequestStatus::Allow otherwise
function OnScriptContextCreated
inline virtual void OnScriptContextCreated()
Called immediately after the script context has been created for the page. This happens before starting to build the DOM. Execute any scripts that will influence DOM creation here.
function OnDOMBuilt
inline virtual void OnDOMBuilt()
Called when the page’s DOM is fully constructed, but the referenced resources may not finish loading.
function OnLoadFailed
inline virtual void OnLoadFailed(
const char * url,
const char * error
)
Called when a navigation change request failed.
Parameters:
- url The URL which failed to load
- error The error message
function OnFinishLoad
inline virtual void OnFinishLoad(
const char * url
)
Called when a page, including the resources it refers to, is completely loaded and initialized.
Parameters:
- url The URL which loaded successfully
function OnReadyForBindings
inline virtual void OnReadyForBindings()
Called when the view is ready to accept JavaScript bindings.
function OnBindingsReleased
inline virtual void OnBindingsReleased()
Called when the JavaScript bindings are released. All registered event, call handlers and models have been automatically unregistered.
Note: Use this as a notification to release any resources that were used by the JavaScript bindings for the view, i.e. destroy registered models, etc.
function OnScreenInfoRequested
inline virtual ScreenInfo OnScreenInfoRequested()
Called when JavaScript requested screen metrics Returns current screen metrics.
function OnNodeTouched
inline virtual EventAction::Actions OnNodeTouched(
const INodeProxy * node,
const TouchEventData * event,
void * userData,
const InputEventPhase::PhaseType phase
)
Called before an event is passed to a DOM node for evaluation. The user is able to interrupt the handling and bubbling of events or let them continue normally. Phase is the current PhaseType of the event.
Note: Aside from events caused by calling ‘View::TouchEvent’ the callback can be called from JS. When the callback is not called from C++ the events are synthetic and won’t have userData(it will be nullptr).
function OnNodeMouseEvent
inline virtual EventAction::Actions OnNodeMouseEvent(
const INodeProxy * node,
const MouseEventData * event,
void * userData,
const InputEventPhase::PhaseType phase
)
Called before an event is passed to a DOM node for evaluation. The user is able to interrupt the handling and bubbling of events or let them continue normally. Phase is the current PhaseType of the event.
Note: Aside from events caused by calling ‘View::MouseEvent’ the callback can be called from JS or when the page is scrolled. When the callback is not called from C++ the events are synthetic and won’t have userData(it will be nullptr).
function OnNodeKeyEvent
inline virtual EventAction::Actions OnNodeKeyEvent(
const INodeProxy * node,
const KeyEventData * event,
void * userData,
const InputEventPhase::PhaseType phase
)
Called before an event is passed to a DOM node for evaluation. The user is able to interrupt the handling and bubbling of events or let them continue normally. Phase is the current PhaseType of the event.
Note: Aside from events caused by calling ‘View::KeyEvent’ the callback can be called from JS. When the callback is not called from C++ the events are synthetic and won’t have userData(it will be nullptr).
function OnAudioStreamCreated
inline virtual void OnAudioStreamCreated(
int id,
int bitDepth,
int channels,
float samplingRate
)
Called by the UI when a media element initializes an audio stream.
Parameters:
- id the unique ID of the stream
- bitDepth the number of bits per audio sample
- channels the number of channels in the stream
- samplingRate the sampling rate of the stream in Hz
function OnAudioStreamClosed
inline virtual void OnAudioStreamClosed(
int id
)
Called when an audio stream is destroyed.
Parameters:
- id the unique id of audio stream that was closed
function OnAudioStreamPlay
inline virtual void OnAudioStreamPlay(
int id
)
Called by the UI when a media element starts playing an audio stream.
Parameters:
- id the unique ID of the stream
function OnAudioStreamPause
inline virtual void OnAudioStreamPause(
int id
)
Called by the UI when a playing media element pauses.
Parameters:
- id the unique ID of the stream
function OnAudioDataReceived
inline virtual void OnAudioDataReceived(
int id,
int samples,
float ** pcm,
int channels
)
Called by the UI when there is decoded PCM data available for playing.
Parameters:
- id the unique ID of the stream
- samples the number of available samples
- pcm the decoded PCM data. Represented as a 2D array with |channels| x |samples| floating point elements in the range [-1, 1].
- channels the number of channels
function OnAudioStreamEnded
inline virtual void OnAudioStreamEnded(
int id
)
Called when an audio stream ends and will no longer receive data.
Parameters:
- id the unique ID of the stream
function OnAudioStreamVolumeChanged
inline virtual void OnAudioStreamVolumeChanged(
int id,
float volume
)
Called when an audio stream volume has changed.
Parameters:
- id the unique ID of the stream
- volume the new value of the volume
function OnTextInputTypeChanged
inline virtual void OnTextInputTypeChanged(
TextInputControlType::ControlType type
)
Called when the current text input control changes (i.e. the user click an edit-box). Use this method to decide when to allow for IME input.
Parameters:
- type the type of the currently focused text input control by the user
function OnCaretRectChanged
inline virtual void OnCaretRectChanged(
int x,
int y,
unsigned width,
unsigned height
)
Called when the caret changes during IME composition. You can use this method to correctly position a custom IME control & candidate list.
Parameters:
- x the x position of the selection caret
- y the y position of the selection caret
- width the width of the selection caret
- height the height of the selection caret
function OnCursorChanged
inline virtual void OnCursorChanged(
CursorTypes::Cursors cursor,
const char * url,
const float * xHotspot,
const float * yHotspot
)
Called when the cursor under the pointer changes. The user should modify the visible cursor from the OS to reflect the change.
Parameters:
- cursor Specifies the Cursor type to show. If the type is URL, then the url param will be set.
- url The URL of the cursor to show. The value is not nullptr only if the cursor type is URL.
- xHotspot The optional X coordinate of the cursor hotspot set from CSS. Can be nullptr if it is not specified in CSS.
- yHotspot The optional Y coordinate of the cursor hotspot set from CSS. Can be nullptr if it is not specified in CSS.
function OnClipboardTextSet
inline virtual void OnClipboardTextSet(
const char * text,
unsigned lengthBytes
)
Called when the user has initiated an operation of putting data in the Clipboard (copy or cut). The implementer must communicate with the OS API and set the passed data in the Clipboard.
Parameters:
- text The text bytes (UTF-8) that the user is trying to copy in the clipboard
- lengthBytes The length in bytes of the text passed
function OnClipboardTextGet
inline virtual void OnClipboardTextGet(
IClipboardData * setDataObject
)
Called when the user has initiated an operation that recovers data from the clipboard (paste). The implementer should get the text from the clipboard with the OS API and call the passed callback to set the data.
Parameters:
- setDataObject
Set
function that must be called with the data recovered from the clipboard
Note: The setDataObject is only valid in the call-stack of this method!
function OnCreateWebSocket
inline virtual IClientSideSocket * OnCreateWebSocket(
ISocketListener * listener,
const char * url,
const char ** protocols,
unsigned protocolsCount
)
Called when the view tries to establish a web socket connection. When JS tries to create a new web sockets it will create a new cohtml::ISocketListener in the cohtml::View. OnCreateWebSocket will be called after that and it must respond with a cohtml::IClientSideSocket object which represent the socket implementation for the current platform.
Parameters:
- listener is cohtml side of the connection, user side must use it to communicate with the View.
- url The URL to which to connect; this should be the URL to which the WebSocket server will respond.
- protocols Either a single protocol string or an array of protocol strings. These strings are used to indicate sub-protocols, so that a single server can implement multiple WebSocket sub-protocols (for example, you might want one server to be able to handle different types of interactions depending on the specified protocol). if you don’t specify a protocol string, an empty string is assumed.
- protocolsCount the number of protocols passed