Ok, the long awaited config wizard is here (at least in a very basic state). There...
[quassel.git] / src / contrib / libqxt-2007-10-24 / src / gui / qxtdockwidget.cpp
1 /****************************************************************************
2 **
3 ** Copyright (C) Qxt Foundation. Some rights reserved.
4 **
5 ** This file is part of the QxtGui module of the Qt eXTension library
6 **
7 ** This library is free software; you can redistribute it and/or modify it
8 ** under the terms of th Common Public License, version 1.0, as published by
9 ** IBM.
10 **
11 ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY
12 ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
13 ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR
14 ** FITNESS FOR A PARTICULAR PURPOSE.
15 **
16 ** You should have received a copy of the CPL along with this file.
17 ** See the LICENSE file and the cpl1.0.txt file included with the source
18 ** distribution for more information. If you did not receive a copy of the
19 ** license, contact the Qxt Foundation.
20 **
21 ** <http://libqxt.sourceforge.net>  <foundation@libqxt.org>
22 **
23 ****************************************************************************/
24 #include "qxtdockwidget.h"
25 #include <QStyle>
26
27 class QxtDockWidgetPrivate : public QxtPrivate<QxtDockWidget>
28 {
29 public:
30     QXT_DECLARE_PUBLIC(QxtDockWidget);
31
32     QSize contentsSize() const;
33     QSize prev;
34 };
35
36 QSize QxtDockWidgetPrivate::contentsSize() const
37 {
38     QSize contents = qxt_p().size();
39     int fw = qxt_p().style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth);
40     QSize frame(2 * fw, fw);
41 #ifdef Q_WS_WIN
42     frame -= QSize(0, 3);
43 #endif
44     contents -= frame;
45     return contents;
46 }
47
48 /*!
49     \class QxtDockWidget QxtDockWidget
50     \ingroup QxtGui
51     \brief An extended QDockWidget that remembers its size.
52
53     QxtDockWidget fills in the gap in QDockWidget and makes the dock
54     widget to remember its size while toggling visibility off and on.
55
56     \note 146752 - QDockWidget should remember its size when hidden/shown.<br>
57     http://www.trolltech.com/developer/task-tracker/index_html?method=entry&id=146752
58  */
59
60 /*!
61     Constructs a new QxtDockWidget with \a title, \a parent and \a flags.
62  */
63 QxtDockWidget::QxtDockWidget(const QString& title, QWidget* parent, Qt::WindowFlags flags)
64         : QDockWidget(title, parent, flags)
65 {
66     QXT_INIT_PRIVATE(QxtDockWidget);
67 }
68
69 /*!
70     Constructs a new QxtDockWidget with \a title, \a parent and \a flags.
71  */
72 QxtDockWidget::QxtDockWidget(QWidget* parent, Qt::WindowFlags flags)
73         : QDockWidget(parent, flags)
74 {
75     QXT_INIT_PRIVATE(QxtDockWidget);
76 }
77
78 /*!
79     Destructs the dock widget.
80  */
81 QxtDockWidget::~QxtDockWidget()
82 {}
83
84 QSize QxtDockWidget::sizeHint() const
85 {
86     QSize size;
87     if (qxt_d().prev.isValid() && !isFloating())
88         size = qxt_d().prev;
89     else
90         size = QDockWidget::sizeHint();
91     return size;
92 }
93
94 void QxtDockWidget::setVisible(bool visible)
95 {
96     if (!visible && !isFloating())
97         qxt_d().prev = qxt_d().contentsSize();
98     QDockWidget::setVisible(visible);
99 }