Navigation widgets need separate id and display name.

Such that the layout of the left hand sidebar can be restored
even if the display language is changed.
This commit is contained in:
con
2010-01-27 19:03:20 +01:00
parent a47cfaa01b
commit 58a248cb9d
13 changed files with 63 additions and 37 deletions

View File

@@ -774,12 +774,17 @@ BookmarkViewFactory::BookmarkViewFactory(BookmarkManager *bm)
}
QString BookmarkViewFactory::displayName()
QString BookmarkViewFactory::displayName() const
{
return BookmarkView::tr("Bookmarks");
}
QKeySequence BookmarkViewFactory::activationSequence()
QString BookmarkViewFactory::id() const
{
return QLatin1String("Bookmarks");
}
QKeySequence BookmarkViewFactory::activationSequence() const
{
return QKeySequence(Qt::ALT + Qt::Key_M);
}

View File

@@ -169,9 +169,10 @@ class BookmarkViewFactory : public Core::INavigationWidgetFactory
{
public:
BookmarkViewFactory(BookmarkManager *bm);
virtual QString displayName();
virtual QKeySequence activationSequence();
virtual Core::NavigationView createWidget();
QString displayName() const;
QString id() const;
QKeySequence activationSequence() const;
Core::NavigationView createWidget();
private:
BookmarkManager *m_manager;
};

View File

@@ -242,12 +242,17 @@ NavigationView OpenEditorsViewFactory::createWidget()
return n;
}
QString OpenEditorsViewFactory::displayName()
QString OpenEditorsViewFactory::displayName() const
{
return OpenEditorsWidget::tr("Open Documents");
}
QKeySequence OpenEditorsViewFactory::activationSequence()
QString OpenEditorsViewFactory::id() const
{
return QLatin1String("Open Documents");
}
QKeySequence OpenEditorsViewFactory::activationSequence() const
{
return QKeySequence(Qt::ALT + Qt::Key_O);
}

View File

@@ -88,9 +88,10 @@ class OpenEditorsViewFactory : public Core::INavigationWidgetFactory
{
public:
OpenEditorsViewFactory();
virtual ~OpenEditorsViewFactory();
QString displayName();
virtual QKeySequence activationSequence();
~OpenEditorsViewFactory();
QString displayName() const;
QString id() const;
QKeySequence activationSequence() const;
Core::NavigationView createWidget();
};

View File

@@ -41,7 +41,7 @@ INavigationWidgetFactory::~INavigationWidgetFactory()
{
}
QKeySequence INavigationWidgetFactory::activationSequence()
QKeySequence INavigationWidgetFactory::activationSequence() const
{
return QKeySequence();
}

View File

@@ -55,8 +55,9 @@ public:
INavigationWidgetFactory();
virtual ~INavigationWidgetFactory();
virtual QString displayName() = 0;
virtual QKeySequence activationSequence();
virtual QString displayName() const = 0;
virtual QString id() const = 0;
virtual QKeySequence activationSequence() const;
// This design is not optimal, think about it again once we need to extend it
// It could be implemented as returning an object which has both the widget
// and the docktoolbar widgets

View File

