forked from qt-creator/qt-creator
ProjectExplorer: Return FilePaths for SessionManager::projectsForSessionName()
Change-Id: Ie168973e872ea105c7eb46ff7f58fb34883364b1 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
using namespace CppEditor;
|
using namespace CppEditor;
|
||||||
using namespace ProjectExplorer;
|
using namespace ProjectExplorer;
|
||||||
|
using namespace Utils;
|
||||||
|
|
||||||
static bool processEventsUntil(const std::function<bool()> condition, int timeOutInMs = 30000)
|
static bool processEventsUntil(const std::function<bool()> condition, int timeOutInMs = 30000)
|
||||||
{
|
{
|
||||||
@@ -51,7 +52,7 @@ static bool processEventsUntil(const std::function<bool()> condition, int timeOu
|
|||||||
class WaitForParsedProjects : public QObject
|
class WaitForParsedProjects : public QObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
WaitForParsedProjects(const QStringList &projects)
|
WaitForParsedProjects(const FilePaths &projects)
|
||||||
: m_projectsToWaitFor(projects)
|
: m_projectsToWaitFor(projects)
|
||||||
{
|
{
|
||||||
connect(SessionManager::instance(),
|
connect(SessionManager::instance(),
|
||||||
@@ -61,7 +62,7 @@ public:
|
|||||||
|
|
||||||
void onProjectFinishedParsing(ProjectExplorer::Project *project)
|
void onProjectFinishedParsing(ProjectExplorer::Project *project)
|
||||||
{
|
{
|
||||||
m_projectsToWaitFor.removeOne(project->projectFilePath().toString());
|
m_projectsToWaitFor.removeOne(project->projectFilePath());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wait()
|
bool wait()
|
||||||
@@ -70,7 +71,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QStringList m_projectsToWaitFor;
|
FilePaths m_projectsToWaitFor;
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace ClangTools {
|
namespace ClangTools {
|
||||||
@@ -86,7 +87,7 @@ void PreconfiguredSessionTests::initTestCase()
|
|||||||
QSKIP("Session must not be already active.");
|
QSKIP("Session must not be already active.");
|
||||||
|
|
||||||
// Load session
|
// Load session
|
||||||
const QStringList projects = SessionManager::projectsForSessionName(preconfiguredSessionName);
|
const FilePaths projects = SessionManager::projectsForSessionName(preconfiguredSessionName);
|
||||||
WaitForParsedProjects waitForParsedProjects(projects);
|
WaitForParsedProjects waitForParsedProjects(projects);
|
||||||
QVERIFY(SessionManager::loadSession(preconfiguredSessionName));
|
QVERIFY(SessionManager::loadSession(preconfiguredSessionName));
|
||||||
QVERIFY(waitForParsedProjects.wait());
|
QVERIFY(waitForParsedProjects.wait());
|
||||||
|
@@ -322,12 +322,11 @@ public:
|
|||||||
if (expanded) {
|
if (expanded) {
|
||||||
painter->setPen(textColor);
|
painter->setPen(textColor);
|
||||||
painter->setFont(sizedFont(12, option.widget));
|
painter->setFont(sizedFont(12, option.widget));
|
||||||
const QStringList projects = SessionManager::projectsForSessionName(sessionName);
|
const FilePaths projects = SessionManager::projectsForSessionName(sessionName);
|
||||||
int yy = firstBase + SESSION_LINE_HEIGHT - 3;
|
int yy = firstBase + SESSION_LINE_HEIGHT - 3;
|
||||||
QFontMetrics fm(option.widget->font());
|
QFontMetrics fm(option.widget->font());
|
||||||
for (const QString &project : projects) {
|
for (const FilePath &projectPath : projects) {
|
||||||
// Project name.
|
// Project name.
|
||||||
FilePath projectPath = FilePath::fromString(project);
|
|
||||||
QString completeBase = projectPath.completeBaseName();
|
QString completeBase = projectPath.completeBaseName();
|
||||||
painter->setPen(textColor);
|
painter->setPen(textColor);
|
||||||
painter->drawText(x1, yy, fm.elidedText(completeBase, Qt::ElideMiddle, textSpace));
|
painter->drawText(x1, yy, fm.elidedText(completeBase, Qt::ElideMiddle, textSpace));
|
||||||
@@ -375,7 +374,7 @@ public:
|
|||||||
int h = SESSION_LINE_HEIGHT;
|
int h = SESSION_LINE_HEIGHT;
|
||||||
QString sessionName = idx.data(Qt::DisplayRole).toString();
|
QString sessionName = idx.data(Qt::DisplayRole).toString();
|
||||||
if (m_expandedSessions.contains(sessionName)) {
|
if (m_expandedSessions.contains(sessionName)) {
|
||||||
QStringList projects = SessionManager::projectsForSessionName(sessionName);
|
const FilePaths projects = SessionManager::projectsForSessionName(sessionName);
|
||||||
h += projects.size() * 40 + LINK_HEIGHT - 6;
|
h += projects.size() * 40 + LINK_HEIGHT - 6;
|
||||||
}
|
}
|
||||||
return QSize(380, h + ItemGap);
|
return QSize(380, h + ItemGap);
|
||||||
|
@@ -1179,17 +1179,18 @@ void SessionManagerPrivate::sessionLoadingProgress()
|
|||||||
QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
|
QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList SessionManager::projectsForSessionName(const QString &session)
|
FilePaths SessionManager::projectsForSessionName(const QString &session)
|
||||||
{
|
{
|
||||||
const FilePath fileName = sessionNameToFileName(session);
|
const FilePath fileName = sessionNameToFileName(session);
|
||||||
PersistentSettingsReader reader;
|
PersistentSettingsReader reader;
|
||||||
if (fileName.exists()) {
|
if (fileName.exists()) {
|
||||||
if (!reader.load(fileName)) {
|
if (!reader.load(fileName)) {
|
||||||
qWarning() << "Could not restore session" << fileName.toUserOutput();
|
qWarning() << "Could not restore session" << fileName.toUserOutput();
|
||||||
return QStringList();
|
return {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return reader.restoreValue(QLatin1String("ProjectList")).toStringList();
|
return transform(reader.restoreValue(QLatin1String("ProjectList")).toStringList(),
|
||||||
|
&FilePath::fromUserInput);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WITH_TESTS
|
#ifdef WITH_TESTS
|
||||||
|
@@ -99,7 +99,7 @@ public:
|
|||||||
static Project *projectForFile(const Utils::FilePath &fileName);
|
static Project *projectForFile(const Utils::FilePath &fileName);
|
||||||
static Project *projectWithProjectFilePath(const Utils::FilePath &filePath);
|
static Project *projectWithProjectFilePath(const Utils::FilePath &filePath);
|
||||||
|
|
||||||
static QStringList projectsForSessionName(const QString &session);
|
static Utils::FilePaths projectsForSessionName(const QString &session);
|
||||||
|
|
||||||
static void reportProjectLoadingProgress();
|
static void reportProjectLoadingProgress();
|
||||||
static bool loadingSession();
|
static bool loadingSession();
|
||||||
|
@@ -74,18 +74,14 @@ int SessionModel::rowCount(const QModelIndex &) const
|
|||||||
return m_sortedSessions.count();
|
return m_sortedSessions.count();
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList pathsToBaseNames(const QStringList &paths)
|
QStringList pathsToBaseNames(const FilePaths &paths)
|
||||||
{
|
{
|
||||||
return Utils::transform(paths, [](const QString &path) {
|
return Utils::transform(paths, &FilePath::completeBaseName);
|
||||||
return QFileInfo(path).completeBaseName();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList pathsWithTildeHomePath(const QStringList &paths)
|
QStringList pathsWithTildeHomePath(const FilePaths &paths)
|
||||||
{
|
{
|
||||||
return Utils::transform(paths, [](const QString &path) {
|
return Utils::transform(paths, &FilePath::withTildeHomePath);
|
||||||
return FilePath::fromString(path).withTildeHomePath();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant SessionModel::data(const QModelIndex &index, int role) const
|
QVariant SessionModel::data(const QModelIndex &index, int role) const
|
||||||
|
Reference in New Issue
Block a user