diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2010-04-20 16:46:35 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2010-04-20 16:46:35 +0200 |
commit | 3d6560a10b119cbc564db877d5008ba6ece1228a (patch) | |
tree | ec4e7946b0cbb7ee48a5f35e489e0e4cbdc2f734 /src/libs | |
parent | e6900ff03d58a2ec2200ee87ee6b3f5a1d72b8e6 (diff) | |
download | qt-creator-3d6560a10b119cbc564db877d5008ba6ece1228a.tar.gz |
Move the Debugger/Designer view menus to Window menu.
Move actions into FancyMainWindow. Register them in
DebuggerUISwitcher and FormEditorW. Manually hide
Debugger actions for Non-Debug modes (as they belong
to the language context).
Acked-by: con
Diffstat (limited to 'src/libs')
-rw-r--r-- | src/libs/utils/fancymainwindow.cpp | 81 | ||||
-rw-r--r-- | src/libs/utils/fancymainwindow.h | 19 |
2 files changed, 91 insertions, 9 deletions
diff --git a/src/libs/utils/fancymainwindow.cpp b/src/libs/utils/fancymainwindow.cpp index f8193e2491..ff5acae12a 100644 --- a/src/libs/utils/fancymainwindow.cpp +++ b/src/libs/utils/fancymainwindow.cpp @@ -33,28 +33,50 @@ #include <QtCore/QHash> #include <QtGui/QAction> +#include <QtGui/QMenu> #include <QtGui/QDockWidget> #include <QtCore/QSettings> +static const char lockedKeyC[] = "Locked"; +static const char stateKeyC[] = "State"; +static const int settingsVersion = 1; + namespace Utils { struct FancyMainWindowPrivate { - FancyMainWindowPrivate(); + explicit FancyMainWindowPrivate(FancyMainWindow *q); QList<QDockWidget *> m_dockWidgets; QList<bool> m_dockWidgetActiveState; bool m_locked; bool m_handleDockVisibilityChanges; //todo + + QAction *m_menuSeparator1; + QAction *m_toggleLockedAction; + QAction *m_menuSeparator2; + QAction *m_resetLayoutAction; }; -FancyMainWindowPrivate::FancyMainWindowPrivate() : - m_locked(true), m_handleDockVisibilityChanges(true) +FancyMainWindowPrivate::FancyMainWindowPrivate(FancyMainWindow *q) : + m_locked(true), m_handleDockVisibilityChanges(true), + m_menuSeparator1(new QAction(q)), + m_toggleLockedAction(new QAction(FancyMainWindow::tr("Locked"), q)), + m_menuSeparator2(new QAction(q)), + m_resetLayoutAction(new QAction(FancyMainWindow::tr("Reset to default layout") ,q)) { + m_toggleLockedAction->setCheckable(true); + m_toggleLockedAction->setChecked(m_locked); + m_menuSeparator1->setSeparator(true); + m_menuSeparator2->setSeparator(true); } FancyMainWindow::FancyMainWindow(QWidget *parent) : - QMainWindow(parent), d(new FancyMainWindowPrivate) + QMainWindow(parent), d(new FancyMainWindowPrivate(this)) { + connect(d->m_toggleLockedAction, SIGNAL(toggled(bool)), + this, SLOT(setLocked(bool))); + connect(d->m_resetLayoutAction, SIGNAL(triggered()), + this, SIGNAL(resetLayout())); } FancyMainWindow::~FancyMainWindow() @@ -190,8 +212,8 @@ void FancyMainWindow::restoreSettings(const QSettings *settings) QHash<QString, QVariant> FancyMainWindow::saveSettings() const { QHash<QString, QVariant> settings; - settings.insert(QLatin1String("State"), saveState(1)); - settings.insert(QLatin1String("Locked"), d->m_locked); + settings.insert(QLatin1String(stateKeyC), saveState(settingsVersion)); + settings.insert(QLatin1String(lockedKeyC), d->m_locked); for (int i = 0; i < d->m_dockWidgetActiveState.count(); ++i) { settings.insert(d->m_dockWidgets.at(i)->objectName(), d->m_dockWidgetActiveState.at(i)); @@ -201,10 +223,11 @@ QHash<QString, QVariant> FancyMainWindow::saveSettings() const void FancyMainWindow::restoreSettings(const QHash<QString, QVariant> &settings) { - QByteArray ba = settings.value("State", QByteArray()).toByteArray(); + QByteArray ba = settings.value(QLatin1String(stateKeyC), QByteArray()).toByteArray(); if (!ba.isEmpty()) - restoreState(ba, 1); - d->m_locked = settings.value("Locked", true).toBool(); + restoreState(ba, settingsVersion); + d->m_locked = settings.value(QLatin1String("Locked"), true).toBool(); + d->m_toggleLockedAction->setChecked(d->m_locked); for (int i = 0; i < d->m_dockWidgetActiveState.count(); ++i) { d->m_dockWidgetActiveState[i] = settings.value(d->m_dockWidgets.at(i)->objectName(), false).toBool(); } @@ -220,4 +243,44 @@ bool FancyMainWindow::isLocked() const return d->m_locked; } +QMenu *FancyMainWindow::createPopupMenu() +{ + QMenu *menu = QMainWindow::createPopupMenu(); + menu->addAction(d->m_menuSeparator1); + menu->addAction(d->m_toggleLockedAction); + menu->addAction(d->m_menuSeparator2); + menu->addAction(d->m_resetLayoutAction); + return menu; +} + +QAction *FancyMainWindow::menuSeparator1() const +{ + return d->m_menuSeparator1; +} + +QAction *FancyMainWindow::toggleLockedAction() const +{ + return d->m_toggleLockedAction; +} + +QAction *FancyMainWindow::menuSeparator2() const +{ + return d->m_menuSeparator2; +} + +QAction *FancyMainWindow::resetLayoutAction() const +{ + return d->m_resetLayoutAction; +} + +void FancyMainWindow::setDockActionsVisible(bool v) +{ + foreach(const QDockWidget *dockWidget, d->m_dockWidgets) + dockWidget->toggleViewAction()->setVisible(v); + d->m_toggleLockedAction->setVisible(v); + d->m_menuSeparator1->setVisible(v); + d->m_menuSeparator2->setVisible(v); + d->m_resetLayoutAction->setVisible(v); +} + } // namespace Utils diff --git a/src/libs/utils/fancymainwindow.h b/src/libs/utils/fancymainwindow.h index 35593ba7f5..a9079fa2e8 100644 --- a/src/libs/utils/fancymainwindow.h +++ b/src/libs/utils/fancymainwindow.h @@ -42,6 +42,10 @@ namespace Utils { struct FancyMainWindowPrivate; +// MainWindow with dock widgets and additional "lock" functionality +// (locking the dock widgets in place) and "reset layout" functionality. +// The dock actions and the additional actions should be accessible +// in a Window-menu. class QTCREATOR_UTILS_EXPORT FancyMainWindow : public QMainWindow { Q_OBJECT @@ -63,8 +67,23 @@ public: QHash<QString, QVariant> saveSettings() const; void restoreSettings(const QHash<QString, QVariant> &settings); + // Additional context menu actions + QAction *menuSeparator1() const; + QAction *toggleLockedAction() const; + QAction *menuSeparator2() const; + QAction *resetLayoutAction() const; + + // Overwritten to add locked/reset. + virtual QMenu *createPopupMenu(); + +signals: + // Emitted by resetLayoutAction(). Connect to a slot + // restoring the default layout. + void resetLayout(); + public slots: void setLocked(bool locked); + void setDockActionsVisible(bool v); protected: void hideEvent(QHideEvent *event); |