@@ -199,15 +199,15 @@ void NavigationWidget::activateSubWidget()
{
setShown(true);
QShortcut *original = qobject_cast<QShortcut *>(sender());
QString title = m_shortcutMap[original];
QString id = m_shortcutMap[original];
foreach (NavigationSubWidget *subWidget, m_subWidgets)
if (subWidget->factory()->displayName() == title) {
if (subWidget->factory()->id() == id) {
subWidget->setFocusWidget();
return;
}
m_subWidgets.first()->setFactory(title);
m_subWidgets.first()->setFactory(id);
m_subWidgets.first()->setFocusWidget();
}
@@ -237,7 +237,7 @@ void NavigationWidget::saveSettings(QSettings *settings)
{
QStringList views;
for (int i=0; i<m_subWidgets.count(); ++i) {
views.append(m_subWidgets.at(i)->factory()->displayName());
views.append(m_subWidgets.at(i)->factory()->id());
}
settings->setValue("Navigation/Views", views);
settings->setValue("Navigation/Visible", isShown());
@@ -349,16 +349,16 @@ void NavigationWidget::objectAdded(QObject * obj)
QList<int> navicontext = QList<int>() << core->uniqueIDManager()->
uniqueIdentifier(Core::Constants::C_NAVIGATION_PANE);
QString displayName = factory->displayName();
QString id = factory->id();
QShortcut *shortcut = new QShortcut(this);
shortcut->setWhatsThis(tr("Activate %1 Pane").arg(displayName));
shortcut->setWhatsThis(tr("Activate %1 Pane").arg(factory->displayName()));
Core::Command *cmd = am->registerShortcut(shortcut,
QLatin1String("QtCreator.Sidebar.") + displayName, navicontext);
QLatin1String("QtCreator.Sidebar.") + id, navicontext);
cmd->setDefaultKeySequence(factory->activationSequence());
connect(shortcut, SIGNAL(activated()), this, SLOT(activateSubWidget()));
m_shortcutMap.insert(shortcut, displayName);
m_commandMap.insert(displayName, cmd);
m_shortcutMap.insert(shortcut, id);
m_commandMap.insert(id, cmd);
}
////
@@ -486,12 +486,12 @@ void NavigationSubWidget::setFactory(INavigationWidgetFactory *factory)
m_navigationComboBox->setCurrentIndex(index);
}
void NavigationSubWidget::setFactory(const QString &name)
void NavigationSubWidget::setFactory(const QString &id)
{
for (int i = 0; i < m_navigationComboBox->count(); ++i) {
INavigationWidgetFactory *factory =
m_navigationComboBox->itemData(i).value<INavigationWidgetFactory *>();
if (factory->displayName() == name)
if (factory->id() == id)
m_navigationComboBox->setCurrentIndex(i);
}
}

View File

@@ -128,7 +128,7 @@ public:
INavigationWidgetFactory *factory();
void setFactory(INavigationWidgetFactory *factory);
void setFactory(const QString &name);
void setFactory(const QString &id);
void setFocusWidget();
void saveSettings(int position);

View File

@@ -309,6 +309,7 @@ void OutputPaneManager::init()
#else
cmd->setDefaultKeySequence(QKeySequence("Alt+9"));
#endif
cmd->setAttribute(Command::CA_UpdateText);
mpanes->addAction(cmd, "Coreplugin.OutputPane.ActionsGroup");
m_minMaxButton->setDefaultAction(cmd->action());
connect(m_minMaxAction, SIGNAL(triggered()), this, SLOT(slotMinMax()));

View File

@@ -413,12 +413,17 @@ FolderNavigationWidgetFactory::~FolderNavigationWidgetFactory()
{
}
QString FolderNavigationWidgetFactory::displayName()
QString FolderNavigationWidgetFactory::displayName() const
{
return tr("File System");
}
QKeySequence FolderNavigationWidgetFactory::activationSequence()
QString FolderNavigationWidgetFactory::id() const
{
return QLatin1String("File System");
}
QKeySequence FolderNavigationWidgetFactory::activationSequence() const
{
return QKeySequence(Qt::ALT + Qt::Key_Y);
}

View File

@@ -97,11 +97,12 @@ class FolderNavigationWidgetFactory : public Core::INavigationWidgetFactory
Q_OBJECT
public:
FolderNavigationWidgetFactory();
virtual ~FolderNavigationWidgetFactory();
~FolderNavigationWidgetFactory();
virtual QString displayName();
virtual QKeySequence activationSequence();
virtual Core::NavigationView createWidget();
QString displayName() const;
QString id() const;
QKeySequence activationSequence() const;
Core::NavigationView createWidget();
};
} // namespace Internal

View File

@@ -365,12 +365,17 @@ ProjectTreeWidgetFactory::~ProjectTreeWidgetFactory()
{
}
QString ProjectTreeWidgetFactory::displayName()
QString ProjectTreeWidgetFactory::displayName() const
{
return tr("Projects");
}
QKeySequence ProjectTreeWidgetFactory::activationSequence()
QString ProjectTreeWidgetFactory::id() const
{
return QLatin1String("Projects");
}
QKeySequence ProjectTreeWidgetFactory::activationSequence() const
{
return QKeySequence(Qt::ALT + Qt::Key_X);
}

View File

@@ -98,10 +98,11 @@ class ProjectTreeWidgetFactory : public Core::INavigationWidgetFactory
Q_OBJECT
public:
ProjectTreeWidgetFactory();
virtual ~ProjectTreeWidgetFactory();
virtual QString displayName();
virtual QKeySequence activationSequence();
virtual Core::NavigationView createWidget();
~ProjectTreeWidgetFactory();
QString displayName() const;
QString id() const;
QKeySequence activationSequence() const;
Core::NavigationView createWidget();
void restoreSettings(int position, QWidget *widget);
void saveSettings(int position, QWidget *widget);
};