forked from qt-creator/qt-creator
Core: Create an EditModeWidget class
A step towards having delayed mode widget construction. Change-Id: I1d400e058d17aaebfc784000d8b2705debea6a51 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -19,26 +19,20 @@
|
|||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
|
|
||||||
namespace Core {
|
namespace Core::Internal {
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
EditMode::EditMode() :
|
class EditModeWidget final : public MiniSplitter
|
||||||
m_splitter(new MiniSplitter),
|
{
|
||||||
m_rightSplitWidgetLayout(new QVBoxLayout)
|
public:
|
||||||
|
EditModeWidget()
|
||||||
{
|
{
|
||||||
setObjectName(QLatin1String("EditMode"));
|
|
||||||
setDisplayName(Tr::tr("Edit"));
|
|
||||||
setIcon(Utils::Icon::modeIcon(Icons::MODE_EDIT_CLASSIC,
|
|
||||||
Icons::MODE_EDIT_FLAT, Icons::MODE_EDIT_FLAT_ACTIVE));
|
|
||||||
setPriority(Constants::P_MODE_EDIT);
|
|
||||||
setId(Constants::MODE_EDIT);
|
|
||||||
|
|
||||||
m_rightSplitWidgetLayout->setSpacing(0);
|
|
||||||
m_rightSplitWidgetLayout->setContentsMargins(0, 0, 0, 0);
|
|
||||||
QWidget *rightSplitWidget = new QWidget;
|
|
||||||
rightSplitWidget->setLayout(m_rightSplitWidgetLayout);
|
|
||||||
auto editorPlaceHolder = new EditorManagerPlaceHolder;
|
auto editorPlaceHolder = new EditorManagerPlaceHolder;
|
||||||
m_rightSplitWidgetLayout->insertWidget(0, editorPlaceHolder);
|
|
||||||
|
QWidget *rightSplitWidget = new QWidget;
|
||||||
|
auto rightSplitWidgetLayout = new QVBoxLayout(rightSplitWidget);
|
||||||
|
rightSplitWidgetLayout->setSpacing(0);
|
||||||
|
rightSplitWidgetLayout->setContentsMargins(0, 0, 0, 0);
|
||||||
|
rightSplitWidgetLayout->insertWidget(0, editorPlaceHolder);
|
||||||
|
|
||||||
auto rightPaneSplitter = new MiniSplitter;
|
auto rightPaneSplitter = new MiniSplitter;
|
||||||
rightPaneSplitter->insertWidget(0, rightSplitWidget);
|
rightPaneSplitter->insertWidget(0, rightSplitWidget);
|
||||||
@@ -55,26 +49,38 @@ EditMode::EditMode() :
|
|||||||
splitter->setStretchFactor(0, 3);
|
splitter->setStretchFactor(0, 3);
|
||||||
splitter->setStretchFactor(1, 0);
|
splitter->setStretchFactor(1, 0);
|
||||||
|
|
||||||
m_splitter->insertWidget(0, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT, Side::Left));
|
insertWidget(0, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT, Side::Left));
|
||||||
m_splitter->insertWidget(1, splitter);
|
insertWidget(1, splitter);
|
||||||
m_splitter->insertWidget(2, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT, Side::Right));
|
insertWidget(2, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT, Side::Right));
|
||||||
m_splitter->setStretchFactor(0, 0);
|
setStretchFactor(0, 0);
|
||||||
m_splitter->setStretchFactor(1, 1);
|
setStretchFactor(1, 1);
|
||||||
m_splitter->setStretchFactor(2, 0);
|
setStretchFactor(2, 0);
|
||||||
|
|
||||||
|
setFocusProxy(editorPlaceHolder);
|
||||||
|
|
||||||
|
IContext::attach(this, Context(Constants::C_EDITORMANAGER));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
EditMode::EditMode()
|
||||||
|
{
|
||||||
|
setObjectName(QLatin1String("EditMode"));
|
||||||
|
setDisplayName(Tr::tr("Edit"));
|
||||||
|
setIcon(Utils::Icon::modeIcon(Icons::MODE_EDIT_CLASSIC,
|
||||||
|
Icons::MODE_EDIT_FLAT, Icons::MODE_EDIT_FLAT_ACTIVE));
|
||||||
|
setPriority(Constants::P_MODE_EDIT);
|
||||||
|
setId(Constants::MODE_EDIT);
|
||||||
|
|
||||||
connect(ModeManager::instance(), &ModeManager::currentModeChanged,
|
connect(ModeManager::instance(), &ModeManager::currentModeChanged,
|
||||||
this, &EditMode::grabEditorManager);
|
this, &EditMode::grabEditorManager);
|
||||||
m_splitter->setFocusProxy(editorPlaceHolder);
|
|
||||||
|
|
||||||
IContext::attach(m_splitter, Context(Constants::C_EDITORMANAGER));
|
setWidget(new EditModeWidget);
|
||||||
|
|
||||||
setWidget(m_splitter);
|
|
||||||
setContext(Context(Constants::C_EDIT_MODE, Constants::C_NAVIGATION_PANE));
|
setContext(Context(Constants::C_EDIT_MODE, Constants::C_NAVIGATION_PANE));
|
||||||
}
|
}
|
||||||
|
|
||||||
EditMode::~EditMode()
|
EditMode::~EditMode()
|
||||||
{
|
{
|
||||||
delete m_splitter;
|
delete widget();
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditMode::grabEditorManager(Utils::Id mode)
|
void EditMode::grabEditorManager(Utils::Id mode)
|
||||||
@@ -86,5 +92,4 @@ void EditMode::grabEditorManager(Utils::Id mode)
|
|||||||
EditorManager::currentEditor()->widget()->setFocus();
|
EditorManager::currentEditor()->widget()->setFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Core::Internal
|
||||||
} // namespace Core
|
|
||||||
|
@@ -5,31 +5,16 @@
|
|||||||
|
|
||||||
#include "imode.h"
|
#include "imode.h"
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
namespace Core::Internal {
|
||||||
class QSplitter;
|
|
||||||
class QVBoxLayout;
|
|
||||||
QT_END_NAMESPACE
|
|
||||||
|
|
||||||
namespace Core {
|
class EditMode final : public IMode
|
||||||
|
|
||||||
class EditorManager;
|
|
||||||
|
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
class EditMode : public IMode
|
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
EditMode();
|
EditMode();
|
||||||
~EditMode() override;
|
~EditMode() final;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void grabEditorManager(Utils::Id mode);
|
void grabEditorManager(Utils::Id mode);
|
||||||
|
|
||||||
QSplitter *m_splitter;
|
|
||||||
QVBoxLayout *m_rightSplitWidgetLayout;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Core::Internal
|
||||||
} // namespace Core
|
|
||||||
|
Reference in New Issue
Block a user