TextEditor: add right sidebar
Task-number: QTCREATORBUG-9436 Change-Id: Ic0406758a30d52c22c58433f5f35305b798cb462 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io> Reviewed-by: André Hartmann <aha_1980@gmx.de>
|
Before Width: | Height: | Size: 99 B After Width: | Height: | Size: 99 B |
|
Before Width: | Height: | Size: 104 B After Width: | Height: | Size: 104 B |
BIN
src/libs/utils/images/rightsidebaricon.png
Normal file
|
After Width: | Height: | Size: 99 B |
BIN
src/libs/utils/images/rightsidebaricon@2x.png
Normal file
|
After Width: | Height: | Size: 104 B |
@@ -80,8 +80,10 @@
|
||||
<file>images/replace_b.png</file>
|
||||
<file>images/replace_b@2x.png</file>
|
||||
<file>images/reset.png</file>
|
||||
<file>images/sidebaricon.png</file>
|
||||
<file>images/sidebaricon@2x.png</file>
|
||||
<file>images/leftsidebaricon.png</file>
|
||||
<file>images/leftsidebaricon@2x.png</file>
|
||||
<file>images/rightsidebaricon.png</file>
|
||||
<file>images/rightsidebaricon@2x.png</file>
|
||||
<file>images/splitbutton_horizontal.png</file>
|
||||
<file>images/splitbutton_horizontal@2x.png</file>
|
||||
<file>images/undo.png</file>
|
||||
|
||||
@@ -131,10 +131,14 @@ const Icon CLEAN_TOOLBAR({
|
||||
{QLatin1String(":/utils/images/clean_pane_small.png"), Theme::IconsBaseColor}});
|
||||
const Icon RELOAD({
|
||||
{QLatin1String(":/utils/images/reload_gray.png"), Theme::IconsBaseColor}});
|
||||
const Icon TOGGLE_SIDEBAR({
|
||||
{QLatin1String(":/utils/images/sidebaricon.png"), Theme::PanelTextColorMid}}, Icon::MenuTintedStyle);
|
||||
const Icon TOGGLE_SIDEBAR_TOOLBAR({
|
||||
{QLatin1String(":/utils/images/sidebaricon.png"), Theme::IconsBaseColor}});
|
||||
const Icon TOGGLE_LEFT_SIDEBAR({
|
||||
{QLatin1String(":/utils/images/leftsidebaricon.png"), Theme::PanelTextColorMid}}, Icon::MenuTintedStyle);
|
||||
const Icon TOGGLE_LEFT_SIDEBAR_TOOLBAR({
|
||||
{QLatin1String(":/utils/images/leftsidebaricon.png"), Theme::IconsBaseColor}});
|
||||
const Icon TOGGLE_RIGHT_SIDEBAR({
|
||||
{QLatin1String(":/utils/images/rightsidebaricon.png"), Theme::PanelTextColorMid}}, Icon::MenuTintedStyle);
|
||||
const Icon TOGGLE_RIGHT_SIDEBAR_TOOLBAR({
|
||||
{QLatin1String(":/utils/images/rightsidebaricon.png"), Theme::IconsBaseColor}});
|
||||
const Icon CLOSE_TOOLBAR({
|
||||
{QLatin1String(":/utils/images/close.png"), Theme::IconsBaseColor}});
|
||||
const Icon CLOSE_FOREGROUND({
|
||||
|
||||
@@ -81,8 +81,10 @@ QTCREATOR_UTILS_EXPORT extern const Icon MAGNIFIER;
|
||||
QTCREATOR_UTILS_EXPORT extern const Icon CLEAN;
|
||||
QTCREATOR_UTILS_EXPORT extern const Icon CLEAN_TOOLBAR;
|
||||
QTCREATOR_UTILS_EXPORT extern const Icon RELOAD;
|
||||
QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_SIDEBAR;
|
||||
QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_SIDEBAR_TOOLBAR;
|
||||
QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_LEFT_SIDEBAR;
|
||||
QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_LEFT_SIDEBAR_TOOLBAR;
|
||||
QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_RIGHT_SIDEBAR;
|
||||
QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_RIGHT_SIDEBAR_TOOLBAR;
|
||||
QTCREATOR_UTILS_EXPORT extern const Icon CLOSE_TOOLBAR;
|
||||
QTCREATOR_UTILS_EXPORT extern const Icon CLOSE_FOREGROUND;
|
||||
QTCREATOR_UTILS_EXPORT extern const Icon CLOSE_BACKGROUND;
|
||||
|
||||
@@ -162,7 +162,7 @@ public:
|
||||
BookmarkViewFactory(BookmarkManager *bm);
|
||||
|
||||
private:
|
||||
Core::NavigationView createWidget();
|
||||
Core::NavigationView createWidget() override;
|
||||
|
||||
BookmarkManager *m_manager;
|
||||
};
|
||||
|
||||
@@ -70,33 +70,29 @@ Core::NavigationView NavigationWidgetFactory::createWidget()
|
||||
*/
|
||||
static QString settingsPrefix(int position)
|
||||
{
|
||||
return QString::fromLatin1("ClassView/Treewidget.%1/FlatMode").arg(position);
|
||||
return QString::fromLatin1("ClassView.Treewidget.%1.FlatMode").arg(position);
|
||||
}
|
||||
|
||||
//! Flat mode settings
|
||||
|
||||
void NavigationWidgetFactory::saveSettings(int position, QWidget *widget)
|
||||
void NavigationWidgetFactory::saveSettings(QSettings *settings, int position, QWidget *widget)
|
||||
{
|
||||
NavigationWidget *pw = qobject_cast<NavigationWidget *>(widget);
|
||||
QTC_ASSERT(pw, return);
|
||||
|
||||
// .beginGroup is not used - to prevent simultaneous access
|
||||
QString group = settingsPrefix(position);
|
||||
|
||||
// Save settings
|
||||
Core::ICore::settings()->setValue(group, pw->flatMode());
|
||||
QString settingsGroup = settingsPrefix(position);
|
||||
settings->setValue(settingsGroup, pw->flatMode());
|
||||
}
|
||||
|
||||
void NavigationWidgetFactory::restoreSettings(int position, QWidget *widget)
|
||||
void NavigationWidgetFactory::restoreSettings(QSettings *settings, int position, QWidget *widget)
|
||||
{
|
||||
NavigationWidget *pw = qobject_cast<NavigationWidget *>(widget);
|
||||
QTC_ASSERT(pw, return);
|
||||
|
||||
// .beginGroup is not used - to prevent simultaneous access
|
||||
QString group = settingsPrefix(position);
|
||||
|
||||
// Load settings
|
||||
pw->setFlatMode(Core::ICore::settings()->value(group, false).toBool());
|
||||
QString settingsGroup = settingsPrefix(position);
|
||||
pw->setFlatMode(settings->value(settingsGroup, false).toBool());
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -38,13 +38,13 @@ public:
|
||||
NavigationWidgetFactory();
|
||||
|
||||
//! \implements Core::INavigationWidgetFactory::createWidget
|
||||
Core::NavigationView createWidget();
|
||||
Core::NavigationView createWidget() override;
|
||||
|
||||
//! \implements Core::INavigationWidgetFactory::saveSettings
|
||||
void saveSettings(int position, QWidget *widget);
|
||||
void saveSettings(QSettings *settings, int position, QWidget *widget) override;
|
||||
|
||||
//! \implements Core::INavigationWidgetFactory::restoreSettings
|
||||
void restoreSettings(int position, QWidget *widget);
|
||||
void restoreSettings(QSettings *settings, int position, QWidget *widget) override;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -89,13 +89,17 @@ const char PRINT[] = "QtCreator.Print";
|
||||
const char EXIT[] = "QtCreator.Exit";
|
||||
|
||||
const char OPTIONS[] = "QtCreator.Options";
|
||||
const char TOGGLE_SIDEBAR[] = "QtCreator.ToggleSidebar";
|
||||
const char TOGGLE_LEFT_SIDEBAR[] = "QtCreator.ToggleLeftSidebar";
|
||||
const char TOGGLE_RIGHT_SIDEBAR[] = "QtCreator.ToggleRightSidebar";
|
||||
const char TOGGLE_MODE_SELECTOR[] = "QtCreator.ToggleModeSelector";
|
||||
const char TOGGLE_FULLSCREEN[] = "QtCreator.ToggleFullScreen";
|
||||
const char THEMEOPTIONS[] = "QtCreator.ThemeOptions";
|
||||
|
||||
const char TR_SHOW_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Show Sidebar");
|
||||
const char TR_HIDE_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Hide Sidebar");
|
||||
const char TR_SHOW_LEFT_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Show Left Sidebar");
|
||||
const char TR_HIDE_LEFT_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Hide Left Sidebar");
|
||||
|
||||
const char TR_SHOW_RIGHT_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Show Right Sidebar");
|
||||
const char TR_HIDE_RIGHT_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Hide Right Sidebar");
|
||||
|
||||
const char MINIMIZE_WINDOW[] = "QtCreator.MinimizeWindow";
|
||||
const char ZOOM_WINDOW[] = "QtCreator.ZoomWindow";
|
||||
|
||||
@@ -76,10 +76,12 @@ EditMode::EditMode() :
|
||||
splitter->setStretchFactor(0, 3);
|
||||
splitter->setStretchFactor(1, 0);
|
||||
|
||||
m_splitter->insertWidget(0, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT));
|
||||
m_splitter->insertWidget(0, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT, Side::Left));
|
||||
m_splitter->insertWidget(1, splitter);
|
||||
m_splitter->insertWidget(2, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT, Side::Right));
|
||||
m_splitter->setStretchFactor(0, 0);
|
||||
m_splitter->setStretchFactor(1, 1);
|
||||
m_splitter->setStretchFactor(2, 0);
|
||||
|
||||
connect(ModeManager::instance(), &ModeManager::currentModeChanged,
|
||||
this, &EditMode::grabEditorManager);
|
||||
|
||||
@@ -147,7 +147,7 @@ QKeySequence INavigationWidgetFactory::activationSequence() const
|
||||
|
||||
\sa INavigationWidgetFactory::restoreSettings()
|
||||
*/
|
||||
void INavigationWidgetFactory::saveSettings(int /* position */, QWidget * /* widget */)
|
||||
void INavigationWidgetFactory::saveSettings(QSettings * /* settings */, int /* position */, QWidget * /* widget */)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -157,6 +157,6 @@ void INavigationWidgetFactory::saveSettings(int /* position */, QWidget * /* wid
|
||||
|
||||
\sa INavigationWidgetFactory::saveSettings()
|
||||
*/
|
||||
void INavigationWidgetFactory::restoreSettings(int /* position */, QWidget * /* widget */)
|
||||
void INavigationWidgetFactory::restoreSettings(QSettings * /* settings */, int /* position */, QWidget * /* widget */)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
#include <QKeySequence>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QSettings;
|
||||
class QToolButton;
|
||||
class QWidget;
|
||||
QT_END_NAMESPACE
|
||||
@@ -69,8 +70,8 @@ public:
|
||||
// Similar to how IView
|
||||
virtual NavigationView createWidget() = 0;
|
||||
|
||||
virtual void saveSettings(int position, QWidget *widget);
|
||||
virtual void restoreSettings(int position, QWidget *widget);
|
||||
virtual void saveSettings(QSettings *settings, int position, QWidget *widget);
|
||||
virtual void restoreSettings(QSettings *settings, int position, QWidget *widget);
|
||||
|
||||
private:
|
||||
QString m_displayName;
|
||||
|
||||
@@ -122,7 +122,8 @@ MainWindow::MainWindow() :
|
||||
m_toolSettings(new ToolSettings),
|
||||
m_mimeTypeSettings(new MimeTypeSettings),
|
||||
m_systemEditor(new SystemEditor),
|
||||
m_toggleSideBarButton(new QToolButton)
|
||||
m_toggleLeftSideBarButton(new QToolButton),
|
||||
m_toggleRightSideBarButton(new QToolButton)
|
||||
{
|
||||
(void) new DocumentManager(this);
|
||||
OutputPaneManager::create();
|
||||
@@ -171,7 +172,8 @@ MainWindow::MainWindow() :
|
||||
registerDefaultContainers();
|
||||
registerDefaultActions();
|
||||
|
||||
m_navigationWidget = new NavigationWidget(m_toggleSideBarAction);
|
||||
m_leftNavigationWidget = new NavigationWidget(m_toggleLeftSideBarAction, Side::Left);
|
||||
m_rightNavigationWidget = new NavigationWidget(m_toggleRightSideBarAction, Side::Right);
|
||||
m_rightPaneWidget = new RightPaneWidget();
|
||||
|
||||
m_statusBarManager = new StatusBarManager(this);
|
||||
@@ -184,8 +186,11 @@ MainWindow::MainWindow() :
|
||||
m_progressManager->progressView()->setReferenceWidget(m_modeStack->statusBar());
|
||||
|
||||
connect(qApp, &QApplication::focusChanged, this, &MainWindow::updateFocusWidget);
|
||||
// Add a small Toolbutton for toggling the navigation widget
|
||||
statusBar()->insertPermanentWidget(0, m_toggleSideBarButton);
|
||||
|
||||
// Add small Toolbuttons for toggling the navigation widgets
|
||||
statusBar()->insertPermanentWidget(0, m_toggleLeftSideBarButton);
|
||||
int childsCount = statusBar()->findChildren<QWidget *>(QString(), Qt::FindDirectChildrenOnly).count();
|
||||
statusBar()->insertPermanentWidget(childsCount - 1, m_toggleRightSideBarButton); // before QSizeGrip
|
||||
|
||||
// setUnifiedTitleAndToolBarOnMac(true);
|
||||
//if (HostOsInfo::isAnyUnixHost())
|
||||
@@ -200,22 +205,22 @@ MainWindow::MainWindow() :
|
||||
this, &MainWindow::openDroppedFiles);
|
||||
}
|
||||
|
||||
void MainWindow::setSidebarVisible(bool visible)
|
||||
NavigationWidget *MainWindow::navigationWidget(Side side) const
|
||||
{
|
||||
if (NavigationWidgetPlaceHolder::current()) {
|
||||
if (m_navigationWidget->isSuppressed() && visible) {
|
||||
m_navigationWidget->setShown(true);
|
||||
m_navigationWidget->setSuppressed(false);
|
||||
} else {
|
||||
m_navigationWidget->setShown(visible);
|
||||
}
|
||||
}
|
||||
return side == Side::Left ? m_leftNavigationWidget : m_rightNavigationWidget;
|
||||
}
|
||||
|
||||
void MainWindow::setSuppressNavigationWidget(bool suppress)
|
||||
void MainWindow::setSidebarVisible(bool visible, Side side)
|
||||
{
|
||||
if (NavigationWidgetPlaceHolder::current())
|
||||
m_navigationWidget->setSuppressed(suppress);
|
||||
if (NavigationWidgetPlaceHolder::current(side)) {
|
||||
NavigationWidget *navWidget = navigationWidget(side);
|
||||
if (navWidget->isSuppressed() && visible) {
|
||||
navWidget->setShown(true);
|
||||
navWidget->setSuppressed(false);
|
||||
} else {
|
||||
navWidget->setShown(visible);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::setOverrideColor(const QColor &color)
|
||||
@@ -281,8 +286,10 @@ MainWindow::~MainWindow()
|
||||
PluginManager::removeObject(m_outputView);
|
||||
delete m_outputView;
|
||||
|
||||
delete m_navigationWidget;
|
||||
m_navigationWidget = nullptr;
|
||||
delete m_leftNavigationWidget;
|
||||
delete m_rightNavigationWidget;
|
||||
m_leftNavigationWidget = nullptr;
|
||||
m_rightNavigationWidget = nullptr;
|
||||
|
||||
delete m_editorManager;
|
||||
m_editorManager = nullptr;
|
||||
@@ -341,7 +348,8 @@ void MainWindow::extensionsInitialized()
|
||||
m_statusBarManager->extensionsInitalized();
|
||||
OutputPaneManager::instance()->init();
|
||||
m_vcsManager->extensionsInitialized();
|
||||
m_navigationWidget->setFactories(PluginManager::getObjects<INavigationWidgetFactory>());
|
||||
m_leftNavigationWidget->setFactories(PluginManager::getObjects<INavigationWidgetFactory>());
|
||||
m_rightNavigationWidget->setFactories(PluginManager::getObjects<INavigationWidgetFactory>());
|
||||
|
||||
readSettings();
|
||||
updateContext();
|
||||
@@ -373,7 +381,8 @@ void MainWindow::closeEvent(QCloseEvent *event)
|
||||
|
||||
saveWindowSettings();
|
||||
|
||||
m_navigationWidget->closeSubWidgets();
|
||||
m_leftNavigationWidget->closeSubWidgets();
|
||||
m_rightNavigationWidget->closeSubWidgets();
|
||||
|
||||
event->accept();
|
||||
}
|
||||
@@ -678,21 +687,37 @@ void MainWindow::registerDefaultActions()
|
||||
mwindow->addSeparator(Constants::G_WINDOW_SIZE);
|
||||
}
|
||||
|
||||
// Show Sidebar Action
|
||||
m_toggleSideBarAction = new QAction(Utils::Icons::TOGGLE_SIDEBAR.icon(),
|
||||
QCoreApplication::translate("Core", Constants::TR_SHOW_SIDEBAR),
|
||||
this);
|
||||
m_toggleSideBarAction->setCheckable(true);
|
||||
cmd = ActionManager::registerAction(m_toggleSideBarAction, Constants::TOGGLE_SIDEBAR);
|
||||
// Show Left Sidebar Action
|
||||
m_toggleLeftSideBarAction = new QAction(Utils::Icons::TOGGLE_LEFT_SIDEBAR.icon(),
|
||||
QCoreApplication::translate("Core", Constants::TR_SHOW_LEFT_SIDEBAR),
|
||||
this);
|
||||
m_toggleLeftSideBarAction->setCheckable(true);
|
||||
cmd = ActionManager::registerAction(m_toggleLeftSideBarAction, Constants::TOGGLE_LEFT_SIDEBAR);
|
||||
cmd->setAttribute(Command::CA_UpdateText);
|
||||
cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Ctrl+0") : tr("Alt+0")));
|
||||
connect(m_toggleSideBarAction, &QAction::triggered, this, &MainWindow::setSidebarVisible);
|
||||
ProxyAction *toggleSideBarProxyAction =
|
||||
ProxyAction::proxyActionWithIcon(cmd->action(),
|
||||
Utils::Icons::TOGGLE_SIDEBAR_TOOLBAR.icon());
|
||||
m_toggleSideBarButton->setDefaultAction(toggleSideBarProxyAction);
|
||||
connect(m_toggleLeftSideBarAction, &QAction::triggered,
|
||||
this, [this](bool visible) { setSidebarVisible(visible, Side::Left); });
|
||||
ProxyAction *toggleLeftSideBarProxyAction =
|
||||
ProxyAction::proxyActionWithIcon(cmd->action(), Utils::Icons::TOGGLE_LEFT_SIDEBAR_TOOLBAR.icon());
|
||||
m_toggleLeftSideBarButton->setDefaultAction(toggleLeftSideBarProxyAction);
|
||||
mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS);
|
||||
m_toggleSideBarAction->setEnabled(false);
|
||||
m_toggleLeftSideBarAction->setEnabled(false);
|
||||
|
||||
// Show Right Sidebar Action
|
||||
m_toggleRightSideBarAction = new QAction(Utils::Icons::TOGGLE_RIGHT_SIDEBAR.icon(),
|
||||
QCoreApplication::translate("Core", Constants::TR_SHOW_RIGHT_SIDEBAR),
|
||||
this);
|
||||
m_toggleRightSideBarAction->setCheckable(true);
|
||||
cmd = ActionManager::registerAction(m_toggleRightSideBarAction, Constants::TOGGLE_RIGHT_SIDEBAR);
|
||||
cmd->setAttribute(Command::CA_UpdateText);
|
||||
cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Ctrl+Meta+0") : tr("Ctrl+Shift+0")));
|
||||
connect(m_toggleRightSideBarAction, &QAction::triggered,
|
||||
this, [this](bool visible) { setSidebarVisible(visible, Side::Right); });
|
||||
ProxyAction *toggleRightSideBarProxyAction =
|
||||
ProxyAction::proxyActionWithIcon(cmd->action(), Utils::Icons::TOGGLE_RIGHT_SIDEBAR_TOOLBAR.icon());
|
||||
m_toggleRightSideBarButton->setDefaultAction(toggleRightSideBarProxyAction);
|
||||
mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS);
|
||||
m_toggleRightSideBarButton->setEnabled(false);
|
||||
|
||||
// Show Mode Selector Action
|
||||
m_toggleModeSelectorAction = new QAction(tr("Show Mode Selector"), this);
|
||||
@@ -959,7 +984,8 @@ void MainWindow::readSettings()
|
||||
settings->endGroup();
|
||||
|
||||
EditorManagerPrivate::readSettings();
|
||||
m_navigationWidget->restoreSettings(settings);
|
||||
m_leftNavigationWidget->restoreSettings(settings);
|
||||
m_rightNavigationWidget->restoreSettings(settings);
|
||||
m_rightPaneWidget->readSettings(settings);
|
||||
}
|
||||
|
||||
@@ -976,7 +1002,8 @@ void MainWindow::saveSettings()
|
||||
DocumentManager::saveSettings();
|
||||
ActionManager::saveSettings();
|
||||
EditorManagerPrivate::saveSettings();
|
||||
m_navigationWidget->saveSettings(settings);
|
||||
m_leftNavigationWidget->saveSettings(settings);
|
||||
m_rightNavigationWidget->saveSettings(settings);
|
||||
}
|
||||
|
||||
void MainWindow::saveWindowSettings()
|
||||
|
||||
@@ -56,6 +56,7 @@ class MessageManager;
|
||||
class ModeManager;
|
||||
class ProgressManager;
|
||||
class NavigationWidget;
|
||||
enum class Side;
|
||||
class RightPaneWidget;
|
||||
class SettingsDatabase;
|
||||
class VcsManager;
|
||||
@@ -102,8 +103,6 @@ public:
|
||||
void updateAdditionalContexts(const Context &remove, const Context &add,
|
||||
ICore::ContextPriority priority);
|
||||
|
||||
void setSuppressNavigationWidget(bool suppress);
|
||||
|
||||
void setOverrideColor(const QColor &color);
|
||||
|
||||
QStringList additionalAboutInformation() const;
|
||||
@@ -135,7 +134,8 @@ private:
|
||||
void aboutQtCreator();
|
||||
void aboutPlugins();
|
||||
void updateFocusWidget(QWidget *old, QWidget *now);
|
||||
void setSidebarVisible(bool visible);
|
||||
NavigationWidget *navigationWidget(Side side) const;
|
||||
void setSidebarVisible(bool visible, Side side);
|
||||
void destroyVersionDialog();
|
||||
void openDroppedFiles(const QList<Utils::DropSupport::FileSpec> &files);
|
||||
void restoreWindowState();
|
||||
@@ -166,7 +166,8 @@ private:
|
||||
ModeManager *m_modeManager = nullptr;
|
||||
HelpManager *m_helpManager = nullptr;
|
||||
FancyTabWidget *m_modeStack = nullptr;
|
||||
NavigationWidget *m_navigationWidget = nullptr;
|
||||
NavigationWidget *m_leftNavigationWidget = nullptr;
|
||||
NavigationWidget *m_rightNavigationWidget = nullptr;
|
||||
RightPaneWidget *m_rightPaneWidget = nullptr;
|
||||
StatusBarWidget *m_outputView = nullptr;
|
||||
VersionDialog *m_versionDialog = nullptr;
|
||||
@@ -190,11 +191,13 @@ private:
|
||||
QAction *m_saveAllAction = nullptr;
|
||||
QAction *m_exitAction = nullptr;
|
||||
QAction *m_optionsAction = nullptr;
|
||||
QAction *m_toggleSideBarAction = nullptr;
|
||||
QAction *m_toggleLeftSideBarAction = nullptr;
|
||||
QAction *m_toggleRightSideBarAction = nullptr;
|
||||
QAction *m_toggleModeSelectorAction = nullptr;
|
||||
QAction *m_themeAction = nullptr;
|
||||
|
||||
QToolButton *m_toggleSideBarButton = nullptr;
|
||||
QToolButton *m_toggleLeftSideBarButton = nullptr;
|
||||
QToolButton *m_toggleRightSideBarButton = nullptr;
|
||||
QColor m_overrideColor;
|
||||
QList<std::function<bool()>> m_preCloseListeners;
|
||||
};
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "actionmanager/command.h"
|
||||
#include "id.h"
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
#include <utils/styledbar.h>
|
||||
#include <utils/utilsicons.h>
|
||||
|
||||
@@ -137,6 +138,7 @@ void NavigationSubWidget::comboBoxIndexChanged(int factoryIndex)
|
||||
}
|
||||
|
||||
restoreSettings();
|
||||
emit factoryIndexChanged(factoryIndex);
|
||||
}
|
||||
|
||||
void NavigationSubWidget::populateSplitMenu()
|
||||
@@ -167,14 +169,22 @@ void NavigationSubWidget::saveSettings()
|
||||
{
|
||||
if (!m_navigationWidget || !factory())
|
||||
return;
|
||||
factory()->saveSettings(position(), m_navigationWidget);
|
||||
|
||||
QSettings *settings = Core::ICore::settings();
|
||||
settings->beginGroup(m_parentWidget->settingsGroup());
|
||||
factory()->saveSettings(settings, position(), m_navigationWidget);
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void NavigationSubWidget::restoreSettings()
|
||||
{
|
||||
if (!m_navigationWidget || !factory())
|
||||
return;
|
||||
factory()->restoreSettings(position(), m_navigationWidget);
|
||||
|
||||
QSettings *settings = Core::ICore::settings();
|
||||
settings->beginGroup(m_parentWidget->settingsGroup());
|
||||
factory()->restoreSettings(settings, position(), m_navigationWidget);
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
Core::Command *NavigationSubWidget::command(const QString &title) const
|
||||
|
||||
@@ -47,7 +47,7 @@ class NavigationSubWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
NavigationSubWidget(NavigationWidget *parentWidget, int position, int index);
|
||||
NavigationSubWidget(NavigationWidget *parentWidget, int position, int factoryIndex);
|
||||
virtual ~NavigationSubWidget();
|
||||
|
||||
INavigationWidgetFactory *factory();
|
||||
@@ -71,6 +71,7 @@ public:
|
||||
signals:
|
||||
void splitMe(int factoryIndex);
|
||||
void closeMe();
|
||||
void factoryIndexChanged(int factoryIndex);
|
||||
|
||||
private:
|
||||
void comboBoxIndexChanged(int);
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "id.h"
|
||||
#include "imode.h"
|
||||
|
||||
#include <utils/qtcassert.h>
|
||||
#include <utils/utilsicons.h>
|
||||
|
||||
#include <QCoreApplication>
|
||||
@@ -49,15 +50,24 @@ Q_DECLARE_METATYPE(Core::INavigationWidgetFactory *)
|
||||
|
||||
namespace Core {
|
||||
|
||||
NavigationWidgetPlaceHolder *NavigationWidgetPlaceHolder::m_current = 0;
|
||||
NavigationWidgetPlaceHolder *NavigationWidgetPlaceHolder::s_currentLeft = nullptr;
|
||||
NavigationWidgetPlaceHolder *NavigationWidgetPlaceHolder::s_currentRight = nullptr;
|
||||
|
||||
NavigationWidgetPlaceHolder* NavigationWidgetPlaceHolder::current()
|
||||
NavigationWidgetPlaceHolder *NavigationWidgetPlaceHolder::current(Side side)
|
||||
{
|
||||
return m_current;
|
||||
return side == Side::Left ? s_currentLeft : s_currentRight;
|
||||
}
|
||||
|
||||
NavigationWidgetPlaceHolder::NavigationWidgetPlaceHolder(Id mode, QWidget *parent)
|
||||
:QWidget(parent), m_mode(mode)
|
||||
void NavigationWidgetPlaceHolder::setCurrent(Side side, NavigationWidgetPlaceHolder *navWidget)
|
||||
{
|
||||
if (side == Side::Left)
|
||||
s_currentLeft = navWidget;
|
||||
else
|
||||
s_currentRight = navWidget;
|
||||
}
|
||||
|
||||
NavigationWidgetPlaceHolder::NavigationWidgetPlaceHolder(Id mode, Side side, QWidget *parent)
|
||||
:QWidget(parent), m_mode(mode), m_side(side)
|
||||
{
|
||||
setLayout(new QVBoxLayout);
|
||||
layout()->setMargin(0);
|
||||
@@ -67,9 +77,9 @@ NavigationWidgetPlaceHolder::NavigationWidgetPlaceHolder(Id mode, QWidget *paren
|
||||
|
||||
NavigationWidgetPlaceHolder::~NavigationWidgetPlaceHolder()
|
||||
{
|
||||
if (m_current == this) {
|
||||
if (NavigationWidget *nw = NavigationWidget::instance()) {
|
||||
nw->setParent(0);
|
||||
if (NavigationWidgetPlaceHolder::current(m_side) == this) {
|
||||
if (NavigationWidget *nw = NavigationWidget::instance(m_side)) {
|
||||
nw->setParent(nullptr);
|
||||
nw->hide();
|
||||
}
|
||||
}
|
||||
@@ -84,12 +94,20 @@ void NavigationWidgetPlaceHolder::applyStoredSize(int width)
|
||||
QList<int> sizes = splitter->sizes();
|
||||
int index = splitter->indexOf(this);
|
||||
int diff = width - sizes.at(index);
|
||||
int adjust = sizes.count() > 1 ? (diff / (sizes.count() - 1)) : 0;
|
||||
|
||||
int count = sizes.count();
|
||||
for (int i = 0; i < sizes.count(); ++i) {
|
||||
if (i != index)
|
||||
if (qobject_cast<NavigationWidgetPlaceHolder *>(splitter->widget(i)))
|
||||
--count;
|
||||
}
|
||||
|
||||
int adjust = count > 1 ? (diff / (count - 1)) : 0;
|
||||
for (int i = 0; i < sizes.count(); ++i) {
|
||||
if (!qobject_cast<NavigationWidgetPlaceHolder *>(splitter->widget(i)))
|
||||
sizes[i] += adjust;
|
||||
}
|
||||
sizes[index]= width;
|
||||
|
||||
sizes[index] = width;
|
||||
splitter->setSizes(sizes);
|
||||
} else {
|
||||
QSize s = size();
|
||||
@@ -107,16 +125,18 @@ void NavigationWidgetPlaceHolder::applyStoredSize(int width)
|
||||
// And that the parent of the NavigationWidget gets the correct parent
|
||||
void NavigationWidgetPlaceHolder::currentModeAboutToChange(Id mode)
|
||||
{
|
||||
NavigationWidget *navigationWidget = NavigationWidget::instance();
|
||||
NavigationWidget *navigationWidget = NavigationWidget::instance(m_side);
|
||||
NavigationWidgetPlaceHolder *current = NavigationWidgetPlaceHolder::current(m_side);
|
||||
|
||||
if (m_current == this) {
|
||||
m_current = 0;
|
||||
navigationWidget->setParent(0);
|
||||
if (current == this) {
|
||||
setCurrent(m_side, nullptr);
|
||||
navigationWidget->setParent(nullptr);
|
||||
navigationWidget->hide();
|
||||
navigationWidget->placeHolderChanged(m_current);
|
||||
navigationWidget->placeHolderChanged(nullptr);
|
||||
}
|
||||
|
||||
if (m_mode == mode) {
|
||||
m_current = this;
|
||||
setCurrent(m_side, this);
|
||||
|
||||
int width = navigationWidget->storedWidth();
|
||||
|
||||
@@ -125,13 +145,19 @@ void NavigationWidgetPlaceHolder::currentModeAboutToChange(Id mode)
|
||||
|
||||
applyStoredSize(width);
|
||||
setVisible(navigationWidget->isShown());
|
||||
navigationWidget->placeHolderChanged(m_current);
|
||||
navigationWidget->placeHolderChanged(this);
|
||||
}
|
||||
}
|
||||
|
||||
struct ActivationInfo {
|
||||
Side side;
|
||||
int position;
|
||||
};
|
||||
using ActivationsMap = QHash<Id, ActivationInfo>;
|
||||
|
||||
struct NavigationWidgetPrivate
|
||||
{
|
||||
explicit NavigationWidgetPrivate(QAction *toggleSideBarAction);
|
||||
explicit NavigationWidgetPrivate(QAction *toggleSideBarAction, Side side);
|
||||
~NavigationWidgetPrivate() { delete m_factoryModel; }
|
||||
|
||||
QList<Internal::NavigationSubWidget *> m_subWidgets;
|
||||
@@ -142,55 +168,97 @@ struct NavigationWidgetPrivate
|
||||
bool m_shown;
|
||||
bool m_suppressed;
|
||||
int m_width;
|
||||
static NavigationWidget* m_instance;
|
||||
QAction *m_toggleSideBarAction; // does not take ownership
|
||||
Side m_side;
|
||||
|
||||
static NavigationWidget *s_instanceLeft;
|
||||
static NavigationWidget *s_instanceRight;
|
||||
|
||||
static ActivationsMap s_activationsMap;
|
||||
|
||||
static void updateActivationsMap(Id activatedId, const ActivationInfo &activationInfo);
|
||||
static void removeFromActivationsMap(const ActivationInfo &activationInfo);
|
||||
};
|
||||
|
||||
NavigationWidgetPrivate::NavigationWidgetPrivate(QAction *toggleSideBarAction) :
|
||||
NavigationWidgetPrivate::NavigationWidgetPrivate(QAction *toggleSideBarAction, Side side) :
|
||||
m_factoryModel(new QStandardItemModel),
|
||||
m_shown(true),
|
||||
m_suppressed(false),
|
||||
m_width(0),
|
||||
m_toggleSideBarAction(toggleSideBarAction)
|
||||
m_toggleSideBarAction(toggleSideBarAction),
|
||||
m_side(side)
|
||||
{
|
||||
}
|
||||
|
||||
NavigationWidget *NavigationWidgetPrivate::m_instance = 0;
|
||||
void NavigationWidgetPrivate::updateActivationsMap(Id activatedId, const ActivationInfo &activationInfo)
|
||||
{
|
||||
s_activationsMap.insert(activatedId, activationInfo);
|
||||
}
|
||||
|
||||
NavigationWidget::NavigationWidget(QAction *toggleSideBarAction) :
|
||||
d(new NavigationWidgetPrivate(toggleSideBarAction))
|
||||
NavigationWidget *NavigationWidgetPrivate::s_instanceLeft = nullptr;
|
||||
NavigationWidget *NavigationWidgetPrivate::s_instanceRight = nullptr;
|
||||
ActivationsMap NavigationWidgetPrivate::s_activationsMap;
|
||||
|
||||
NavigationWidget::NavigationWidget(QAction *toggleSideBarAction, Side side) :
|
||||
d(new NavigationWidgetPrivate(toggleSideBarAction, side))
|
||||
{
|
||||
d->m_factoryModel->setSortRole(FactoryPriorityRole);
|
||||
setOrientation(Qt::Vertical);
|
||||
d->m_instance = this;
|
||||
|
||||
if (side == Side::Left)
|
||||
d->s_instanceLeft = this;
|
||||
else
|
||||
d->s_instanceRight = this;
|
||||
}
|
||||
|
||||
NavigationWidget::~NavigationWidget()
|
||||
{
|
||||
NavigationWidgetPrivate::m_instance = 0;
|
||||
if (d->m_side == Side::Left)
|
||||
NavigationWidgetPrivate::s_instanceLeft = nullptr;
|
||||
else
|
||||
NavigationWidgetPrivate::s_instanceRight = nullptr;
|
||||
|
||||
delete d;
|
||||
}
|
||||
|
||||
NavigationWidget *NavigationWidget::instance()
|
||||
NavigationWidget *NavigationWidget::instance(Side side)
|
||||
{
|
||||
return NavigationWidgetPrivate::m_instance;
|
||||
return side == Side::Left ? NavigationWidgetPrivate::s_instanceLeft
|
||||
: NavigationWidgetPrivate::s_instanceRight;
|
||||
}
|
||||
|
||||
QWidget *NavigationWidget::activateSubWidget(Id factoryId, Side fallbackSide)
|
||||
{
|
||||
NavigationWidget *navigationWidget = NavigationWidget::instance(fallbackSide);
|
||||
int preferredPosition = -1;
|
||||
|
||||
if (NavigationWidgetPrivate::s_activationsMap.contains(factoryId)) {
|
||||
const ActivationInfo info = NavigationWidgetPrivate::s_activationsMap.value(factoryId);
|
||||
navigationWidget = NavigationWidget::instance(info.side);
|
||||
preferredPosition = info.position;
|
||||
}
|
||||
|
||||
navigationWidget->activateSubWidget(factoryId, preferredPosition);
|
||||
return navigationWidget;
|
||||
}
|
||||
|
||||
void NavigationWidget::setFactories(const QList<INavigationWidgetFactory *> &factories)
|
||||
{
|
||||
Context navicontext(Constants::C_NAVIGATION_PANE);
|
||||
|
||||
foreach (INavigationWidgetFactory *factory, factories) {
|
||||
const Id id = factory->id();
|
||||
QAction *action = new QAction(tr("Activate %1 View").arg(factory->displayName()), this);
|
||||
d->m_actionMap.insert(action, id);
|
||||
connect(action, &QAction::triggered,
|
||||
this, [this, action]() { activateSubWidget(d->m_actionMap[action]); });
|
||||
const Id actionId = id.withPrefix("QtCreator.Sidebar.");
|
||||
|
||||
Command *cmd = ActionManager::registerAction(action,
|
||||
id.withPrefix("QtCreator.Sidebar."), navicontext);
|
||||
cmd->setDefaultKeySequence(factory->activationSequence());
|
||||
d->m_commandMap.insert(id, cmd);
|
||||
if (!ActionManager::command(actionId)) {
|
||||
QAction *action = new QAction(tr("Activate %1 View").arg(factory->displayName()), this);
|
||||
d->m_actionMap.insert(action, id);
|
||||
connect(action, &QAction::triggered, this, [this, action]() {
|
||||
NavigationWidget::activateSubWidget(d->m_actionMap[action], Side::Left);
|
||||
});
|
||||
Command *cmd = ActionManager::registerAction(action, actionId, navicontext);
|
||||
cmd->setDefaultKeySequence(factory->activationSequence());
|
||||
d->m_commandMap.insert(id, cmd);
|
||||
}
|
||||
|
||||
QStandardItem *newRow = new QStandardItem(factory->displayName());
|
||||
newRow->setData(qVariantFromValue(factory), FactoryObjectRole);
|
||||
@@ -202,6 +270,13 @@ void NavigationWidget::setFactories(const QList<INavigationWidgetFactory *> &fac
|
||||
updateToggleText();
|
||||
}
|
||||
|
||||
QString NavigationWidget::settingsGroup() const
|
||||
{
|
||||
const QString side(d->m_side == Side::Left ? QStringLiteral("Left")
|
||||
: QStringLiteral("Right"));
|
||||
return QStringLiteral("Navigation%1").arg(side);
|
||||
}
|
||||
|
||||
int NavigationWidget::storedWidth()
|
||||
{
|
||||
return d->m_width;
|
||||
@@ -216,12 +291,13 @@ void NavigationWidget::updateToggleText()
|
||||
{
|
||||
bool haveData = d->m_factoryModel->rowCount();
|
||||
d->m_toggleSideBarAction->setVisible(haveData);
|
||||
d->m_toggleSideBarAction->setEnabled(haveData && NavigationWidgetPlaceHolder::m_current);
|
||||
d->m_toggleSideBarAction->setEnabled(haveData && NavigationWidgetPlaceHolder::current(d->m_side));
|
||||
|
||||
if (isShown())
|
||||
d->m_toggleSideBarAction->setToolTip(QCoreApplication::translate("Core", Constants::TR_HIDE_SIDEBAR));
|
||||
else
|
||||
d->m_toggleSideBarAction->setToolTip(QCoreApplication::translate("Core", Constants::TR_SHOW_SIDEBAR));
|
||||
const char *trToolTip = d->m_side == Side::Left
|
||||
? (isShown() ? Constants::TR_HIDE_LEFT_SIDEBAR : Constants::TR_SHOW_LEFT_SIDEBAR)
|
||||
: (isShown() ? Constants::TR_HIDE_RIGHT_SIDEBAR : Constants::TR_SHOW_RIGHT_SIDEBAR);
|
||||
|
||||
d->m_toggleSideBarAction->setToolTip(QCoreApplication::translate("Core", trToolTip));
|
||||
}
|
||||
|
||||
void NavigationWidget::placeHolderChanged(NavigationWidgetPlaceHolder *holder)
|
||||
@@ -237,28 +313,33 @@ void NavigationWidget::resizeEvent(QResizeEvent *re)
|
||||
MiniSplitter::resizeEvent(re);
|
||||
}
|
||||
|
||||
Internal::NavigationSubWidget *NavigationWidget::insertSubItem(int position,int index)
|
||||
Internal::NavigationSubWidget *NavigationWidget::insertSubItem(int position, int factoryIndex)
|
||||
{
|
||||
for (int pos = position + 1; pos < d->m_subWidgets.size(); ++pos) {
|
||||
d->m_subWidgets.at(pos)->setPosition(pos + 1);
|
||||
Internal::NavigationSubWidget *nsw = d->m_subWidgets.at(pos);
|
||||
nsw->setPosition(pos + 1);
|
||||
NavigationWidgetPrivate::updateActivationsMap(nsw->factory()->id(), {d->m_side, pos + 1});
|
||||
}
|
||||
|
||||
if (!d->m_subWidgets.isEmpty()) // Make all icons the bottom icon
|
||||
d->m_subWidgets.at(0)->setCloseIcon(Utils::Icons::CLOSE_SPLIT_BOTTOM.icon());
|
||||
|
||||
Internal::NavigationSubWidget *nsw = new Internal::NavigationSubWidget(this, position, index);
|
||||
connect(nsw, &Internal::NavigationSubWidget::splitMe,
|
||||
this, &NavigationWidget::splitSubWidget);
|
||||
Internal::NavigationSubWidget *nsw = new Internal::NavigationSubWidget(this, position, factoryIndex);
|
||||
connect(nsw, &Internal::NavigationSubWidget::splitMe, this, &NavigationWidget::splitSubWidget);
|
||||
connect(nsw, &Internal::NavigationSubWidget::closeMe, this, &NavigationWidget::closeSubWidget);
|
||||
connect(nsw, &Internal::NavigationSubWidget::factoryIndexChanged,
|
||||
this, &NavigationWidget::onSubWidgetFactoryIndexChanged);
|
||||
insertWidget(position, nsw);
|
||||
|
||||
d->m_subWidgets.insert(position, nsw);
|
||||
d->m_subWidgets.at(0)->setCloseIcon(d->m_subWidgets.size() == 1
|
||||
? Utils::Icons::CLOSE_SPLIT_LEFT.icon()
|
||||
: Utils::Icons::CLOSE_SPLIT_TOP.icon());
|
||||
NavigationWidgetPrivate::updateActivationsMap(nsw->factory()->id(), {d->m_side, position});
|
||||
return nsw;
|
||||
}
|
||||
|
||||
QWidget *NavigationWidget::activateSubWidget(Id factoryId)
|
||||
QWidget *NavigationWidget::activateSubWidget(Id factoryId, int preferredPosition)
|
||||
{
|
||||
setShown(true);
|
||||
foreach (Internal::NavigationSubWidget *subWidget, d->m_subWidgets) {
|
||||
@@ -271,10 +352,13 @@ QWidget *NavigationWidget::activateSubWidget(Id factoryId)
|
||||
|
||||
int index = factoryIndex(factoryId);
|
||||
if (index >= 0) {
|
||||
d->m_subWidgets.first()->setFactoryIndex(index);
|
||||
d->m_subWidgets.first()->setFocusWidget();
|
||||
bool preferredIndexValid = 0 <= preferredPosition && preferredPosition < d->m_subWidgets.count();
|
||||
const int activationIndex = preferredIndexValid ? preferredPosition : 0;
|
||||
Internal::NavigationSubWidget *subWidget = d->m_subWidgets.at(activationIndex);
|
||||
subWidget->setFactoryIndex(index);
|
||||
subWidget->setFocusWidget();
|
||||
ICore::raiseWindow(this);
|
||||
return d->m_subWidgets.first()->widget();
|
||||
return subWidget->widget();
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
@@ -291,6 +375,14 @@ void NavigationWidget::closeSubWidget()
|
||||
if (d->m_subWidgets.count() != 1) {
|
||||
Internal::NavigationSubWidget *subWidget = qobject_cast<Internal::NavigationSubWidget *>(sender());
|
||||
subWidget->saveSettings();
|
||||
|
||||
int position = d->m_subWidgets.indexOf(subWidget);
|
||||
for (int pos = position + 1; pos < d->m_subWidgets.size(); ++pos) {
|
||||
Internal::NavigationSubWidget *nsw = d->m_subWidgets.at(pos);
|
||||
nsw->setPosition(pos - 1);
|
||||
NavigationWidgetPrivate::updateActivationsMap(nsw->factory()->id(), {d->m_side, pos - 1});
|
||||
}
|
||||
|
||||
d->m_subWidgets.removeOne(subWidget);
|
||||
subWidget->hide();
|
||||
subWidget->deleteLater();
|
||||
@@ -311,10 +403,18 @@ void NavigationWidget::saveSettings(QSettings *settings)
|
||||
d->m_subWidgets.at(i)->saveSettings();
|
||||
viewIds.append(d->m_subWidgets.at(i)->factory()->id().toString());
|
||||
}
|
||||
settings->setValue(QLatin1String("Navigation/Views"), viewIds);
|
||||
settings->setValue(QLatin1String("Navigation/Visible"), isShown());
|
||||
settings->setValue(QLatin1String("Navigation/VerticalPosition"), saveState());
|
||||
settings->setValue(QLatin1String("Navigation/Width"), d->m_width);
|
||||
settings->setValue(settingsKey("Views"), viewIds);
|
||||
settings->setValue(settingsKey("Visible"), isShown());
|
||||
settings->setValue(settingsKey("VerticalPosition"), saveState());
|
||||
settings->setValue(settingsKey("Width"), d->m_width);
|
||||
|
||||
const QString activationKey = QStringLiteral("ActivationPosition.");
|
||||
const auto keys = NavigationWidgetPrivate::s_activationsMap.keys();
|
||||
for (const auto &factoryId : keys) {
|
||||
const auto &info = NavigationWidgetPrivate::s_activationsMap[factoryId];
|
||||
if (info.side == d->m_side)
|
||||
settings->setValue(settingsKey(activationKey + factoryId.toString()), info.position);
|
||||
}
|
||||
}
|
||||
|
||||
void NavigationWidget::restoreSettings(QSettings *settings)
|
||||
@@ -325,17 +425,19 @@ void NavigationWidget::restoreSettings(QSettings *settings)
|
||||
return;
|
||||
}
|
||||
|
||||
int version = settings->value(QLatin1String("Navigation/Version"), 1).toInt();
|
||||
QStringList viewIds = settings->value(QLatin1String("Navigation/Views"),
|
||||
QStringList(QLatin1String("Projects"))).toStringList();
|
||||
const bool isLeftSide = d->m_side == Side::Left;
|
||||
QLatin1String defaultFirstView = isLeftSide ? QLatin1String("Projects") : QLatin1String("Outline");
|
||||
QStringList viewIds = settings->value(settingsKey("Views"), QStringList(defaultFirstView)).toStringList();
|
||||
|
||||
bool restoreSplitterState = true;
|
||||
int version = settings->value(settingsKey("Version"), 1).toInt();
|
||||
if (version == 1) {
|
||||
if (!viewIds.contains(QLatin1String("Open Documents"))) {
|
||||
viewIds += QLatin1String("Open Documents");
|
||||
QLatin1String defaultSecondView = isLeftSide ? QLatin1String("Open Documents") : QLatin1String("Bookmarks");
|
||||
if (!viewIds.contains(defaultSecondView)) {
|
||||
viewIds += defaultSecondView;
|
||||
restoreSplitterState = false;
|
||||
}
|
||||
settings->setValue(QLatin1String("Navigation/Version"), 2);
|
||||
settings->setValue(settingsKey("Version"), 2);
|
||||
}
|
||||
|
||||
int position = 0;
|
||||
@@ -351,13 +453,13 @@ void NavigationWidget::restoreSettings(QSettings *settings)
|
||||
}
|
||||
|
||||
if (d->m_subWidgets.isEmpty())
|
||||
// Make sure we have at least the projects widget
|
||||
insertSubItem(0, qMax(0, factoryIndex("Projects")));
|
||||
// Make sure we have at least the projects widget or outline widget
|
||||
insertSubItem(0, qMax(0, factoryIndex(defaultFirstView.data())));
|
||||
|
||||
setShown(settings->value(QLatin1String("Navigation/Visible"), true).toBool());
|
||||
setShown(settings->value(settingsKey("Visible"), isLeftSide).toBool());
|
||||
|
||||
if (restoreSplitterState && settings->contains(QLatin1String("Navigation/VerticalPosition"))) {
|
||||
restoreState(settings->value(QLatin1String("Navigation/VerticalPosition")).toByteArray());
|
||||
if (restoreSplitterState && settings->contains(settingsKey("VerticalPosition"))) {
|
||||
restoreState(settings->value(settingsKey("VerticalPosition")).toByteArray());
|
||||
} else {
|
||||
QList<int> sizes;
|
||||
sizes += 256;
|
||||
@@ -366,13 +468,27 @@ void NavigationWidget::restoreSettings(QSettings *settings)
|
||||
setSizes(sizes);
|
||||
}
|
||||
|
||||
d->m_width = settings->value(QLatin1String("Navigation/Width"), 240).toInt();
|
||||
d->m_width = settings->value(settingsKey("Width"), 240).toInt();
|
||||
if (d->m_width < 40)
|
||||
d->m_width = 40;
|
||||
|
||||
// Apply
|
||||
if (NavigationWidgetPlaceHolder::m_current)
|
||||
NavigationWidgetPlaceHolder::m_current->applyStoredSize(d->m_width);
|
||||
if (NavigationWidgetPlaceHolder::current(d->m_side))
|
||||
NavigationWidgetPlaceHolder::current(d->m_side)->applyStoredSize(d->m_width);
|
||||
|
||||
// Restore last activation positions
|
||||
settings->beginGroup(settingsGroup());
|
||||
const QString activationKey = QStringLiteral("ActivationPosition.");
|
||||
const auto keys = settings->allKeys();
|
||||
for (const QString &key : keys) {
|
||||
if (!key.startsWith(activationKey))
|
||||
continue;
|
||||
|
||||
int position = settings->value(key).toInt();
|
||||
Id factoryId = Id::fromString(key.mid(activationKey.length()));
|
||||
NavigationWidgetPrivate::updateActivationsMap(factoryId, {d->m_side, position});
|
||||
}
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void NavigationWidget::closeSubWidgets()
|
||||
@@ -390,9 +506,11 @@ void NavigationWidget::setShown(bool b)
|
||||
return;
|
||||
bool haveData = d->m_factoryModel->rowCount();
|
||||
d->m_shown = b;
|
||||
if (NavigationWidgetPlaceHolder::m_current) {
|
||||
NavigationWidgetPlaceHolder::m_current->setVisible(d->m_shown && !d->m_suppressed && haveData);
|
||||
d->m_toggleSideBarAction->setChecked(d->m_shown && !d->m_suppressed && haveData);
|
||||
NavigationWidgetPlaceHolder *current = NavigationWidgetPlaceHolder::current(d->m_side);
|
||||
if (current) {
|
||||
bool visible = d->m_shown && !d->m_suppressed && haveData;
|
||||
current->setVisible(visible);
|
||||
d->m_toggleSideBarAction->setChecked(visible);
|
||||
} else {
|
||||
d->m_toggleSideBarAction->setChecked(false);
|
||||
}
|
||||
@@ -414,8 +532,8 @@ void NavigationWidget::setSuppressed(bool b)
|
||||
if (d->m_suppressed == b)
|
||||
return;
|
||||
d->m_suppressed = b;
|
||||
if (NavigationWidgetPlaceHolder::m_current)
|
||||
NavigationWidgetPlaceHolder::m_current->setVisible(d->m_shown && !d->m_suppressed);
|
||||
if (NavigationWidgetPlaceHolder::current(d->m_side))
|
||||
NavigationWidgetPlaceHolder::current(d->m_side)->setVisible(d->m_shown && !d->m_suppressed);
|
||||
}
|
||||
|
||||
int NavigationWidget::factoryIndex(Id id)
|
||||
@@ -427,6 +545,20 @@ int NavigationWidget::factoryIndex(Id id)
|
||||
return -1;
|
||||
}
|
||||
|
||||
QString NavigationWidget::settingsKey(const QString &key) const
|
||||
{
|
||||
return QStringLiteral("%1/%2").arg(settingsGroup(), key);
|
||||
}
|
||||
|
||||
void NavigationWidget::onSubWidgetFactoryIndexChanged(int factoryIndex)
|
||||
{
|
||||
Q_UNUSED(factoryIndex);
|
||||
Internal::NavigationSubWidget *subWidget = qobject_cast<Internal::NavigationSubWidget *>(sender());
|
||||
QTC_ASSERT(subWidget, return);
|
||||
Id factoryId = subWidget->factory()->id();
|
||||
NavigationWidgetPrivate::updateActivationsMap(factoryId, {d->m_side, subWidget->position()});
|
||||
}
|
||||
|
||||
QHash<Id, Command *> NavigationWidget::commandMap() const
|
||||
{
|
||||
return d->m_commandMap;
|
||||
|
||||
@@ -43,22 +43,30 @@ class NavigationWidget;
|
||||
struct NavigationWidgetPrivate;
|
||||
namespace Internal { class NavigationSubWidget; }
|
||||
|
||||
enum class Side {
|
||||
Left,
|
||||
Right
|
||||
};
|
||||
|
||||
class CORE_EXPORT NavigationWidgetPlaceHolder : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
friend class Core::NavigationWidget;
|
||||
|
||||
public:
|
||||
explicit NavigationWidgetPlaceHolder(Id mode, QWidget *parent = 0);
|
||||
explicit NavigationWidgetPlaceHolder(Id mode, Side side, QWidget *parent = 0);
|
||||
virtual ~NavigationWidgetPlaceHolder();
|
||||
static NavigationWidgetPlaceHolder* current();
|
||||
static NavigationWidgetPlaceHolder *current(Side side);
|
||||
static void setCurrent(Side side, NavigationWidgetPlaceHolder *navWidget);
|
||||
void applyStoredSize(int width);
|
||||
|
||||
private:
|
||||
void currentModeAboutToChange(Id mode);
|
||||
|
||||
Id m_mode;
|
||||
static NavigationWidgetPlaceHolder* m_current;
|
||||
Side m_side;
|
||||
static NavigationWidgetPlaceHolder *s_currentLeft;
|
||||
static NavigationWidgetPlaceHolder *s_currentRight;
|
||||
};
|
||||
|
||||
class CORE_EXPORT NavigationWidget : public MiniSplitter
|
||||
@@ -72,15 +80,16 @@ public:
|
||||
FactoryPriorityRole
|
||||
};
|
||||
|
||||
explicit NavigationWidget(QAction *toggleSideBarAction);
|
||||
explicit NavigationWidget(QAction *toggleSideBarAction, Side side);
|
||||
virtual ~NavigationWidget();
|
||||
|
||||
void setFactories(const QList<INavigationWidgetFactory*> &factories);
|
||||
|
||||
QString settingsGroup() const;
|
||||
void saveSettings(QSettings *settings);
|
||||
void restoreSettings(QSettings *settings);
|
||||
|
||||
QWidget *activateSubWidget(Id factoryId);
|
||||
QWidget *activateSubWidget(Id factoryId, int preferredPosition);
|
||||
void closeSubWidgets();
|
||||
|
||||
bool isShown() const;
|
||||
@@ -89,7 +98,8 @@ public:
|
||||
bool isSuppressed() const;
|
||||
void setSuppressed(bool b);
|
||||
|
||||
static NavigationWidget* instance();
|
||||
static NavigationWidget *instance(Side side);
|
||||
static QWidget *activateSubWidget(Id factoryId, Side fallbackSide);
|
||||
|
||||
int storedWidth();
|
||||
|
||||
@@ -106,8 +116,10 @@ private:
|
||||
void splitSubWidget(int factoryIndex);
|
||||
void closeSubWidget();
|
||||
void updateToggleText();
|
||||
Internal::NavigationSubWidget *insertSubItem(int position, int index);
|
||||
Internal::NavigationSubWidget *insertSubItem(int position, int factoryIndex);
|
||||
int factoryIndex(Id id);
|
||||
QString settingsKey(const QString &key) const;
|
||||
void onSubWidgetFactoryIndexChanged(int factoryIndex);
|
||||
|
||||
NavigationWidgetPrivate *d;
|
||||
};
|
||||
|
||||
@@ -366,8 +366,7 @@ QList<QObject *> CppEditorPlugin::createTestObjects() const
|
||||
void CppEditorPlugin::openTypeHierarchy()
|
||||
{
|
||||
if (currentCppEditorWidget()) {
|
||||
NavigationWidget *navigation = NavigationWidget::instance();
|
||||
navigation->activateSubWidget(Constants::TYPE_HIERARCHY_ID);
|
||||
NavigationWidget::activateSubWidget(Constants::TYPE_HIERARCHY_ID, Side::Left);
|
||||
emit typeHierarchyRequested();
|
||||
}
|
||||
}
|
||||
@@ -375,8 +374,7 @@ void CppEditorPlugin::openTypeHierarchy()
|
||||
void CppEditorPlugin::openIncludeHierarchy()
|
||||
{
|
||||
if (currentCppEditorWidget()) {
|
||||
NavigationWidget *navigation = NavigationWidget::instance();
|
||||
navigation->activateSubWidget(Id(Constants::INCLUDE_HIERARCHY_ID));
|
||||
NavigationWidget::activateSubWidget(Constants::INCLUDE_HIERARCHY_ID, Side::Left);
|
||||
emit includeHierarchyRequested();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ class CppTypeHierarchyFactory : public Core::INavigationWidgetFactory
|
||||
public:
|
||||
CppTypeHierarchyFactory();
|
||||
|
||||
virtual Core::NavigationView createWidget();
|
||||
Core::NavigationView createWidget() override;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -258,7 +258,7 @@ QWidget *createModeWindow(const Core::Id &mode, DebuggerMainWindow *mainWindow)
|
||||
// Navigation and right-side window.
|
||||
auto splitter = new MiniSplitter;
|
||||
splitter->setFocusProxy(mainWindow->centralWidgetStack());
|
||||
splitter->addWidget(new NavigationWidgetPlaceHolder(mode));
|
||||
splitter->addWidget(new NavigationWidgetPlaceHolder(mode, Side::Left));
|
||||
splitter->addWidget(mainWindowSplitter);
|
||||
splitter->setStretchFactor(0, 0);
|
||||
splitter->setStretchFactor(1, 1);
|
||||
|
||||
@@ -127,19 +127,19 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
|
||||
setAttribute(Qt::WA_QuitOnClose, false); // don't prevent Qt Creator from closing
|
||||
}
|
||||
if (style != SideBarWidget) {
|
||||
m_toggleSideBarAction = new QAction(Utils::Icons::TOGGLE_SIDEBAR_TOOLBAR.icon(),
|
||||
QCoreApplication::translate("Core", Core::Constants::TR_SHOW_SIDEBAR),
|
||||
m_toggleSideBarAction = new QAction(Utils::Icons::TOGGLE_LEFT_SIDEBAR_TOOLBAR.icon(),
|
||||
QCoreApplication::translate("Core", Core::Constants::TR_SHOW_LEFT_SIDEBAR),
|
||||
toolBar);
|
||||
m_toggleSideBarAction->setCheckable(true);
|
||||
m_toggleSideBarAction->setChecked(false);
|
||||
cmd = Core::ActionManager::registerAction(m_toggleSideBarAction,
|
||||
Core::Constants::TOGGLE_SIDEBAR, context);
|
||||
Core::Constants::TOGGLE_LEFT_SIDEBAR, context);
|
||||
connect(m_toggleSideBarAction, &QAction::toggled, m_toggleSideBarAction,
|
||||
[this](bool checked) {
|
||||
m_toggleSideBarAction->setText(
|
||||
QCoreApplication::translate("Core",
|
||||
checked ? Core::Constants::TR_HIDE_SIDEBAR
|
||||
: Core::Constants::TR_SHOW_SIDEBAR));
|
||||
checked ? Core::Constants::TR_HIDE_LEFT_SIDEBAR
|
||||
: Core::Constants::TR_SHOW_LEFT_SIDEBAR));
|
||||
});
|
||||
addSideBar();
|
||||
m_toggleSideBarAction->setChecked(m_sideBar->isVisibleTo(this));
|
||||
@@ -299,7 +299,7 @@ HelpWidget::~HelpWidget()
|
||||
Core::ActionManager::unregisterAction(m_copy, Core::Constants::COPY);
|
||||
Core::ActionManager::unregisterAction(m_printAction, Core::Constants::PRINT);
|
||||
if (m_toggleSideBarAction)
|
||||
Core::ActionManager::unregisterAction(m_toggleSideBarAction, Core::Constants::TOGGLE_SIDEBAR);
|
||||
Core::ActionManager::unregisterAction(m_toggleSideBarAction, Core::Constants::TOGGLE_LEFT_SIDEBAR);
|
||||
if (m_switchToHelp)
|
||||
Core::ActionManager::unregisterAction(m_switchToHelp, Constants::CONTEXT_HELP);
|
||||
Core::ActionManager::unregisterAction(m_homeAction, Constants::HELP_HOME);
|
||||
|
||||
@@ -433,21 +433,19 @@ Core::NavigationView FolderNavigationWidgetFactory::createWidget()
|
||||
return n;
|
||||
}
|
||||
|
||||
void FolderNavigationWidgetFactory::saveSettings(int position, QWidget *widget)
|
||||
void FolderNavigationWidgetFactory::saveSettings(QSettings *settings, int position, QWidget *widget)
|
||||
{
|
||||
auto fnw = qobject_cast<FolderNavigationWidget *>(widget);
|
||||
QTC_ASSERT(fnw, return);
|
||||
QSettings *settings = Core::ICore::settings();
|
||||
const QString baseKey = QLatin1String("FolderNavigationWidget.") + QString::number(position);
|
||||
settings->setValue(baseKey + QLatin1String(".HiddenFilesFilter"), fnw->hiddenFilesFilter());
|
||||
settings->setValue(baseKey + QLatin1String(".SyncWithEditor"), fnw->autoSynchronization());
|
||||
}
|
||||
|
||||
void FolderNavigationWidgetFactory::restoreSettings(int position, QWidget *widget)
|
||||
void FolderNavigationWidgetFactory::restoreSettings(QSettings *settings, int position, QWidget *widget)
|
||||
{
|
||||
auto fnw = qobject_cast<FolderNavigationWidget *>(widget);
|
||||
QTC_ASSERT(fnw, return);
|
||||
QSettings *settings = Core::ICore::settings();
|
||||
const QString baseKey = QLatin1String("FolderNavigationWidget.") + QString::number(position);
|
||||
fnw->setHiddenFilesFilter(settings->value(baseKey + QLatin1String(".HiddenFilesFilter"), false).toBool());
|
||||
fnw->setAutoSynchronization(settings->value(baseKey + QLatin1String(".SyncWithEditor"), true).toBool());
|
||||
|
||||
@@ -94,8 +94,8 @@ public:
|
||||
FolderNavigationWidgetFactory();
|
||||
|
||||
Core::NavigationView createWidget() override;
|
||||
void saveSettings(int position, QWidget *widget) override;
|
||||
void restoreSettings(int position, QWidget *widget) override;
|
||||
void saveSettings(QSettings *settings, int position, QWidget *widget) override;
|
||||
void restoreSettings(QSettings *settings, int position, QWidget *widget) override;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -366,10 +366,9 @@ void ProjectTree::highlightProject(Project *project, const QString &message)
|
||||
{
|
||||
|
||||
Core::ModeManager::activateMode(Core::Constants::MODE_EDIT);
|
||||
Core::NavigationWidget *navigation = Core::NavigationWidget::instance();
|
||||
|
||||
// Shows and focusses a project tree
|
||||
QWidget *widget = navigation->activateSubWidget(ProjectExplorer::Constants::PROJECTTREE_ID);
|
||||
QWidget *widget = Core::NavigationWidget::activateSubWidget(ProjectExplorer::Constants::PROJECTTREE_ID, Core::Side::Left);
|
||||
|
||||
if (auto *projectTreeWidget = qobject_cast<ProjectTreeWidget *>(widget))
|
||||
projectTreeWidget->showMessage(project->rootProjectNode(), message);
|
||||
|
||||
@@ -468,22 +468,20 @@ NavigationView ProjectTreeWidgetFactory::createWidget()
|
||||
return n;
|
||||
}
|
||||
|
||||
void ProjectTreeWidgetFactory::saveSettings(int position, QWidget *widget)
|
||||
void ProjectTreeWidgetFactory::saveSettings(QSettings *settings, int position, QWidget *widget)
|
||||
{
|
||||
auto ptw = qobject_cast<ProjectTreeWidget *>(widget);
|
||||
Q_ASSERT(ptw);
|
||||
QSettings *settings = ICore::settings();
|
||||
const QString baseKey = QLatin1String("ProjectTreeWidget.") + QString::number(position);
|
||||
settings->setValue(baseKey + QLatin1String(".ProjectFilter"), ptw->projectFilter());
|
||||
settings->setValue(baseKey + QLatin1String(".GeneratedFilter"), ptw->generatedFilesFilter());
|
||||
settings->setValue(baseKey + QLatin1String(".SyncWithEditor"), ptw->autoSynchronization());
|
||||
}
|
||||
|
||||
void ProjectTreeWidgetFactory::restoreSettings(int position, QWidget *widget)
|
||||
void ProjectTreeWidgetFactory::restoreSettings(QSettings *settings, int position, QWidget *widget)
|
||||
{
|
||||
auto ptw = qobject_cast<ProjectTreeWidget *>(widget);
|
||||
Q_ASSERT(ptw);
|
||||
QSettings *settings = ICore::settings();
|
||||
const QString baseKey = QLatin1String("ProjectTreeWidget.") + QString::number(position);
|
||||
ptw->setProjectFilter(settings->value(baseKey + QLatin1String(".ProjectFilter"), false).toBool());
|
||||
ptw->setGeneratedFilesFilter(settings->value(baseKey + QLatin1String(".GeneratedFilter"), true).toBool());
|
||||
|
||||
@@ -101,8 +101,8 @@ public:
|
||||
ProjectTreeWidgetFactory();
|
||||
|
||||
Core::NavigationView createWidget();
|
||||
void restoreSettings(int position, QWidget *widget);
|
||||
void saveSettings(int position, QWidget *widget);
|
||||
void restoreSettings(QSettings *settings, int position, QWidget *widget);
|
||||
void saveSettings(QSettings *settings, int position, QWidget *widget);
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -266,7 +266,7 @@ void ShortCutManager::registerActions(const Core::Context &qmlDesignerMainContex
|
||||
command->setDefaultKeySequence(QKeySequence(Qt::Key_Escape));
|
||||
m_escapeAction.setEnabled(false);
|
||||
|
||||
Core::ActionManager::registerAction(&m_hideSidebarsAction, Core::Constants::TOGGLE_SIDEBAR, qmlDesignerMainContext);
|
||||
Core::ActionManager::registerAction(&m_hideSidebarsAction, Core::Constants::TOGGLE_LEFT_SIDEBAR, qmlDesignerMainContext);
|
||||
|
||||
connect(designerActionManager.view(), &DesignerActionManagerView::selectionChanged, this, [this](bool itemsSelected, bool rootItemIsSelected) {
|
||||
m_deleteAction.setEnabled(itemsSelected && !rootItemIsSelected);
|
||||
|
||||
@@ -89,39 +89,38 @@ QToolButton *OutlineWidgetStack::filterButton()
|
||||
return m_filterButton;
|
||||
}
|
||||
|
||||
void OutlineWidgetStack::restoreSettings(int position)
|
||||
void OutlineWidgetStack::saveSettings(QSettings *settings, int position)
|
||||
{
|
||||
QSettings *settings = Core::ICore::settings();
|
||||
settings->beginGroup(QLatin1String("Sidebar.Outline.") + QString::number(position));
|
||||
const QString baseKey = QStringLiteral("Outline.%1.").arg(position);
|
||||
settings->setValue(baseKey + QLatin1String("SyncWithEditor"), toggleSyncButton()->isChecked());
|
||||
for (auto iter = m_widgetSettings.constBegin(); iter != m_widgetSettings.constEnd(); ++iter)
|
||||
settings->setValue(baseKey + iter.key(), iter.value());
|
||||
}
|
||||
|
||||
void OutlineWidgetStack::restoreSettings(QSettings *settings, int position)
|
||||
{
|
||||
const QString baseKey = QStringLiteral("Outline.%1.").arg(position);
|
||||
|
||||
bool syncWithEditor = true;
|
||||
m_widgetSettings.clear();
|
||||
foreach (const QString &key, settings->allKeys()) {
|
||||
foreach (const QString &longKey, settings->allKeys()) {
|
||||
if (!longKey.startsWith(baseKey))
|
||||
continue;
|
||||
|
||||
const QString key = longKey.mid(baseKey.length());
|
||||
|
||||
if (key == QLatin1String("SyncWithEditor")) {
|
||||
syncWithEditor = settings->value(key).toBool();
|
||||
syncWithEditor = settings->value(longKey).toBool();
|
||||
continue;
|
||||
}
|
||||
m_widgetSettings.insert(key, settings->value(key));
|
||||
m_widgetSettings.insert(key, settings->value(longKey));
|
||||
}
|
||||
settings->endGroup();
|
||||
|
||||
toggleSyncButton()->setChecked(syncWithEditor);
|
||||
if (IOutlineWidget *outlineWidget = qobject_cast<IOutlineWidget*>(currentWidget()))
|
||||
outlineWidget->restoreSettings(m_widgetSettings);
|
||||
}
|
||||
|
||||
void OutlineWidgetStack::saveSettings(int position)
|
||||
{
|
||||
QSettings *settings = Core::ICore::settings();
|
||||
settings->beginGroup(QLatin1String("Sidebar.Outline.") + QString::number(position));
|
||||
|
||||
settings->setValue(QLatin1String("SyncWithEditor"), toggleSyncButton()->isChecked());
|
||||
for (auto iter = m_widgetSettings.constBegin(); iter != m_widgetSettings.constEnd(); ++iter)
|
||||
settings->setValue(iter.key(), iter.value());
|
||||
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
bool OutlineWidgetStack::isCursorSynchronized() const
|
||||
{
|
||||
return m_syncWithEditor;
|
||||
@@ -206,18 +205,18 @@ Core::NavigationView OutlineFactory::createWidget()
|
||||
return n;
|
||||
}
|
||||
|
||||
void OutlineFactory::saveSettings(int position, QWidget *widget)
|
||||
void OutlineFactory::saveSettings(QSettings *settings, int position, QWidget *widget)
|
||||
{
|
||||
OutlineWidgetStack *widgetStack = qobject_cast<OutlineWidgetStack *>(widget);
|
||||
Q_ASSERT(widgetStack);
|
||||
widgetStack->saveSettings(position);
|
||||
widgetStack->saveSettings(settings, position);
|
||||
}
|
||||
|
||||
void OutlineFactory::restoreSettings(int position, QWidget *widget)
|
||||
void OutlineFactory::restoreSettings(QSettings *settings, int position, QWidget *widget)
|
||||
{
|
||||
OutlineWidgetStack *widgetStack = qobject_cast<OutlineWidgetStack *>(widget);
|
||||
Q_ASSERT(widgetStack);
|
||||
widgetStack->restoreSettings(position);
|
||||
widgetStack->restoreSettings(settings, position);
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -47,8 +47,8 @@ public:
|
||||
QToolButton *toggleSyncButton();
|
||||
QToolButton *filterButton();
|
||||
|
||||
void saveSettings(int position);
|
||||
void restoreSettings(int position);
|
||||
void saveSettings(QSettings *settings, int position);
|
||||
void restoreSettings(QSettings *settings, int position);
|
||||
|
||||
private:
|
||||
bool isCursorSynchronized() const;
|
||||
@@ -77,8 +77,8 @@ public:
|
||||
|
||||
// from INavigationWidgetFactory
|
||||
virtual Core::NavigationView createWidget();
|
||||
virtual void saveSettings(int position, QWidget *widget);
|
||||
virtual void restoreSettings(int position, QWidget *widget);
|
||||
virtual void saveSettings(QSettings *settings, int position, QWidget *widget);
|
||||
virtual void restoreSettings(QSettings *settings, int position, QWidget *widget);
|
||||
private:
|
||||
QList<IOutlineWidgetFactory*> m_factories;
|
||||
};
|
||||
|
||||
@@ -2349,7 +2349,7 @@
|
||||
transform="translate(0,-100)" />
|
||||
</g>
|
||||
<g
|
||||
id="src/libs/utils/images/sidebaricon"
|
||||
id="src/libs/utils/images/leftsidebaricon"
|
||||
clip-path="none"
|
||||
transform="translate(399,0)">
|
||||
<rect
|
||||
@@ -4213,6 +4213,14 @@
|
||||
transform="matrix(1,0,0,-1,16,1152)"
|
||||
width="100%"
|
||||
height="100%" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#src/libs/utils/images/leftsidebaricon"
|
||||
id="src/libs/utils/images/rightsidebaricon"
|
||||
width="100%"
|
||||
height="100%"
|
||||
transform="matrix(-1,0,0,1,2293,0)" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
|
||||
|
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 254 KiB |