本文整理汇总了C++中CtrlGeneric类的典型用法代码示例。如果您正苦于以下问题:C++ CtrlGeneric类的具体用法?C++ CtrlGeneric怎么用?C++ CtrlGeneric使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CtrlGeneric类的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getLeft
void TopWindow::processEvent( EvtDragDrop &rEvtDragDrop )
{
// Get the control hit by the mouse
int xPos = rEvtDragDrop.getXPos() - getLeft();
int yPos = rEvtDragDrop.getYPos() - getTop();
CtrlGeneric *pHitControl = findHitControl( xPos, yPos );
if( pHitControl && pHitControl->getType() == "tree" )
{
// Send a dragDrop event
EvtDragDrop evt( getIntf(), xPos, yPos, rEvtDragDrop.getFiles() );
pHitControl->handleEvent( evt );
}
else
{
list<string> files = rEvtDragDrop.getFiles();
list<string>::const_iterator it = files.begin();
for( bool first = true; it != files.end(); ++it, first = false )
{
bool playOnDrop = m_playOnDrop && first;
CmdAddItem( getIntf(), it->c_str(), playOnDrop ).execute();
}
}
m_pDragControl = NULL;
}
示例2: refreshRect
void GenericLayout::refreshRect( int x, int y, int width, int height )
{
// Do nothing if the layout is hidden
if( !m_visible )
return;
// update the transparency global mask
m_pImage->clear( x, y, width, height );
// Draw all the controls of the layout
std::list<LayeredControl>::const_iterator iter;
for( iter = m_controlList.begin(); iter != m_controlList.end(); ++iter )
{
CtrlGeneric *pCtrl = (*iter).m_pControl;
if( pCtrl->isVisible() )
{
pCtrl->draw( *m_pImage, x, y, width, height );
}
}
// Refresh the associated window
TopWindow *pWindow = getWindow();
if( pWindow )
{
// first apply new shape to the window
pWindow->updateShape();
pWindow->invalidateRect( x, y, width, height );
}
}
示例3: findHitControl
void TopWindow::processEvent( EvtMotion &rEvtMotion )
{
// New control hit by the mouse
CtrlGeneric *pNewHitControl =
findHitControl( rEvtMotion.getXPos() - getLeft(),
rEvtMotion.getYPos() - getTop() );
setLastHit( pNewHitControl );
/// Update the help text
VarManager *pVarManager = VarManager::instance( getIntf() );
if( pNewHitControl )
{
pVarManager->getHelpText().set( pNewHitControl->getHelpText() );
}
// Send a motion event to the hit control, or to the control
// that captured the mouse, if any
CtrlGeneric *pActiveControl = pNewHitControl;
if( m_pCapturingControl )
{
pActiveControl = m_pCapturingControl;
}
if( pActiveControl )
{
// Compute the coordinates relative to the window
int xPos = rEvtMotion.getXPos() - getLeft();
int yPos = rEvtMotion.getYPos() - getTop();
// Send a motion event
EvtMotion evt( getIntf(), xPos, yPos );
pActiveControl->handleEvent( evt );
}
}
示例4: raise
void TopWindow::processEvent( EvtScroll &rEvtScroll )
{
// Raise the windows
raise();
// Get the control hit by the mouse
CtrlGeneric *pNewHitControl = findHitControl( rEvtScroll.getXPos(),
rEvtScroll.getYPos());
setLastHit( pNewHitControl );
// send a mouse event to the right control when scrollable
// if none, send it directly to the vlc core
CtrlGeneric *pHitControl = m_pCapturingControl ?
m_pCapturingControl : pNewHitControl;
if( pHitControl && pHitControl->isScrollable() )
{
pHitControl->handleEvent( rEvtScroll );
}
else
{
// Treat the scroll event as a hotkey plus current modifiers
int i = (rEvtScroll.getDirection() == EvtScroll::kUp ?
KEY_MOUSEWHEELUP : KEY_MOUSEWHEELDOWN) | m_currModifier;
var_SetInteger( getIntf()->p_libvlc, "key-pressed", i );
}
}
示例5: raise
void TopWindow::processEvent( EvtScroll &rEvtScroll )
{
// Raise the windows
raise();
// Get the control hit by the mouse
CtrlGeneric *pNewHitControl = findHitControl( rEvtScroll.getXPos(),
rEvtScroll.getYPos());
setLastHit( pNewHitControl );
// Send a mouse event to the hit control, or to the control
// that captured the mouse, if any
CtrlGeneric *pActiveControl = pNewHitControl;
if( m_pCapturingControl )
{
pActiveControl = m_pCapturingControl;
}
if( pActiveControl )
{
pActiveControl->handleEvent( rEvtScroll );
}
else
{
// Treat the scroll event as a hotkey plus current modifiers
int i = (rEvtScroll.getDirection() == EvtScroll::kUp ?
KEY_MOUSEWHEELUP : KEY_MOUSEWHEELDOWN) | m_currModifier;
var_SetInteger( getIntf()->p_libvlc, "key-pressed", i );
}
}
示例6:
GenericLayout::~GenericLayout()
{
delete m_pImage;
std::list<Anchor*>::const_iterator it;
for( it = m_anchorList.begin(); it != m_anchorList.end(); ++it )
{
delete *it;
}
std::list<LayeredControl>::const_iterator iter;
for( iter = m_controlList.begin(); iter != m_controlList.end(); ++iter )
{
CtrlGeneric *pCtrl = (*iter).m_pControl;
pCtrl->unsetLayout();
}
}
示例7: onTooltipChange
void TopWindow::onTooltipChange( const CtrlGeneric &rCtrl )
{
// Check that the control is the active one
if( m_pLastHitControl && m_pLastHitControl == &rCtrl )
{
// Set the tooltip text variable
VarManager *pVarManager = VarManager::instance( getIntf() );
pVarManager->getTooltipText().set( rCtrl.getTooltipText() );
}
}
示例8: onTooltipChange
void TopWindow::onTooltipChange( const CtrlGeneric &rCtrl )
{
// Check that the control is the active one
if( m_pLastHitControl && m_pLastHitControl == &rCtrl )
{
if( rCtrl.getTooltipText().size() )
{
// Set the tooltip text variable
VarManager *pVarManager = VarManager::instance( getIntf() );
pVarManager->getTooltipText().set( rCtrl.getTooltipText() );
m_rWindowManager.showTooltip();
}
else
{
// Nothing to display, so hide the tooltip
m_rWindowManager.hideTooltip();
}
}
}
示例9: raise
void TopWindow::processEvent( EvtScroll &rEvtScroll )
{
// Raise the windows
raise();
// Get the control hit by the mouse
CtrlGeneric *pNewHitControl = findHitControl( rEvtScroll.getXPos(),
rEvtScroll.getYPos());
setLastHit( pNewHitControl );
// Send a mouse event to the hit control, or to the control
// that captured the mouse, if any
CtrlGeneric *pActiveControl = pNewHitControl;
if( m_pCapturingControl )
{
pActiveControl = m_pCapturingControl;
}
if( pActiveControl )
{
pActiveControl->handleEvent( rEvtScroll );
}
else
{
// Treat the scroll event as a hotkey
vlc_value_t val;
if( rEvtScroll.getDirection() == EvtScroll::kUp )
{
val.i_int = KEY_MOUSEWHEELUP;
}
else
{
val.i_int = KEY_MOUSEWHEELDOWN;
}
// Add the modifiers
val.i_int |= m_currModifier;
var_Set( getIntf()->p_vlc, "key-pressed", val );
}
}
示例10: getLeft
void TopWindow::processEvent( EvtDragDrop &rEvtDragDrop )
{
// Get the control hit by the mouse
int xPos = rEvtDragDrop.getXPos() - getLeft();
int yPos = rEvtDragDrop.getYPos() - getTop();
CtrlGeneric *pHitControl = findHitControl( xPos, yPos );
if( pHitControl && pHitControl->getType() == "tree" )
{
// Send a dragDrop event
EvtDragDrop evt( getIntf(), xPos, yPos, rEvtDragDrop.getFiles() );
pHitControl->handleEvent( evt );
}
else
{
input_thread_t *pInput = getIntf()->p_sys->p_input;
bool is_subtitle = false;
list<string> files = rEvtDragDrop.getFiles();
if( files.size() == 1 && pInput != NULL )
{
list<string>::const_iterator it = files.begin();
char* psz_file = make_path( it->c_str() );
if( psz_file )
{
is_subtitle = !input_AddSubtitleOSD( pInput, psz_file, true, true );
free( psz_file );
}
}
if( !is_subtitle )
{
list<string>::const_iterator it = files.begin();
for( bool first = true; it != files.end(); ++it, first = false )
{
bool playOnDrop = m_playOnDrop && first;
CmdAddItem( getIntf(), it->c_str(), playOnDrop ).execute();
}
}
}
m_pDragControl = NULL;
}
示例11: onControlUpdate
void GenericLayout::onControlUpdate( const CtrlGeneric &rCtrl,
int width, int height,
int xOffSet, int yOffSet )
{
// Do nothing if the layout or control is hidden
if( !m_visible )
return;
const Position *pPos = rCtrl.getPosition();
if( width > 0 && height > 0 )
{
// make sure region is within the layout
rect region( pPos->getLeft() + xOffSet,
pPos->getTop() + yOffSet,
width, height );
rect layout( 0, 0, m_rect.getWidth(), m_rect.getHeight() );
rect inter;
if( rect::intersect( layout, region, &inter ) )
{
refreshRect( inter.x, inter.y, inter.width, inter.height );
}
}
}
示例12: evt
CtrlGeneric *TopWindow::findHitControl( int xPos, int yPos )
{
if( m_pActiveLayout == NULL )
{
return NULL;
}
// Get the controls in the active layout
const list<LayeredControl> &ctrlList = m_pActiveLayout->getControlList();
list<LayeredControl>::const_reverse_iterator iter;
// New control hit by the mouse
CtrlGeneric *pNewHitControl = NULL;
// Loop on the control list to find the uppest hit control
for( iter = ctrlList.rbegin(); iter != ctrlList.rend(); iter++ )
{
// Get the position of the control in the layout
const Position *pos = (*iter).m_pControl->getPosition();
if( pos != NULL )
{
// Compute the coordinates of the mouse relative to the control
int xRel = xPos - pos->getLeft();
int yRel = yPos - pos->getTop();
CtrlGeneric *pCtrl = (*iter).m_pControl;
// Control hit ?
if( pCtrl->isVisible() && pCtrl->mouseOver( xRel, yRel ) )
{
pNewHitControl = (*iter).m_pControl;
break;
}
}
else
{
msg_Dbg( getIntf(), "Control at NULL position" );
}
}
// If the hit control has just been entered, send it an enter event
if( pNewHitControl && (pNewHitControl != m_pLastHitControl) )
{
// Don't send the event if another control captured the mouse
if( !m_pCapturingControl || (m_pCapturingControl == pNewHitControl ) )
{
EvtEnter evt( getIntf() );
pNewHitControl->handleEvent( evt );
if( !m_pCapturingControl )
{
// Show the tooltip
m_rWindowManager.hideTooltip();
UString tipText = pNewHitControl->getTooltipText();
if( tipText.length() > 0 )
{
// Set the tooltip text variable
VarManager *pVarManager = VarManager::instance( getIntf() );
pVarManager->getTooltipText().set( tipText );
m_rWindowManager.showTooltip();
}
}
}
}
return pNewHitControl;
}
示例13: forwardEvent
void TopWindow::forwardEvent( EvtGeneric &rEvt, CtrlGeneric &rCtrl )
{
// XXX: We should do some checks here
rCtrl.handleEvent( rEvt );
}