26 #define YUILogComponent "qt-ui"
27 #include <yui/YUILog.h>
28 #include <QResizeEvent>
31 #include <yui/YEvent.h>
33 #include "YQMainWinDock.h"
35 #define VERBOSE_RESIZE 1
52 YQUI::ui()->noBorder() ?
53 Qt::FramelessWindowHint :
57 setFocusPolicy( Qt::StrongFocus );
59 resize(
YQUI::ui()->defaultSize( YD_HORIZ ),
60 YQUI::ui()->defaultSize( YD_VERT ) );
62 yuiDebug() <<
"MainWinDock initial size: "
63 << size().width() <<
" x " << size().height()
79 resize( event->size() );
88 for ( YQWidgetStack::reverse_iterator it = _widgetStack.rbegin(); it != _widgetStack.rend(); it++ )
92 QRect rect = QRect( QPoint( 0, 0 ), size() );
97 yuiDebug() << dialog <<
" with " << wizard <<
" isSecondary: " << std::boolalpha << wizard->
isSecondary() << endl;
101 if ( QApplication::isLeftToRight() )
104 rect.setWidth( rect.width() );
107 if ( dialog->rect() != rect )
110 yuiDebug() <<
"Resizing child dialog " << std::hex << ( (
void *) dialog ) << std::dec
111 <<
" to " << rect.width() <<
" x " << rect.height()
114 dialog->setGeometry( rect );
125 if ( ! _widgetStack.empty() )
127 QWidget * dialog = _widgetStack.back();
137 YUI_CHECK_PTR( dialog );
146 yuiDebug() <<
"Adding dialog " << std::hex << (
void *) dialog << std::dec
150 _widgetStack.push_back( dialog );
160 if ( _widgetStack.empty() )
168 YQDialog * dialog = _widgetStack.back();
169 QWidget * widget = (QWidget *) dialog->widgetRep();
197 if ( ! _widgetStack.empty() )
199 QWidget * dialog = _widgetStack.back();
200 yuiDebug() <<
"Showing dialog " << std::hex << (
void *) dialog << std::dec << endl;
210 if ( _widgetStack.empty() )
214 dialog = _widgetStack.back();
216 if ( dialog == _widgetStack.back() )
221 _widgetStack.pop_back();
223 yuiDebug() <<
"Removing dialog " << std::hex << (
void *) dialog << std::dec
224 <<
" from mainWinDock"
229 YQMainWinDock::YQWidgetStack::iterator pos = findInStack( dialog );
231 if ( pos == _widgetStack.end() )
234 yuiWarning() <<
"Found dialog somewhere in the middle of the widget stack" << endl;
235 yuiDebug() <<
"Removing dialog " << std::hex << (
void *) dialog << std::dec
236 <<
" from mainWinDock"
239 _widgetStack.erase( pos );
242 if ( _widgetStack.empty() )
246 dialog = _widgetStack.back();
255 YQMainWinDock::YQWidgetStack::iterator
256 YQMainWinDock::findInStack(
YQDialog * dialog )
258 for ( YQMainWinDock::YQWidgetStack::iterator it = _widgetStack.begin();
259 it != _widgetStack.end();
266 return _widgetStack.end();
273 if ( _widgetStack.empty() )
276 return _widgetStack.back();
283 YDialog * topDialog = YDialog::topmostDialog(
false );
303 yuiMilestone() <<
"Caught window manager close event - returning with YCancelEvent" << endl;
319 if ( _sideBarWidth == width )
322 _sideBarWidth = width;
YQWizard * findWizard() const
Find the first wizard in that dialog, if there is any.
virtual void setEnabled(bool enabled)
Set enabled/disabled state.
Container window for YQDialogs of type YMainWindowDialog:
virtual void show()
Show the widget (make it visible).
void activateCurrentDialog(bool active)
Activate or deactivate the next-lower dialog in the dock when a new dialog is opened or when a dialog...
void setSideBarWidth(int width)
For secondary wizards.
YQDialog * topmostDialog() const
Return the current topmost dialog (the widgetRep() of a YQDialog) or 0 if there is none.
static YQMainWinDock * mainWinDock()
Static method to access the singleton for this class.
virtual ~YQMainWinDock()
Destructor.
void remove(YQDialog *dialog=0)
Remove a dialog from the MainWinDock (if it belongs to the MainWinDock).
virtual void resizeEvent(QResizeEvent *event)
Resize event.
void resizeVisibleChild()
Resize the visible child to the current size of the dock.
virtual void paintEvent(QPaintEvent *event)
Paint event.
virtual void closeEvent(QCloseEvent *event)
Window manager close event (Alt-F4): Send a YCancelEvent and let the application handle that event.
void add(YQDialog *dialog)
Add a dialog (the widgetRep() of a YQDialog) to the MainWinDock (on top of its widget stack.
bool couldDock()
Return 'true' if the next main dialog could be docked, i.e., if there is either no open dialog at all...
YQMainWinDock()
Constructor.
void showCurrentDialog()
Show the current dialog.
static YQUI * ui()
Access the global Qt-UI.
void sendEvent(YEvent *event)
Widget event handlers (slots) call this when an event occured that should be the answer to a UserInpu...
bool isSecondary() const
Returns true if the wizard should follow the first wizard with steps.