libyui-qt  2.49.2
YQLayoutBox.cc
1 /*
2  Copyright (C) 2000-2012 Novell, Inc
3  This library is free software; you can redistribute it and/or modify
4  it under the terms of the GNU Lesser General Public License as
5  published by the Free Software Foundation; either version 2.1 of the
6  License, or (at your option) version 3.0 of the License. This library
7  is distributed in the hope that it will be useful, but WITHOUT ANY
8  WARRANTY; without even the implied warranty of MERCHANTABILITY or
9  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
10  License for more details. You should have received a copy of the GNU
11  Lesser General Public License along with this library; if not, write
12  to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
13  Floor, Boston, MA 02110-1301 USA
14 */
15 
16 
17 /*-/
18 
19  File: YQLayoutBox.cc
20 
21  Author: Stefan Hundhammer <sh@suse.de>
22 
23 /-*/
24 
25 
26 #define YUILogComponent "qt-ui"
27 #include <yui/YUILog.h>
28 #include "YQLayoutBox.h"
29 
30 
31 YQLayoutBox::YQLayoutBox( YWidget * parent,
32  YUIDimension dimension )
33  : QWidget( (QWidget *) parent->widgetRep() )
34  , YLayoutBox( parent, dimension )
35  , _needToEnsureChildrenVisible( false )
36 {
37  setWidgetRep( this );
38 }
39 
40 
42 {
43  // NOP
44 }
45 
46 
47 void YQLayoutBox::setEnabled( bool enabled )
48 {
49  QWidget::setEnabled( enabled );
50  YWidget::setEnabled( enabled );
51 }
52 
53 
54 void YQLayoutBox::setSize( int newWidth, int newHeight )
55 {
56  // yuiDebug() << "Resizing " << this << " to " << newWidth << " x " << newHeight << std::endl;
57 
58  if ( _needToEnsureChildrenVisible )
59  {
60  // This is only useful if child widgets were added after the dialog was
61  // initially created: In that case, Qt expects an explicit
62  // widget->show() call.
63  //
64  // Since we don't want to pollute the generic UI layer with such Qt
65  // specific things, we do this here since it's the next best place to
66  // handle it.
67 
69  }
70 
71  resize( newWidth, newHeight );
72  YLayoutBox::setSize( newWidth, newHeight );
73  _needToEnsureChildrenVisible = true;
74 }
75 
76 
77 void YQLayoutBox::moveChild( YWidget * child, int newX, int newY )
78 {
79  QWidget * qw = (QWidget *)( child->widgetRep() );
80  qw->move( newX, newY );
81 }
82 
83 
85 {
86  // Iterate over the YWidget children, not over the QWidget children so we
87  // don't accidentially show Qt widgets that were created in addition to our
88  // explicitly created YWidgets. Otherwise, QPopupMenus (e.g. on menu
89  // buttons or on menu bars) might be opened immediately - which is not what
90  // we want here.
91 
92  for ( YWidgetChildrenManager::ChildrenList::const_iterator it = childrenManager()->begin();
93  it != childrenManager()->end();
94  ++it )
95  {
96  QWidget * child = (QWidget *) (*it)->widgetRep();
97 
98  if ( child && ! child->isVisible() )
99  child->show();
100  }
101 }
102 
103 
104 #include "YQLayoutBox.moc"
YQLayoutBox(YWidget *parent, YUIDimension dim)
Constructor.
Definition: YQLayoutBox.cc:31
virtual ~YQLayoutBox()
Destructor.
Definition: YQLayoutBox.cc:41
virtual void setEnabled(bool enabled)
Set enabled/disabled state.
Definition: YQLayoutBox.cc:47
void ensureChildrenVisible()
Go through the (direct) YWidget children list and make sure the corresponding QWidget is visible...
Definition: YQLayoutBox.cc:84
virtual void moveChild(YWidget *child, int newX, int newY)
Move a child widget to a new position.
Definition: YQLayoutBox.cc:77
virtual void setSize(int newWidth, int newHeight)
Set the new size of the widget.
Definition: YQLayoutBox.cc:54