VarTree::VarTree( intf_thread_t *pIntf ) : Variable( pIntf ), m_pParent( NULL ), m_id( 0 ), m_readonly( false ), m_selected( false ), m_playing( false ), m_expanded( false ), m_flat( false ), m_dontMove( false ) { // Create the position variable m_cPosition = VariablePtr( new VarPercent( pIntf ) ); getPositionVar().set( 1.0 ); getPositionVar().addObserver( this ); }
VarTree::VarTree( const VarTree& v ) : Variable( v.getIntf() ), m_children( v.m_children), m_pParent( v.m_pParent ), m_id( v.m_id ), m_cString( v.m_cString ), m_readonly( v.m_readonly ), m_selected( v.m_selected ), m_playing( v.m_playing ), m_expanded( v.m_expanded ), m_flat( false ), m_dontMove( false ) { // Create the position variable m_cPosition = VariablePtr( new VarPercent( getIntf() ) ); getPositionVar().set( 1.0 ); getPositionVar().addObserver( this ); }
VarTree::VarTree( intf_thread_t *pIntf, VarTree *pParent, int id, const UStringPtr &rcString, bool selected, bool playing, bool expanded, bool readonly ) : Variable( pIntf ), m_pParent( pParent ), m_id( id ), m_cString( rcString ), m_readonly( readonly ), m_selected( selected ), m_playing( playing ), m_expanded( expanded ), m_flat( false ), m_dontMove( false ) { // Create the position variable m_cPosition = VariablePtr( new VarPercent( pIntf ) ); getPositionVar().set( 1.0 ); getPositionVar().addObserver( this ); }
void VarTree::setSliderFromItem( const Iterator& it ) { VarPercent &rVarPos = getPositionVar(); int indexMax = m_flat ? (countLeafs() - 1) : (visibleItems() - 1); int index = getIndex( it ); double percentage = (1.0 - (double)index/(double)indexMax); m_dontMove = true; rVarPos.set( (float)percentage ); m_dontMove = false; }
VarTree::Iterator VarTree::getItemFromSlider() { // a simple (int)(...) causes rounding errors ! #ifdef _MSC_VER # define lrint (int) #endif VarPercent &rVarPos = getPositionVar(); double percentage = rVarPos.get(); int indexMax = m_flat ? (countLeafs() - 1) : (visibleItems() - 1); int index = lrint( (1.0 - percentage)*(double)indexMax ); Iterator it_first = m_flat ? getLeaf( index + 1 ) : getVisibleItem( index + 1 ); return it_first; }
Playtree::~Playtree() { getPositionVar().delObserver( this ); }
Playtree::Playtree( intf_thread_t *pIntf ) : VarTree( pIntf ), m_pPlaylist( pIntf->p_sys->p_playlist ) { getPositionVar().addObserver( this ); buildTree(); }
VarList::VarList( intf_thread_t *pIntf ): Variable( pIntf ) { // Create the position variable m_cPosition = VariablePtr( new VarPercent( pIntf ) ); getPositionVar().set( 1.0 ); }
VarTree::~VarTree() { getPositionVar().delObserver( this ); }