implemented the ability to restore the default layout

This commit is contained in:
Roman Pudashkin 2021-11-15 18:39:48 +02:00
parent 77c66dd103
commit 2ffc654ecd
8 changed files with 33 additions and 1 deletions

View file

@ -81,6 +81,11 @@ const UiActionList ApplicationUiActions::m_actions = {
QT_TRANSLATE_NOOP("action", "Revert to factory settings"),
QT_TRANSLATE_NOOP("action", "Revert to factory settings")
),
UiAction("restore-default-layout",
mu::context::UiCtxAny,
QT_TRANSLATE_NOOP("action", "Restore the default layout"),
QT_TRANSLATE_NOOP("action", "Restore the default layout")
),
UiAction("toggle-mixer",
mu::context::UiCtxNotationOpened,
QT_TRANSLATE_NOOP("action", "Mixer"),

View file

@ -200,7 +200,9 @@ MenuItem AppMenuModel::viewItem() const
makeMenuItem("show-pageborders"),
makeMenuItem("mark-irregular"),
makeSeparator(),
makeMenuItem("fullscreen")
makeMenuItem("fullscreen"),
makeSeparator(),
makeMenuItem("restore-default-layout")
};
return makeMenu(qtrc("appshell", "&View"), viewItems);

View file

@ -186,6 +186,8 @@ void DockToolBarView::init()
if (height() > width()) {
setOrientation(Qt::Vertical);
} else {
setOrientation(Qt::Horizontal);
}
}

View file

@ -234,6 +234,15 @@ QQuickItem& DockWindow::asItem() const
return *m_mainWindow;
}
void DockWindow::restoreDefaultLayout()
{
for (const DockPageView* page : m_pages.list()) {
uiConfiguration()->setPageState(page->objectName(), QByteArray());
}
uiConfiguration()->setWindowGeometry(QByteArray());
}
DockingHolderView* DockWindow::mainToolBarDockingHolder() const
{
return m_mainToolBarDockingHolder;

View file

@ -88,6 +88,8 @@ public:
DockPageView* currentPage() const override;
QQuickItem& asItem() const override;
void restoreDefaultLayout() override;
public slots:
void setMainToolBarDockingHolder(DockingHolderView* mainToolBarDockingHolder);

View file

@ -47,6 +47,8 @@ public:
virtual DockPageView* currentPage() const = 0;
virtual QQuickItem& asItem() const = 0;
virtual void restoreDefaultLayout() = 0;
};
}

View file

@ -37,6 +37,7 @@ void DockWindowActionsController::init()
dispatcher()->reg(this, "set-dock-open", this, &DockWindowActionsController::setDockOpen);
dispatcher()->reg(this, "toggle-dock", this, &DockWindowActionsController::toggleOpened);
dispatcher()->reg(this, "toggle-floating", this, &DockWindowActionsController::toggleFloating);
dispatcher()->reg(this, "restore-default-layout", this, &DockWindowActionsController::restoreDefaultLayout);
}
void DockWindowActionsController::setDockOpen(const ActionData& args)
@ -67,3 +68,8 @@ IDockWindow* DockWindowActionsController::window() const
{
return dockWindowProvider()->window();
}
void DockWindowActionsController::restoreDefaultLayout()
{
window()->restoreDefaultLayout();
}

View file

@ -28,12 +28,14 @@
#include "modularity/ioc.h"
#include "actions/iactionsdispatcher.h"
#include "../idockwindowprovider.h"
#include "ui/iuiconfiguration.h"
namespace mu::dock {
class DockWindowActionsController : public actions::Actionable
{
INJECT(dock, IDockWindowProvider, dockWindowProvider)
INJECT(dock, actions::IActionsDispatcher, dispatcher)
INJECT(dock, ui::IUiConfiguration, uiConfiguration)
public:
void init();
@ -43,6 +45,8 @@ private:
void toggleOpened(const actions::ActionData& args);
void toggleFloating(const actions::ActionData& args);
void restoreDefaultLayout();
IDockWindow* window() const;
};
}