FancyMainWindow: Qt5-ify

Change-Id: I93b951db5c6d7d98940a9731db26a4a9be21bdef
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
hjk
2014-08-26 13:40:12 +02:00
parent 513ee02f10
commit 173879eb1f
2 changed files with 26 additions and 38 deletions

View File

@@ -198,8 +198,6 @@ public:
class DockWidget : public QDockWidget class DockWidget : public QDockWidget
{ {
Q_OBJECT
public: public:
DockWidget(QWidget *inner, QWidget *parent) DockWidget(QWidget *inner, QWidget *parent)
: QDockWidget(parent), m_inner(inner) : QDockWidget(parent), m_inner(inner)
@@ -219,15 +217,23 @@ public:
m_timer.setSingleShot(true); m_timer.setSingleShot(true);
m_timer.setInterval(500); m_timer.setInterval(500);
connect(&m_timer, SIGNAL(timeout()), this, SLOT(handleMouseTimeout())); connect(&m_timer, &QTimer::timeout, this, &DockWidget::handleMouseTimeout);
connect(this, SIGNAL(topLevelChanged(bool)), this, SLOT(handleToplevelChanged(bool))); connect(this, &QDockWidget::topLevelChanged, this, &DockWidget::handleToplevelChanged);
connect(toggleViewAction(), &QAction::triggered,
[this]() {
if (isVisible())
raise();
});
auto origFloatButton = findChild<QAbstractButton *>(QLatin1String("qt_dockwidget_floatbutton")); auto origFloatButton = findChild<QAbstractButton *>(QLatin1String("qt_dockwidget_floatbutton"));
connect(m_titleBar->m_floatButton, SIGNAL(clicked()), origFloatButton, SIGNAL(clicked())); connect(m_titleBar->m_floatButton, &QAbstractButton::clicked,
origFloatButton, &QAbstractButton::clicked);
auto origCloseButton = findChild<QAbstractButton *>(QLatin1String("qt_dockwidget_closebutton")); auto origCloseButton = findChild<QAbstractButton *>(QLatin1String("qt_dockwidget_closebutton"));
connect(m_titleBar->m_closeButton, SIGNAL(clicked()), origCloseButton, SIGNAL(clicked())); connect(m_titleBar->m_closeButton, &QAbstractButton::clicked,
origCloseButton, &QAbstractButton::clicked);
} }
bool eventFilter(QObject *, QEvent *event) bool eventFilter(QObject *, QEvent *event)
@@ -257,7 +263,7 @@ public:
QDockWidget::leaveEvent(event); QDockWidget::leaveEvent(event);
} }
Q_SLOT void handleMouseTimeout() void handleMouseTimeout()
{ {
QPoint dist = m_startPos - QCursor::pos(); QPoint dist = m_startPos - QCursor::pos();
if (!isFloating() && dist.manhattanLength() < 4) { if (!isFloating() && dist.manhattanLength() < 4) {
@@ -265,7 +271,7 @@ public:
} }
} }
Q_SLOT void handleToplevelChanged(bool floating) void handleToplevelChanged(bool floating)
{ {
if (!floating) if (!floating)
m_titleBar->setActive(false); m_titleBar->setActive(false);
@@ -312,8 +318,8 @@ FancyMainWindowPrivate::FancyMainWindowPrivate() :
FancyMainWindow::FancyMainWindow(QWidget *parent) : FancyMainWindow::FancyMainWindow(QWidget *parent) :
QMainWindow(parent), d(new FancyMainWindowPrivate) QMainWindow(parent), d(new FancyMainWindowPrivate)
{ {
connect(&d->m_resetLayoutAction, SIGNAL(triggered()), connect(&d->m_resetLayoutAction, &QAction::triggered,
this, SIGNAL(resetLayout())); this, &FancyMainWindow::resetLayout);
} }
FancyMainWindow::~FancyMainWindow() FancyMainWindow::~FancyMainWindow()
@@ -328,30 +334,19 @@ QDockWidget *FancyMainWindow::addDockForWidget(QWidget *widget)
QTC_CHECK(widget->windowTitle().size()); QTC_CHECK(widget->windowTitle().size());
auto dockWidget = new DockWidget(widget, this); auto dockWidget = new DockWidget(widget, this);
connect(dockWidget->toggleViewAction(), SIGNAL(triggered()),
this, SLOT(onDockActionTriggered()), Qt::QueuedConnection); connect(dockWidget, &QDockWidget::visibilityChanged,
connect(dockWidget, SIGNAL(visibilityChanged(bool)), [this, dockWidget](bool visible) {
this, SLOT(onDockVisibilityChange(bool))); if (d->m_handleDockVisibilityChanges)
dockWidget->setProperty(dockWidgetActiveState, visible);
});
dockWidget->setProperty(dockWidgetActiveState, true); dockWidget->setProperty(dockWidgetActiveState, true);
return dockWidget; return dockWidget;
} }
void FancyMainWindow::onDockActionTriggered()
{
QDockWidget *dw = qobject_cast<QDockWidget *>(sender()->parent());
if (dw) {
if (dw->isVisible())
dw->raise();
}
}
void FancyMainWindow::onDockVisibilityChange(bool visible)
{
if (d->m_handleDockVisibilityChanges)
sender()->setProperty(dockWidgetActiveState, visible);
}
void FancyMainWindow::setTrackingEnabled(bool enabled) void FancyMainWindow::setTrackingEnabled(bool enabled)
{ {
if (enabled) { if (enabled) {
@@ -495,5 +490,3 @@ void FancyMainWindow::setToolBarDockWidget(QDockWidget *dock)
} }
} // namespace Utils } // namespace Utils
#include "fancymainwindow.moc"

View File

@@ -72,23 +72,18 @@ public:
QDockWidget *toolBarDockWidget() const; QDockWidget *toolBarDockWidget() const;
void setToolBarDockWidget(QDockWidget *dock); void setToolBarDockWidget(QDockWidget *dock);
void setDockActionsVisible(bool v);
signals: signals:
// Emitted by resetLayoutAction(). Connect to a slot // Emitted by resetLayoutAction(). Connect to a slot
// restoring the default layout. // restoring the default layout.
void resetLayout(); void resetLayout();
public slots:
void setDockActionsVisible(bool v);
protected: protected:
void hideEvent(QHideEvent *event); void hideEvent(QHideEvent *event);
void showEvent(QShowEvent *event); void showEvent(QShowEvent *event);
void contextMenuEvent(QContextMenuEvent *event); void contextMenuEvent(QContextMenuEvent *event);
private slots:
void onDockActionTriggered();
void onDockVisibilityChange(bool);
private: private:
void handleVisibilityChanged(bool visible); void handleVisibilityChanged(bool visible);