summaryrefslogtreecommitdiff
path: root/src/libs
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2010-04-20 16:46:35 +0200
committerFriedemann Kleint <Friedemann.Kleint@nokia.com>2010-04-20 16:46:35 +0200
commit3d6560a10b119cbc564db877d5008ba6ece1228a (patch)
treeec4e7946b0cbb7ee48a5f35e489e0e4cbdc2f734 /src/libs
parente6900ff03d58a2ec2200ee87ee6b3f5a1d72b8e6 (diff)
downloadqt-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.cpp81
-rw-r--r--src/libs/utils/fancymainwindow.h19
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);