forked from qt-creator/qt-creator
Simply look at the filesystem to get the list of sessions.
Instead of maintaining a list of sessions in our settings, simply list all the files that we find. Note: This will probably ressurect a few lost sessions for some people. Task-Nr: 255140
This commit is contained in:
@@ -991,18 +991,23 @@ QString SessionManager::activeSession() const
|
|||||||
|
|
||||||
QStringList SessionManager::sessions() const
|
QStringList SessionManager::sessions() const
|
||||||
{
|
{
|
||||||
QStringList result = m_core->settings()->value("Sessions").toStringList();
|
if (m_sessions.isEmpty()) {
|
||||||
|
// We aren't yet initalized, so do that now
|
||||||
if (!result.contains("default"))
|
QDirIterator dirIter(QFileInfo(m_core->settings()->fileName()).path() + "/qtcreator/");
|
||||||
result.prepend("default");
|
while (dirIter.hasNext()) {
|
||||||
|
dirIter.next();
|
||||||
return result;
|
const QFileInfo &fileInfo = dirIter.fileInfo();
|
||||||
|
if (fileInfo.suffix() == "qws" && fileInfo.completeBaseName() != "default")
|
||||||
|
m_sessions << fileInfo.completeBaseName();
|
||||||
|
}
|
||||||
|
m_sessions.prepend("default");
|
||||||
|
}
|
||||||
|
return m_sessions;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString SessionManager::sessionNameToFileName(const QString &session)
|
QString SessionManager::sessionNameToFileName(const QString &session)
|
||||||
{
|
{
|
||||||
QString sn = session;
|
return QFileInfo(m_core->settings()->fileName()).path() + "/qtcreator/" + session + ".qws";
|
||||||
return QFileInfo(m_core->settings()->fileName()).path() + "/qtcreator/" + sn + ".qws";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SessionManager::createAndLoadNewDefaultSession()
|
void SessionManager::createAndLoadNewDefaultSession()
|
||||||
@@ -1015,19 +1020,15 @@ bool SessionManager::createSession(const QString &session)
|
|||||||
{
|
{
|
||||||
if (sessions().contains(session))
|
if (sessions().contains(session))
|
||||||
return false;
|
return false;
|
||||||
QStringList list = m_core->settings()->value("Sessions").toStringList();
|
m_sessions.append(session);
|
||||||
list.append(session);
|
|
||||||
m_core->settings()->setValue("Sessions", list);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SessionManager::deleteSession(const QString &session)
|
bool SessionManager::deleteSession(const QString &session)
|
||||||
{
|
{
|
||||||
QStringList list = m_core->settings()->value("Sessions").toStringList();
|
if (!m_sessions.contains(session))
|
||||||
if (!list.contains(session))
|
|
||||||
return false;
|
return false;
|
||||||
list.removeOne(session);
|
m_sessions.removeOne(session);
|
||||||
m_core->settings()->setValue("Sessions", list);
|
|
||||||
QFile fi(sessionNameToFileName(session));
|
QFile fi(sessionNameToFileName(session));
|
||||||
if (fi.exists())
|
if (fi.exists())
|
||||||
return fi.remove();
|
return fi.remove();
|
||||||
@@ -1036,17 +1037,13 @@ bool SessionManager::deleteSession(const QString &session)
|
|||||||
|
|
||||||
bool SessionManager::cloneSession(const QString &original, const QString &clone)
|
bool SessionManager::cloneSession(const QString &original, const QString &clone)
|
||||||
{
|
{
|
||||||
QStringList list = m_core->settings()->value("Sessions").toStringList();
|
if (!m_sessions.contains(original))
|
||||||
list.append(clone);
|
|
||||||
|
|
||||||
if (!sessions().contains(original))
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
QFile fi(sessionNameToFileName(original));
|
QFile fi(sessionNameToFileName(original));
|
||||||
|
|
||||||
// If the file does not exist, we can still clone
|
// If the file does not exist, we can still clone
|
||||||
if (!fi.exists() || fi.copy(sessionNameToFileName(clone))) {
|
if (!fi.exists() || fi.copy(sessionNameToFileName(clone))) {
|
||||||
m_core->settings()->setValue("Sessions", list);
|
m_sessions.append(clone);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -189,8 +189,9 @@ private:
|
|||||||
QString m_displayName;
|
QString m_displayName;
|
||||||
QString m_sessionName;
|
QString m_sessionName;
|
||||||
|
|
||||||
mutable
|
mutable QStringList m_sessions;
|
||||||
QHash<Project *, QStringList> m_projectFileCache;
|
|
||||||
|
mutable QHash<Project *, QStringList> m_projectFileCache;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ProjectExplorer
|
} // namespace ProjectExplorer
|
||||||
|
|||||||
Reference in New Issue
Block a user