]> git.sesse.net Git - vlc/blob - modules/gui/skins2/utils/var_list.cpp
9bf75f2fd3f1086e8d2d9dfab8521d65e6b5d740
[vlc] / modules / gui / skins2 / utils / var_list.cpp
1 /*****************************************************************************
2  * var_list.cpp
3  *****************************************************************************
4  * Copyright (C) 2003 the VideoLAN team
5  * $Id$
6  *
7  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
8  *          Olivier Teulière <ipkiss@via.ecp.fr>
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23  *****************************************************************************/
24
25 #include "var_list.hpp"
26
27
28 const string VarList::m_type = "list";
29
30
31 VarList::VarList( intf_thread_t *pIntf ): Variable( pIntf )
32 {
33     // Create the position variable
34     m_cPosition = VariablePtr( new VarPercent( pIntf ) );
35     getPositionVar().set( 1.0 );
36 }
37
38
39 VarList::~VarList()
40 {
41 }
42
43
44 void VarList::add( const UStringPtr &rcString )
45 {
46     m_list.push_back( Elem_t( rcString ) );
47     notify();
48 }
49
50
51 void VarList::delSelected()
52 {
53     Iterator it = begin();
54     while( it != end() )
55     {
56         if( (*it).m_selected )
57         {
58             Iterator oldIt = it;
59             it++;
60             m_list.erase( oldIt );
61         }
62         else
63         {
64             it++;
65         }
66     }
67     notify();
68 }
69
70
71 void VarList::clear()
72 {
73     m_list.clear();
74 }
75
76
77 VarList::Iterator VarList::operator[]( int n )
78 {
79     Iterator it = begin();
80     for( int i = 0; i < n; i++ )
81     {
82         if( it != end() )
83         {
84             it++;
85         }
86         else
87         {
88             break;
89         }
90     }
91     return it;
92 }
93
94
95 VarList::ConstIterator VarList::operator[]( int n ) const
96 {
97     ConstIterator it = begin();
98     for( int i = 0; i < n; i++ )
99     {
100         if( it != end() )
101         {
102             it++;
103         }
104         else
105         {
106             break;
107         }
108     }
109     return it;
110 }
111