Kodi Documentation 22.0
Kodi is an open source media player and entertainment hub.
Loading...
Searching...
No Matches
KODI::GAME::CGUIDialogButtonCapture Class Referenceabstract

#include <GUIDialogButtonCapture.h>

Inheritance diagram for KODI::GAME::CGUIDialogButtonCapture:
KODI::JOYSTICK::IButtonMapper Observer CThread KODI::GAME::CGUIDialogAxisDetection KODI::GAME::CGUIDialogIgnoreInput

Public Member Functions

 CGUIDialogButtonCapture ()
 
 ~CGUIDialogButtonCapture () override=default
 
std::string ControllerID () const override
 The add-on ID of the game controller associated with this button mapper.
 
bool NeedsCooldown () const override
 Return true if the button mapper wants a cooldown between button mapping commands.
 
bool MapPrimitive (JOYSTICK::IButtonMap *buttonMap, KEYMAP::IKeymap *keymap, const JOYSTICK::CDriverPrimitive &primitive) override
 Handle button/hat press or axis threshold.
 
void OnEventFrame (const JOYSTICK::IButtonMap *buttonMap, bool bMotion) override
 Called once per event frame to notify the implementation of motion status.
 
void OnLateAxis (const JOYSTICK::IButtonMap *buttonMap, unsigned int axisIndex) override
 Called when an axis has been detected after mapping began.
 
void Notify (const Observable &obs, const ObservableMessage msg) override
 Process a message from an observable.
 
void Show ()
 Show the dialog.
 
- Public Member Functions inherited from KODI::JOYSTICK::IButtonMapper
 IButtonMapper ()=default
 
virtual ~IButtonMapper ()=default
 
virtual bool AcceptsPrimitive (PRIMITIVE_TYPE type) const =0
 Return true if the button mapper accepts primitives of the given type.
 
void SetButtonMapCallback (const std::string &deviceLocation, IButtonMapCallback *callback)
 
void ResetButtonMapCallbacks (void)
 
std::map< std::string, IButtonMapCallback * > & ButtonMapCallbacks (void)
 
- Public Member Functions inherited from Observer
 Observer ()=default
 
virtual ~Observer ()=default
 

Protected Member Functions

void Process () override
 
virtual std::string GetDialogText ()=0
 
virtual std::string GetDialogHeader ()=0
 
virtual bool MapPrimitiveInternal (JOYSTICK::IButtonMap *buttonMap, KEYMAP::IKeymap *keymap, const JOYSTICK::CDriverPrimitive &primitive)=0
 
virtual void OnClose (bool bAccepted)=0
 
- Protected Member Functions inherited from CThread
 CThread (const char *ThreadName)
 
virtual void OnStartup ()
 
virtual void OnExit ()
 
WaitResponse AbortableWait (CEvent &event, std::chrono::milliseconds duration=std::chrono::milliseconds(-1))
 
 CThread (IRunnable *pRunnable, const char *ThreadName)
 
virtual ~CThread ()
 
void Create (bool bAutoDelete=false)
 
template<typename Rep , typename Period >
void Sleep (std::chrono::duration< Rep, Period > duration)
 
bool IsAutoDelete () const
 
virtual void StopThread (bool bWait=true)
 
bool IsRunning () const
 
bool IsCurrentThread () const
 
bool Join (std::chrono::milliseconds duration)
 
bool SetPriority (const ThreadPriority &priority)
 Set the threads priority. This uses the platforms native threading library to do so.
 
virtual void OnException ()
 

Protected Attributes

CEvent m_captureEvent
 
- Protected Attributes inherited from CThread
std::atomic< boolm_bStop
 

Additional Inherited Members

- Protected Types inherited from CThread
enum  WaitResponse { WAIT_INTERRUPTED = -1 , WAIT_SIGNALED = 0 , WAIT_TIMEDOUT = 1 }
 
- Static Protected Member Functions inherited from CThread
static const std::thread::id GetCurrentThreadId ()
 
static CThreadGetCurrentThread ()
 

Constructor & Destructor Documentation

◆ CGUIDialogButtonCapture()

CGUIDialogButtonCapture::CGUIDialogButtonCapture ( )

◆ ~CGUIDialogButtonCapture()

