SideArea.cc 6.55 KB
Newer Older
1
/*===========================================================================*\
Jan Möbius's avatar
Jan Möbius committed
2
3
*                                                                            *
*                              OpenFlipper                                   *
Jan Möbius's avatar
Jan Möbius committed
4
*      Copyright (C) 2001-2011 by Computer Graphics Group, RWTH Aachen       *
Jan Möbius's avatar
Jan Möbius committed
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
*                           www.openflipper.org                              *
*                                                                            *
*--------------------------------------------------------------------------- *
*  This file is part of OpenFlipper.                                         *
*                                                                            *
*  OpenFlipper is free software: you can redistribute it and/or modify       *
*  it under the terms of the GNU Lesser General Public License as            *
*  published by the Free Software Foundation, either version 3 of            *
*  the License, or (at your option) any later version with the               *
*  following exceptions:                                                     *
*                                                                            *
*  If other files instantiate templates or use macros                        *
*  or inline functions from this file, or you compile this file and          *
*  link it with other files to produce an executable, this file does         *
*  not by itself cause the resulting executable to be covered by the         *
*  GNU Lesser General Public License. This exception does not however        *
*  invalidate any other reasons why the executable file might be             *
*  covered by the GNU Lesser General Public License.                         *
*                                                                            *
*  OpenFlipper is distributed in the hope that it will be useful,            *
*  but WITHOUT ANY WARRANTY; without even the implied warranty of            *
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             *
*  GNU Lesser General Public License for more details.                       *
*                                                                            *
*  You should have received a copy of the GNU LesserGeneral Public           *
*  License along with OpenFlipper. If not,                                   *
*  see <http://www.gnu.org/licenses/>.                                       *
*                                                                            *
33
34
35
\*===========================================================================*/

/*===========================================================================*\
Jan Möbius's avatar
Jan Möbius committed
36
37
38
39
40
*                                                                            *
*   $Revision$                                                       *
*   $LastChangedBy$                                                *
*   $Date$                     *
*                                                                            *
41
42
43
\*===========================================================================*/


Jan Möbius's avatar
Dennis:    
Jan Möbius committed
44
45
46
47
48
49
50

//== INCLUDES =================================================================

#include <QVBoxLayout>

#include "SideArea.hh"
#include "SideElement.hh"
Dirk Wilden's avatar
Dirk Wilden committed
51
#include <OpenFlipper/common/GlobalOptions.hh>
Jan Möbius's avatar
Dennis:    
Jan Möbius committed
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//== IMPLEMENTATION ==========================================================

SideArea::SideArea (QWidget *_parent) :
  QWidget (_parent)
{

  layout_ = new QVBoxLayout;
  layout_->setSpacing (0);

  QVBoxLayout *l = new QVBoxLayout;
  l->addLayout (layout_);
  l->addStretch(1);

  setLayout (l);
}

//-----------------------------------------------------------------------------

Dirk Wilden's avatar
Dirk Wilden committed
70
71
void SideArea::addItem (QWidget *_w, QString _name, QIcon *_icon)
{
72
73
74
75
76
77
78
79
  bool contains = false;
  QVector<SideElement*>::iterator it = items_.begin();
  for(; it != items_.end(); ++it) {
    if ((*it)->widget() == _w) {
      contains = true;
      break;
    }
  }
Dirk Wilden's avatar
Dirk Wilden committed
80

81
82
83
84
85
86
87
  if (contains) {
    return;
  } else {
    SideElement *e = new SideElement (this, _w, _name, _icon);
    layout_->addWidget (e);
    items_.push_back (e);
  }
Dirk Wilden's avatar
Dirk Wilden committed
88
89
90
91
}

//-----------------------------------------------------------------------------

Jan Möbius's avatar
Dennis:    
Jan Möbius committed
92
93
void SideArea::addItem (QWidget *_w, QString _name)
{
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
  bool contains = false;
  QVector<SideElement*>::iterator it = items_.begin();
  for(; it != items_.end(); ++it) {
    if ((*it)->widget() == _w) {
      contains = true;
      break;
    }
  }

  if (contains) {
    return;
  } else {
    SideElement *e = new SideElement (this, _w, _name);
    layout_->addWidget (e);
    items_.push_back (e);
  }
Jan Möbius's avatar
Dennis:    
Jan Möbius committed
110
111
112
113
}

//-----------------------------------------------------------------------------

114
void SideArea::moveItemToPosition(const QString& _name, int _position) {
115

116
117
118
    // Position is in valid range
    if(_position < 0 || _position >= items_.size())
        return;
119

120
121
122
123
124
125
    // Search item
    QVector<SideElement*>::iterator it = items_.begin();
    for(; it != items_.end(); ++it) {
        if((*it)->name() == _name)
            break;
    }
126

127
128
129
130
131
132
133
134
135
136
137
138
139
140
    if(it != items_.end()) {
        layout_->removeWidget(*it);
        layout_->insertWidget(_position, (*it));
    }
}

//-----------------------------------------------------------------------------

int SideArea::getNumberOfWidgets() const {
    return items_.size();
}

//-----------------------------------------------------------------------------

Jan Möbius's avatar
Dennis:    
Jan Möbius committed
141
142
143
144
145
146
147
148
149
150
151
152
void SideArea::clear ()
{
  foreach (SideElement *e, items_)
  {
    layout_->removeWidget (e);
    delete e;
  }
  items_.clear ();
}

//-----------------------------------------------------------------------------

153
154
155
156
157
158
159
160
161
void SideArea::expandAll()
{
  foreach (SideElement *e, items_)
  {
    e->setActive(true);
  }
}

//-----------------------------------------------------------------------------
162

Jan Möbius's avatar
Dennis:    
Jan Möbius committed
163
164
165
166
167
168
169
170
171
172
173
void SideArea::saveState (QSettings &_settings)
{
  _settings.beginGroup ("SideArea");
  foreach (SideElement *e, items_)
  {
    e->saveState (_settings);
  }
  _settings.endGroup ();
}

//-----------------------------------------------------------------------------
Dirk Wilden's avatar
Dirk Wilden committed
174

Jan Möbius's avatar
Dennis:    
Jan Möbius committed
175
176
177
178
179
180
181
182
183
184
void SideArea::restoreState (QSettings &_settings)
{
  _settings.beginGroup ("SideArea");
  foreach (SideElement *e, items_)
  {
    e->restoreState (_settings);
  }
  _settings.endGroup ();
}

Dirk Wilden's avatar
Dirk Wilden committed
185
186
187
188
189
190
191
//-----------------------------------------------------------------------------

void SideArea::setElementActive(QString _name, bool _active)
{
  for (int i=0; i < items_.count(); i++)
    if ( items_[i]->name() == _name ){
      items_[i]->setActive(_active);
192

Dirk Wilden's avatar
Dirk Wilden committed
193
194
195
196
      return;
    }
}

197

Jan Möbius's avatar
Dennis:    
Jan Möbius committed
198
199
//=============================================================================
//=============================================================================