/*****************************************************************************
* ctrl_checkbox.cpp
*****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: ctrl_checkbox.cpp,v 1.2 2004/01/18 19:54:46 asmax Exp $
+ * Copyright (C) 2003 the VideoLAN team
+ * $Id$
*
* Authors: Cyril Deguet <asmax@via.ecp.fr>
* Olivier Teulière <ipkiss@via.ecp.fr>
CmdGeneric &rCommand1, CmdGeneric &rCommand2,
const UString &rTooltip1,
const UString &rTooltip2,
- VarBool &rVariable, const UString &rHelp ):
- CtrlGeneric( pIntf, rHelp ), m_fsm( pIntf ), m_rVariable( rVariable ),
+ VarBool &rVariable, const UString &rHelp,
+ VarBool *pVisible ):
+ CtrlGeneric( pIntf, rHelp, pVisible ), m_fsm( pIntf ),
+ m_rVariable( rVariable ),
m_rCommand1( rCommand1 ), m_rCommand2( rCommand2 ),
m_tooltip1( rTooltip1 ), m_tooltip2( rTooltip2 ),
- m_cmdUpOverDownOver( this, &transUpOverDownOver ),
- m_cmdDownOverUpOver( this, &transDownOverUpOver ),
- m_cmdDownOverDown( this, &transDownOverDown ),
- m_cmdDownDownOver( this, &transDownDownOver ),
- m_cmdUpOverUp( this, &transUpOverUp ),
- m_cmdUpUpOver( this, &transUpUpOver ),
- m_cmdDownUp( this, &transDownUp ),
- m_cmdUpHidden( this, &transUpHidden ),
- m_cmdHiddenUp( this, &transHiddenUp )
+ m_cmdUpOverDownOver( this ), m_cmdDownOverUpOver( this ),
+ m_cmdDownOverDown( this ), m_cmdDownDownOver( this ),
+ m_cmdUpOverUp( this ), m_cmdUpUpOver( this ),
+ m_cmdDownUp( this ), m_cmdUpHidden( this ),
+ m_cmdHiddenUp( this )
{
// Build the images of the checkbox
OSFactory *pOsFactory = OSFactory::instance( pIntf );
// Transitions
m_fsm.addTransition( "upOver", "mouse:left:down", "downOver",
&m_cmdUpOverDownOver );
+ m_fsm.addTransition( "upOver", "mouse:left:dblclick", "downOver",
+ &m_cmdUpOverDownOver );
m_fsm.addTransition( "downOver", "mouse:left:up", "upOver",
&m_cmdDownOverUpOver );
m_fsm.addTransition( "downOver", "leave", "down", &m_cmdDownOverDown );
}
-void CtrlCheckbox::transUpOverDownOver( SkinObject *pCtrl )
+void CtrlCheckbox::CmdUpOverDownOver::execute()
{
- CtrlCheckbox *pThis = (CtrlCheckbox*)pCtrl;
- pThis->captureMouse();
- pThis->m_pImgCurrent = pThis->m_pImgDown;
- pThis->notifyLayout();
+ m_pParent->captureMouse();
+ const OSGraphics *pOldImg = m_pParent->m_pImgCurrent;
+ m_pParent->m_pImgCurrent = m_pParent->m_pImgDown;
+ m_pParent->notifyLayoutMaxSize( pOldImg, m_pParent->m_pImgCurrent );
}
-void CtrlCheckbox::transDownOverUpOver( SkinObject *pCtrl )
+void CtrlCheckbox::CmdDownOverUpOver::execute()
{
- CtrlCheckbox *pThis = (CtrlCheckbox*)pCtrl;
- pThis->releaseMouse();
+ m_pParent->releaseMouse();
// Invert the state variable
- pThis->m_pImgCurrent = pThis->m_pImgUp;
- pThis->notifyLayout();
+ const OSGraphics *pOldImg = m_pParent->m_pImgCurrent;
+ m_pParent->m_pImgCurrent = m_pParent->m_pImgUp;
+ m_pParent->notifyLayoutMaxSize( pOldImg, m_pParent->m_pImgCurrent );
// Execute the command
- pThis->m_pCommand->execute();
+ m_pParent->m_pCommand->execute();
}
-void CtrlCheckbox::transDownOverDown( SkinObject *pCtrl )
+void CtrlCheckbox::CmdDownOverDown::execute()
{
- CtrlCheckbox *pThis = (CtrlCheckbox*)pCtrl;
- pThis->m_pImgCurrent = pThis->m_pImgUp;
- pThis->notifyLayout();
+ const OSGraphics *pOldImg = m_pParent->m_pImgCurrent;
+ m_pParent->m_pImgCurrent = m_pParent->m_pImgUp;
+ m_pParent->notifyLayoutMaxSize( pOldImg, m_pParent->m_pImgCurrent );
}
-void CtrlCheckbox::transDownDownOver( SkinObject *pCtrl )
+void CtrlCheckbox::CmdDownDownOver::execute()
{
- CtrlCheckbox *pThis = (CtrlCheckbox*)pCtrl;
- pThis->m_pImgCurrent = pThis->m_pImgDown;
- pThis->notifyLayout();
+ const OSGraphics *pOldImg = m_pParent->m_pImgCurrent;
+ m_pParent->m_pImgCurrent = m_pParent->m_pImgDown;
+ m_pParent->notifyLayoutMaxSize( pOldImg, m_pParent->m_pImgCurrent );
}
-void CtrlCheckbox::transUpUpOver( SkinObject *pCtrl )
+void CtrlCheckbox::CmdUpUpOver::execute()
{
- CtrlCheckbox *pThis = (CtrlCheckbox*)pCtrl;
- pThis->m_pImgCurrent = pThis->m_pImgOver;
- pThis->notifyLayout();
+ const OSGraphics *pOldImg = m_pParent->m_pImgCurrent;
+ m_pParent->m_pImgCurrent = m_pParent->m_pImgOver;
+ m_pParent->notifyLayoutMaxSize( pOldImg, m_pParent->m_pImgCurrent );
}
-void CtrlCheckbox::transUpOverUp( SkinObject *pCtrl )
+void CtrlCheckbox::CmdUpOverUp::execute()
{
- CtrlCheckbox *pThis = (CtrlCheckbox*)pCtrl;
- pThis->m_pImgCurrent = pThis->m_pImgUp;
- pThis->notifyLayout();
+ const OSGraphics *pOldImg = m_pParent->m_pImgCurrent;
+ m_pParent->m_pImgCurrent = m_pParent->m_pImgUp;
+ m_pParent->notifyLayoutMaxSize( pOldImg, m_pParent->m_pImgCurrent );
}
-void CtrlCheckbox::transDownUp( SkinObject *pCtrl )
+void CtrlCheckbox::CmdDownUp::execute()
{
- CtrlCheckbox *pThis = (CtrlCheckbox*)pCtrl;
- pThis->releaseMouse();
+ m_pParent->releaseMouse();
}
-void CtrlCheckbox::transUpHidden( SkinObject *pCtrl )
+void CtrlCheckbox::CmdUpHidden::execute()
{
- CtrlCheckbox *pThis = (CtrlCheckbox*)pCtrl;
- pThis->m_pImgCurrent = NULL;
- pThis->notifyLayout();
+ const OSGraphics *pOldImg = m_pParent->m_pImgCurrent;
+ m_pParent->m_pImgCurrent = NULL;
+ m_pParent->notifyLayoutMaxSize( pOldImg, m_pParent->m_pImgCurrent );
}
-void CtrlCheckbox::transHiddenUp( SkinObject *pCtrl )
+void CtrlCheckbox::CmdHiddenUp::execute()
{
- CtrlCheckbox *pThis = (CtrlCheckbox*)pCtrl;
- pThis->m_pImgCurrent = pThis->m_pImgUp;
- pThis->notifyLayout();
+ const OSGraphics *pOldImg = m_pParent->m_pImgCurrent;
+ m_pParent->m_pImgCurrent = m_pParent->m_pImgUp;
+ m_pParent->notifyLayoutMaxSize( pOldImg, m_pParent->m_pImgCurrent );
}
-void CtrlCheckbox::onUpdate( Subject<VarBool> &rVariable )
+void CtrlCheckbox::onVarBoolUpdate( VarBool &rVariable )
{
changeButton();
}
// Refresh
notifyLayout();
}
-