fancymainwindow: remove m_dockWidgets member

Use QMainWindow::dockWidgets() instead.

Done by Milian Wolff
This commit is contained in:
hjk
2011-02-07 15:05:07 +01:00
parent 9a952cf495
commit 7eb5a00f54

View File

@@ -51,8 +51,7 @@ namespace Utils {
struct FancyMainWindowPrivate { struct FancyMainWindowPrivate {
explicit FancyMainWindowPrivate(FancyMainWindow *q); explicit FancyMainWindowPrivate(FancyMainWindow *q);
QList<QDockWidget *> m_dockWidgets; QMap<QDockWidget *, bool> m_dockWidgetActiveState;
QList<bool> m_dockWidgetActiveState;
bool m_locked; bool m_locked;
bool m_handleDockVisibilityChanges; //todo bool m_handleDockVisibilityChanges; //todo
@@ -98,7 +97,7 @@ QDockWidget *FancyMainWindow::addDockForWidget(QWidget *widget)
// Set an object name to be used in settings, derive from widget name // Set an object name to be used in settings, derive from widget name
const QString objectName = widget->objectName(); const QString objectName = widget->objectName();
if (objectName.isEmpty()) { if (objectName.isEmpty()) {
dockWidget->setObjectName(QLatin1String("dockWidget") + QString::number(d->m_dockWidgets.size() + 1)); dockWidget->setObjectName(QLatin1String("dockWidget") + QString::number(dockWidgets().size() + 1));
} else { } else {
dockWidget->setObjectName(objectName + QLatin1String("DockWidget")); dockWidget->setObjectName(objectName + QLatin1String("DockWidget"));
} }
@@ -108,8 +107,7 @@ QDockWidget *FancyMainWindow::addDockForWidget(QWidget *widget)
this, SLOT(onDockVisibilityChange(bool))); this, SLOT(onDockVisibilityChange(bool)));
connect(dockWidget, SIGNAL(topLevelChanged(bool)), connect(dockWidget, SIGNAL(topLevelChanged(bool)),
this, SLOT(onTopLevelChanged())); this, SLOT(onTopLevelChanged()));
d->m_dockWidgets.append(dockWidget); d->m_dockWidgetActiveState[dockWidget] = true;
d->m_dockWidgetActiveState.append(true);
updateDockWidget(dockWidget); updateDockWidget(dockWidget);
return dockWidget; return dockWidget;
} }
@@ -144,8 +142,7 @@ void FancyMainWindow::onDockVisibilityChange(bool visible)
if (!d->m_handleDockVisibilityChanges) if (!d->m_handleDockVisibilityChanges)
return; return;
QDockWidget *dockWidget = qobject_cast<QDockWidget *>(sender()); QDockWidget *dockWidget = qobject_cast<QDockWidget *>(sender());
int index = d->m_dockWidgets.indexOf(dockWidget); d->m_dockWidgetActiveState[dockWidget] = visible;
d->m_dockWidgetActiveState[index] = visible;
} }
void FancyMainWindow::onTopLevelChanged() void FancyMainWindow::onTopLevelChanged()
@@ -157,8 +154,8 @@ void FancyMainWindow::setTrackingEnabled(bool enabled)
{ {
if (enabled) { if (enabled) {
d->m_handleDockVisibilityChanges = true; d->m_handleDockVisibilityChanges = true;
for (int i = 0; i < d->m_dockWidgets.size(); ++i) foreach(QDockWidget *dockWidget, dockWidgets())
d->m_dockWidgetActiveState[i] = d->m_dockWidgets[i]->isVisible(); d->m_dockWidgetActiveState[dockWidget] = dockWidget->isVisible();
} else { } else {
d->m_handleDockVisibilityChanges = false; d->m_handleDockVisibilityChanges = false;
} }
@@ -167,7 +164,7 @@ void FancyMainWindow::setTrackingEnabled(bool enabled)
void FancyMainWindow::setLocked(bool locked) void FancyMainWindow::setLocked(bool locked)
{ {
d->m_locked = locked; d->m_locked = locked;
foreach (QDockWidget *dockWidget, d->m_dockWidgets) { foreach (QDockWidget *dockWidget, dockWidgets()) {
updateDockWidget(dockWidget); updateDockWidget(dockWidget);
} }
} }
@@ -194,10 +191,9 @@ void FancyMainWindow::contextMenuEvent(QContextMenuEvent *event)
void FancyMainWindow::handleVisibilityChanged(bool visible) void FancyMainWindow::handleVisibilityChanged(bool visible)
{ {
d->m_handleDockVisibilityChanges = false; d->m_handleDockVisibilityChanges = false;
for (int i = 0; i < d->m_dockWidgets.size(); ++i) { foreach(QDockWidget *dockWidget, dockWidgets()) {
QDockWidget *dockWidget = d->m_dockWidgets.at(i);
if (dockWidget->isFloating()) { if (dockWidget->isFloating()) {
dockWidget->setVisible(visible && d->m_dockWidgetActiveState.at(i)); dockWidget->setVisible(visible && d->m_dockWidgetActiveState.value(dockWidget));
} }
} }
if (visible) if (visible)
@@ -228,9 +224,9 @@ QHash<QString, QVariant> FancyMainWindow::saveSettings() const
QHash<QString, QVariant> settings; QHash<QString, QVariant> settings;
settings.insert(QLatin1String(stateKeyC), saveState(settingsVersion)); settings.insert(QLatin1String(stateKeyC), saveState(settingsVersion));
settings.insert(QLatin1String(lockedKeyC), d->m_locked); settings.insert(QLatin1String(lockedKeyC), d->m_locked);
for (int i = 0; i < d->m_dockWidgetActiveState.count(); ++i) { foreach(QDockWidget *dockWidget, dockWidgets()) {
settings.insert(d->m_dockWidgets.at(i)->objectName(), settings.insert(dockWidget->objectName(),
d->m_dockWidgetActiveState.at(i)); d->m_dockWidgetActiveState.value(dockWidget));
} }
return settings; return settings;
} }
@@ -242,14 +238,14 @@ void FancyMainWindow::restoreSettings(const QHash<QString, QVariant> &settings)
restoreState(ba, settingsVersion); restoreState(ba, settingsVersion);
d->m_locked = settings.value(QLatin1String("Locked"), true).toBool(); d->m_locked = settings.value(QLatin1String("Locked"), true).toBool();
d->m_toggleLockedAction->setChecked(d->m_locked); d->m_toggleLockedAction->setChecked(d->m_locked);
for (int i = 0; i < d->m_dockWidgetActiveState.count(); ++i) { foreach(QDockWidget *widget, dockWidgets()) {
d->m_dockWidgetActiveState[i] = settings.value(d->m_dockWidgets.at(i)->objectName(), false).toBool(); d->m_dockWidgetActiveState[widget] = settings.value(widget->objectName(), false).toBool();
} }
} }
QList<QDockWidget *> FancyMainWindow::dockWidgets() const QList<QDockWidget *> FancyMainWindow::dockWidgets() const
{ {
return d->m_dockWidgets; return qFindChildren<QDockWidget *>(this);
} }
bool FancyMainWindow::isLocked() const bool FancyMainWindow::isLocked() const
@@ -289,7 +285,7 @@ QAction *FancyMainWindow::resetLayoutAction() const
void FancyMainWindow::setDockActionsVisible(bool v) void FancyMainWindow::setDockActionsVisible(bool v)
{ {
foreach(const QDockWidget *dockWidget, d->m_dockWidgets) foreach(const QDockWidget *dockWidget, dockWidgets())
dockWidget->toggleViewAction()->setVisible(v); dockWidget->toggleViewAction()->setVisible(v);
d->m_toggleLockedAction->setVisible(v); d->m_toggleLockedAction->setVisible(v);
d->m_menuSeparator1->setVisible(v); d->m_menuSeparator1->setVisible(v);