KODI::GAME::CGUIDialogButtonCapture::~CGUIDialogButtonCapture ( )
overridedefault

Member Function Documentation

◆ ControllerID()

std::string CGUIDialogButtonCapture::ControllerID ( ) const
overridevirtual

The add-on ID of the game controller associated with this button mapper.

Returns
The ID of the add-on extending kodi.game.controller

Implements KODI::JOYSTICK::IButtonMapper.

◆ GetDialogHeader()

virtual std::string KODI::GAME::CGUIDialogButtonCapture::GetDialogHeader ( )
protectedpure virtual

◆ GetDialogText()

virtual std::string KODI::GAME::CGUIDialogButtonCapture::GetDialogText ( )
protectedpure virtual

◆ MapPrimitive()

bool CGUIDialogButtonCapture::MapPrimitive ( JOYSTICK::IButtonMap * buttonMap,
KEYMAP::IKeymap * keyMap,
const JOYSTICK::CDriverPrimitive & primitive )
overridevirtual

Handle button/hat press or axis threshold.

Parameters
buttonMapThe button map being manipulated
keymapAn interface capable of translating features to Kodi actions
primitiveThe driver primitive

Called in the same thread as IButtonMapper::OnFrame.

Returns
True if driver primitive was mapped to a feature

Implements KODI::JOYSTICK::IButtonMapper.

◆ MapPrimitiveInternal()

virtual bool KODI::GAME::CGUIDialogButtonCapture::MapPrimitiveInternal ( JOYSTICK::IButtonMap * buttonMap,
KEYMAP::IKeymap * keymap,
const JOYSTICK::CDriverPrimitive & primitive )
protectedpure virtual

◆ NeedsCooldown()

bool KODI::GAME::CGUIDialogButtonCapture::NeedsCooldown ( ) const
inlineoverridevirtual

Return true if the button mapper wants a cooldown between button mapping commands.

Returns
True to only send button mapping commands that occur after a small timeout from the previous command.

Implements KODI::JOYSTICK::IButtonMapper.

◆ Notify()

void CGUIDialogButtonCapture::Notify ( const Observable & obs,
const ObservableMessage msg )
overridevirtual

Process a message from an observable.

Parameters
obsThe observable that sends the message.
msgThe message.

Implements Observer.

◆ OnClose()

virtual void KODI::GAME::CGUIDialogButtonCapture::OnClose ( bool bAccepted)
protectedpure virtual

◆ OnEventFrame()

void KODI::GAME::CGUIDialogButtonCapture::OnEventFrame ( const JOYSTICK::IButtonMap * buttonMap,
bool bMotion )
inlineoverridevirtual

Called once per event frame to notify the implementation of motion status.

Parameters
buttonMapThe button map passed to MapPrimitive() (shall not be modified)
bMotionTrue if a previously-mapped axis is still in motion

This allows the implementer to wait for an axis to be centered before allowing it to be used as Kodi input.

If mapping finishes on an axis, then the axis will still be pressed and sending input every frame when the mapping ends. For example, when the right analog stick is the last feature to be mapped, it is still pressed when mapping ends and immediately sends Volume Down actions.

The fix is to allow implementers to wait until all axes are motionless before detaching themselves.

Called in the same thread as IButtonMapper::MapPrimitive.

Implements KODI::JOYSTICK::IButtonMapper.

◆ OnLateAxis()

void KODI::GAME::CGUIDialogButtonCapture::OnLateAxis ( const JOYSTICK::IButtonMap * buttonMap,
unsigned int axisIndex )
inlineoverridevirtual

Called when an axis has been detected after mapping began.

Parameters
axisIndexThe index of the axis being discovered

Some joystick drivers don't report an initial value for analog axes.

Called in the same thread as IButtonMapper::MapPrimitive.

Implements KODI::JOYSTICK::IButtonMapper.

◆ Process()

void CGUIDialogButtonCapture::Process ( void )
overrideprotectedvirtual
Todo
Move to rendering thread when there is a rendering thread

Reimplemented from CThread.

◆ Show()

void CGUIDialogButtonCapture::Show ( )

Show the dialog.

Member Data Documentation

◆ m_captureEvent

CEvent KODI::GAME::CGUIDialogButtonCapture::m_captureEvent
protected

The documentation for this class was generated from the following files: