forked from qt-creator/qt-creator
ProjectExplorer::New File Use addNewInformation also for context menu
So that the resourcenode can steal from it's parent Change-Id: I97a21d94c0ddb0d217c48fd69dc808446763837b Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
@@ -166,7 +166,7 @@ void AddNewProjectNodesVisitor::visitProjectNode(ProjectNode *node)
|
||||
// for quick sort and path search, provides operator<() for maps.
|
||||
struct FolderEntry {
|
||||
FolderEntry() : node(0), priority(-1) {}
|
||||
explicit FolderEntry(FolderNode *node, const QStringList &generatedFiles);
|
||||
explicit FolderEntry(FolderNode *node, const QStringList &generatedFiles, Node *contextNode);
|
||||
|
||||
int compare(const FolderEntry &rhs) const;
|
||||
|
||||
@@ -177,10 +177,10 @@ struct FolderEntry {
|
||||
int priority;
|
||||
};
|
||||
|
||||
FolderEntry::FolderEntry(FolderNode *n, const QStringList &generatedFiles) :
|
||||
FolderEntry::FolderEntry(FolderNode *n, const QStringList &generatedFiles, Node *contextNode) :
|
||||
node(n)
|
||||
{
|
||||
FolderNode::AddNewInformation info = node->addNewInformation(generatedFiles);
|
||||
FolderNode::AddNewInformation info = node->addNewInformation(generatedFiles, contextNode);
|
||||
displayName = info.displayName;
|
||||
const QFileInfo fi(ProjectExplorerPlugin::pathFor(node));
|
||||
baseName = fi.baseName();
|
||||
@@ -274,20 +274,12 @@ static QList<FolderEntry> findDeployProject(const QList<FolderEntry> &folders,
|
||||
// the longest matching path (list containing"/project/subproject1" matching
|
||||
// common path "/project/subproject1/newuserpath").
|
||||
static int findMatchingProject(const QList<FolderEntry> &projects,
|
||||
const QString &commonPath,
|
||||
Node *preferedProjectNode)
|
||||
const QString &commonPath)
|
||||
{
|
||||
if (projects.isEmpty() || commonPath.isEmpty())
|
||||
return -1;
|
||||
|
||||
const int count = projects.size();
|
||||
if (preferedProjectNode) {
|
||||
for (int p = 0; p < count; ++p) {
|
||||
if (projects.at(p).node == preferedProjectNode)
|
||||
return p;
|
||||
}
|
||||
}
|
||||
|
||||
int bestMatch = -1;
|
||||
int bestMatchLength = 0;
|
||||
int bestMatchPriority = -1;
|
||||
@@ -326,7 +318,7 @@ void ProjectFileWizardExtension::firstExtensionPageShown(
|
||||
const QList<GeneratedFile> &files,
|
||||
const QVariantMap &extraValues)
|
||||
{
|
||||
initProjectChoices(files);
|
||||
initProjectChoices(files, extraValues);
|
||||
|
||||
if (debugExtension)
|
||||
qDebug() << Q_FUNC_INFO << files.size();
|
||||
@@ -360,8 +352,7 @@ void ProjectFileWizardExtension::firstExtensionPageShown(
|
||||
m_context->page->setAdditionalInfo(text);
|
||||
bestProjectIndex = -1;
|
||||
} else {
|
||||
bestProjectIndex = findMatchingProject(m_context->projects, m_context->commonDirectory,
|
||||
extraValues.value(QLatin1String(Constants::PREFERED_PROJECT_NODE)).value<Node *>());
|
||||
bestProjectIndex = findMatchingProject(m_context->projects, m_context->commonDirectory);
|
||||
m_context->page->setNoneLabel(tr("<None>"));
|
||||
}
|
||||
|
||||
@@ -446,7 +437,8 @@ static inline void getProjectChoicesAndToolTips(QStringList *projectChoicesParam
|
||||
QStringList *projectToolTipsParam,
|
||||
ProjectExplorer::ProjectAction *projectActionParam,
|
||||
const QList<GeneratedFile> &generatedFiles,
|
||||
ProjectWizardContext *context)
|
||||
ProjectWizardContext *context,
|
||||
Node *contextNode)
|
||||
{
|
||||
// Set up project list which remains the same over duration of wizard execution
|
||||
// As tooltip, set the directory for disambiguation (should someone have
|
||||
@@ -464,7 +456,7 @@ static inline void getProjectChoicesAndToolTips(QStringList *projectChoicesParam
|
||||
const QString projectFilePath = generatedProjectFilePath(generatedFiles);
|
||||
projectAction = ProjectExplorer::AddSubProject;
|
||||
foreach (ProjectNode *pn, AddNewProjectNodesVisitor::projectNodes(projectFilePath))
|
||||
entryMap.insert(FolderEntry(pn, QStringList() << projectFilePath), true);
|
||||
entryMap.insert(FolderEntry(pn, QStringList() << projectFilePath, contextNode), true);
|
||||
|
||||
} else {
|
||||
QStringList filePaths;
|
||||
@@ -473,7 +465,7 @@ static inline void getProjectChoicesAndToolTips(QStringList *projectChoicesParam
|
||||
|
||||
projectAction = ProjectExplorer::AddNewFile;
|
||||
foreach (FolderNode *fn, AddNewFileNodesVisitor::allFolders())
|
||||
entryMap.insert(FolderEntry(fn, filePaths), true);
|
||||
entryMap.insert(FolderEntry(fn, filePaths, contextNode), true);
|
||||
}
|
||||
|
||||
context->projects.clear();
|
||||
@@ -491,14 +483,15 @@ static inline void getProjectChoicesAndToolTips(QStringList *projectChoicesParam
|
||||
*projectActionParam = projectAction;
|
||||
}
|
||||
|
||||
void ProjectFileWizardExtension::initProjectChoices(const QList<GeneratedFile> generatedFiles)
|
||||
void ProjectFileWizardExtension::initProjectChoices(const QList<GeneratedFile> generatedFiles, const QVariantMap &extraValues)
|
||||
{
|
||||
QStringList projectChoices;
|
||||
QStringList projectToolTips;
|
||||
ProjectExplorer::ProjectAction projectAction;
|
||||
|
||||
getProjectChoicesAndToolTips(&projectChoices, &projectToolTips, &projectAction,
|
||||
generatedFiles, m_context);
|
||||
generatedFiles, m_context,
|
||||
extraValues.value(QLatin1String(Constants::PREFERED_PROJECT_NODE)).value<Node *>());
|
||||
|
||||
m_context->page->setProjects(projectChoices);
|
||||
m_context->page->setProjectToolTips(projectToolTips);
|
||||
|
||||
@@ -61,7 +61,7 @@ public slots:
|
||||
void initializeVersionControlChoices();
|
||||
|
||||
private:
|
||||
void initProjectChoices(const QList<Core::GeneratedFile> generatedFiles);
|
||||
void initProjectChoices(const QList<Core::GeneratedFile> generatedFiles, const QVariantMap &extraValues);
|
||||
bool processProject(const QList<Core::GeneratedFile> &files,
|
||||
bool *removeOpenProjectAttribute, QString *errorMessage);
|
||||
bool processVersionControl(const QList<Core::GeneratedFile> &files, QString *errorMessage);
|
||||
|
||||
@@ -341,10 +341,10 @@ bool FolderNode::renameFile(const QString &filePath, const QString &newFilePath)
|
||||
return false;
|
||||
}
|
||||
|
||||
FolderNode::AddNewInformation FolderNode::addNewInformation(const QStringList &files) const
|
||||
FolderNode::AddNewInformation FolderNode::addNewInformation(const QStringList &files, Node *context) const
|
||||
{
|
||||
Q_UNUSED(files);
|
||||
return AddNewInformation(QFileInfo(path()).fileName(), 100);
|
||||
return AddNewInformation(QFileInfo(path()).fileName(), context == this ? 120 : 100);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
||||
@@ -189,7 +189,7 @@ public:
|
||||
int priority;
|
||||
};
|
||||
|
||||
virtual AddNewInformation addNewInformation(const QStringList &files) const;
|
||||
virtual AddNewInformation addNewInformation(const QStringList &files, Node *context) const;
|
||||
|
||||
void addFileNodes(const QList<FileNode*> &files);
|
||||
void removeFileNodes(const QList<FileNode*> &files);
|
||||
|
||||
@@ -1066,10 +1066,10 @@ bool QmakePriFileNode::renameFile(const QString &filePath, const QString &newFil
|
||||
return true;
|
||||
}
|
||||
|
||||
ProjectExplorer::FolderNode::AddNewInformation QmakePriFileNode::addNewInformation(const QStringList &files) const
|
||||
ProjectExplorer::FolderNode::AddNewInformation QmakePriFileNode::addNewInformation(const QStringList &files, Node *context) const
|
||||
{
|
||||
Q_UNUSED(files)
|
||||
return ProjectExplorer::FolderNode::AddNewInformation(QFileInfo(path()).fileName(), 90);
|
||||
return ProjectExplorer::FolderNode::AddNewInformation(QFileInfo(path()).fileName(), context == this ? 120 : 90);
|
||||
}
|
||||
|
||||
bool QmakePriFileNode::priFileWritable(const QString &path)
|
||||
@@ -1572,10 +1572,10 @@ bool QmakeProFileNode::hasBuildTargets() const
|
||||
return hasBuildTargets(projectType());
|
||||
}
|
||||
|
||||
ProjectExplorer::FolderNode::AddNewInformation QmakeProFileNode::addNewInformation(const QStringList &files) const
|
||||
ProjectExplorer::FolderNode::AddNewInformation QmakeProFileNode::addNewInformation(const QStringList &files, Node *context) const
|
||||
{
|
||||
Q_UNUSED(files)
|
||||
return AddNewInformation(QFileInfo(path()).fileName(), 100);
|
||||
return AddNewInformation(QFileInfo(path()).fileName(), context == this ? 120 : 100);
|
||||
}
|
||||
|
||||
bool QmakeProFileNode::hasBuildTargets(QmakeProjectType projectType) const
|
||||
|
||||
@@ -158,7 +158,7 @@ public:
|
||||
bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0);
|
||||
bool deleteFiles(const QStringList &filePaths);
|
||||
bool renameFile(const QString &filePath, const QString &newFilePath);
|
||||
AddNewInformation addNewInformation(const QStringList &files) const;
|
||||
AddNewInformation addNewInformation(const QStringList &files, Node *context) const;
|
||||
|
||||
bool setProVariable(const QString &var, const QString &value);
|
||||
|
||||
@@ -368,7 +368,7 @@ public:
|
||||
|
||||
bool hasBuildTargets() const;
|
||||
|
||||
AddNewInformation addNewInformation(const QStringList &files) const;
|
||||
AddNewInformation addNewInformation(const QStringList &files, Node *context) const;
|
||||
|
||||
QmakeProjectType projectType() const;
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
using namespace ResourceEditor;
|
||||
using namespace ResourceEditor::Internal;
|
||||
|
||||
static int priority(const QStringList &files)
|
||||
static bool priority(const QStringList &files)
|
||||
{
|
||||
if (files.isEmpty())
|
||||
return -1;
|
||||
@@ -54,8 +54,8 @@ static int priority(const QStringList &files)
|
||||
if (type.startsWith(QLatin1String("image/"))
|
||||
|| type == QLatin1String(QmlJSTools::Constants::QML_MIMETYPE)
|
||||
|| type == QLatin1String(QmlJSTools::Constants::JS_MIMETYPE))
|
||||
return 120;
|
||||
return 80;
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool addFilesToResource(const QString &resourceFile, const QStringList &filePaths, QStringList *notAdded,
|
||||
@@ -244,12 +244,21 @@ bool ResourceTopLevelNode::removePrefix(const QString &prefix, const QString &la
|
||||
return false;
|
||||
}
|
||||
|
||||
ProjectExplorer::FolderNode::AddNewInformation ResourceTopLevelNode::addNewInformation(const QStringList &files) const
|
||||
ProjectExplorer::FolderNode::AddNewInformation ResourceTopLevelNode::addNewInformation(const QStringList &files, Node *context) const
|
||||
{
|
||||
QString name = tr("%1 Prefix: %2")
|
||||
.arg(QFileInfo(path()).fileName())
|
||||
.arg(QLatin1String("/"));
|
||||
return AddNewInformation(name, priority(files) + 1);
|
||||
|
||||
int p = 80;
|
||||
if (priority(files)) {
|
||||
if (context == 0 || context == this)
|
||||
p = 125;
|
||||
else if (projectNode() == context)
|
||||
p = 150; // steal from our project node
|
||||
}
|
||||
|
||||
return AddNewInformation(name, p);
|
||||
}
|
||||
|
||||
ResourceFolderNode::ResourceFolderNode(const QString &prefix, const QString &lang, ResourceTopLevelNode *parent)
|
||||
@@ -357,12 +366,19 @@ bool ResourceFolderNode::renamePrefix(const QString &prefix, const QString &lang
|
||||
return true;
|
||||
}
|
||||
|
||||
ProjectExplorer::FolderNode::AddNewInformation ResourceFolderNode::addNewInformation(const QStringList &files) const
|
||||
ProjectExplorer::FolderNode::AddNewInformation ResourceFolderNode::addNewInformation(const QStringList &files, Node *context) const
|
||||
{
|
||||
QString name = tr("%1 Prefix: %2")
|
||||
.arg(QFileInfo(m_topLevelNode->path()).fileName())
|
||||
.arg(displayName());
|
||||
return AddNewInformation(name, priority(files) + 1);
|
||||
|
||||
int p = 80;
|
||||
if (priority(files)) {
|
||||
if (context == 0 || context == this)
|
||||
p = 120;
|
||||
}
|
||||
|
||||
return AddNewInformation(name, p);
|
||||
}
|
||||
|
||||
QString ResourceFolderNode::displayName() const
|
||||
|
||||
@@ -59,7 +59,7 @@ public:
|
||||
bool addPrefix(const QString &prefix, const QString &lang);
|
||||
bool removePrefix(const QString &prefix, const QString &lang);
|
||||
|
||||
AddNewInformation addNewInformation(const QStringList &files) const;
|
||||
AddNewInformation addNewInformation(const QStringList &files, Node *context) const;
|
||||
|
||||
private:
|
||||
Internal::ResourceFileWatcher *m_document;
|
||||
@@ -84,7 +84,7 @@ public:
|
||||
|
||||
bool renamePrefix(const QString &prefix, const QString &lang);
|
||||
|
||||
AddNewInformation addNewInformation(const QStringList &files) const;
|
||||
AddNewInformation addNewInformation(const QStringList &files, Node *context) const;
|
||||
|
||||
QString prefix() const;
|
||||
QString lang() const;
|
||||
|
||||
Reference in New Issue
Block a user