forked from qt-creator/qt-creator
Save custom ordering of tools.
This overrides ordering of *all* tools. Which is suboptimal.
This commit is contained in:
@@ -694,9 +694,6 @@ void ExternalToolManager::initialize()
|
|||||||
&tools,
|
&tools,
|
||||||
true);
|
true);
|
||||||
|
|
||||||
// adapt overridden names and categories etc
|
|
||||||
readSettings(tools, &categoryPriorityMap);
|
|
||||||
|
|
||||||
QMap<QString, QList<Internal::ExternalTool *> > categoryMap;
|
QMap<QString, QList<Internal::ExternalTool *> > categoryMap;
|
||||||
QMapIterator<QString, QMultiMap<int, ExternalTool*> > it(categoryPriorityMap);
|
QMapIterator<QString, QMultiMap<int, ExternalTool*> > it(categoryPriorityMap);
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
@@ -704,6 +701,8 @@ void ExternalToolManager::initialize()
|
|||||||
categoryMap.insert(it.key(), it.value().values());
|
categoryMap.insert(it.key(), it.value().values());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// read renamed categories and custom order
|
||||||
|
readSettings(tools, &categoryMap);
|
||||||
setToolsByCategory(categoryMap);
|
setToolsByCategory(categoryMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -848,24 +847,29 @@ void ExternalToolManager::setToolsByCategory(const QMap<QString, QList<Internal:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ExternalToolManager::readSettings(const QMap<QString, ExternalTool *> &tools,
|
void ExternalToolManager::readSettings(const QMap<QString, ExternalTool *> &tools,
|
||||||
QMap<QString, QMultiMap<int, Internal::ExternalTool*> > *categoryPriorityMap)
|
QMap<QString, QList<ExternalTool *> > *categoryMap)
|
||||||
{
|
{
|
||||||
QSettings *settings = m_core->settings();
|
QSettings *settings = m_core->settings();
|
||||||
settings->beginGroup(QLatin1String("ExternalTools"));
|
settings->beginGroup(QLatin1String("ExternalTools"));
|
||||||
|
|
||||||
if (categoryPriorityMap) {
|
if (categoryMap) {
|
||||||
settings->beginGroup(QLatin1String("OverrideCategories"));
|
settings->beginGroup(QLatin1String("OverrideCategories"));
|
||||||
foreach (const QString &id, settings->allKeys()) {
|
foreach (const QString &category, settings->childGroups()) {
|
||||||
if (tools.contains(id)) {
|
int count = settings->beginReadArray(category);
|
||||||
const QString &newCategory = settings->value(id).toString();
|
for (int i = 0; i < count; ++i) {
|
||||||
ExternalTool *tool = tools.value(id);
|
settings->setArrayIndex(i);
|
||||||
if (tool->displayCategory() != newCategory) {
|
const QString &toolId = settings->value(QLatin1String("Tool")).toString();
|
||||||
(*categoryPriorityMap)[tool->displayCategory()].remove(tool->order(), tool);
|
if (tools.contains(toolId)) {
|
||||||
(*categoryPriorityMap)[newCategory].insert(tool->order(), tool);
|
ExternalTool *tool = tools.value(toolId);
|
||||||
if (categoryPriorityMap->value(tool->displayCategory()).isEmpty())
|
// remove from old category
|
||||||
categoryPriorityMap->remove(tool->displayCategory());
|
(*categoryMap)[tool->displayCategory()].removeAll(tool);
|
||||||
|
if (categoryMap->value(tool->displayCategory()).isEmpty())
|
||||||
|
categoryMap->remove(tool->displayCategory());
|
||||||
|
// add to new category
|
||||||
|
(*categoryMap)[category].append(tool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
settings->endArray();
|
||||||
}
|
}
|
||||||
settings->endGroup();
|
settings->endGroup();
|
||||||
}
|
}
|
||||||
@@ -884,10 +888,14 @@ void ExternalToolManager::writeSettings()
|
|||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
it.next();
|
it.next();
|
||||||
const QString &category = it.key();
|
const QString &category = it.key();
|
||||||
|
settings->beginWriteArray(category, it.value().count());
|
||||||
|
int i = 0;
|
||||||
foreach (ExternalTool *tool, it.value()) {
|
foreach (ExternalTool *tool, it.value()) {
|
||||||
if (tool->displayCategory() != category)
|
settings->setArrayIndex(i);
|
||||||
settings->setValue(tool->id(), category);
|
settings->setValue(QLatin1String("Tool"), tool->id());
|
||||||
|
++i;
|
||||||
}
|
}
|
||||||
|
settings->endArray();
|
||||||
}
|
}
|
||||||
settings->endGroup();
|
settings->endGroup();
|
||||||
|
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ private:
|
|||||||
QMap<QString, Internal::ExternalTool *> *tools,
|
QMap<QString, Internal::ExternalTool *> *tools,
|
||||||
bool isPreset = false);
|
bool isPreset = false);
|
||||||
void readSettings(const QMap<QString, Internal::ExternalTool *> &tools,
|
void readSettings(const QMap<QString, Internal::ExternalTool *> &tools,
|
||||||
QMap<QString, QMultiMap<int, Internal::ExternalTool*> > *categoryPriorityMap);
|
QMap<QString, QList<Internal::ExternalTool*> > *categoryPriorityMap);
|
||||||
void writeSettings();
|
void writeSettings();
|
||||||
|
|
||||||
static ExternalToolManager *m_instance;
|
static ExternalToolManager *m_instance;
|
||||||
|
|||||||
Reference in New Issue
Block a user