From 69d04bc069dd07f2bb4bfb905d4a88b6b12a8bbd Mon Sep 17 00:00:00 2001 From: dt <qtc-committer@nokia.com> Date: Thu, 18 Jun 2009 11:36:39 +0200 Subject: [PATCH] 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 --- src/plugins/projectexplorer/session.cpp | 39 ++++++++++++------------- src/plugins/projectexplorer/session.h | 5 ++-- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp index 4f164807dca..3f1c22357f5 100644 --- a/src/plugins/projectexplorer/session.cpp +++ b/src/plugins/projectexplorer/session.cpp @@ -991,18 +991,23 @@ QString SessionManager::activeSession() const QStringList SessionManager::sessions() const { - QStringList result = m_core->settings()->value("Sessions").toStringList(); - - if (!result.contains("default")) - result.prepend("default"); - - return result; + if (m_sessions.isEmpty()) { + // We aren't yet initalized, so do that now + QDirIterator dirIter(QFileInfo(m_core->settings()->fileName()).path() + "/qtcreator/"); + while (dirIter.hasNext()) { + dirIter.next(); + 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 sn = session; - return QFileInfo(m_core->settings()->fileName()).path() + "/qtcreator/" + sn + ".qws"; + return QFileInfo(m_core->settings()->fileName()).path() + "/qtcreator/" + session + ".qws"; } void SessionManager::createAndLoadNewDefaultSession() @@ -1015,19 +1020,15 @@ bool SessionManager::createSession(const QString &session) { if (sessions().contains(session)) return false; - QStringList list = m_core->settings()->value("Sessions").toStringList(); - list.append(session); - m_core->settings()->setValue("Sessions", list); + m_sessions.append(session); return true; } bool SessionManager::deleteSession(const QString &session) { - QStringList list = m_core->settings()->value("Sessions").toStringList(); - if (!list.contains(session)) + if (!m_sessions.contains(session)) return false; - list.removeOne(session); - m_core->settings()->setValue("Sessions", list); + m_sessions.removeOne(session); QFile fi(sessionNameToFileName(session)); if (fi.exists()) return fi.remove(); @@ -1036,17 +1037,13 @@ bool SessionManager::deleteSession(const QString &session) bool SessionManager::cloneSession(const QString &original, const QString &clone) { - QStringList list = m_core->settings()->value("Sessions").toStringList(); - list.append(clone); - - if (!sessions().contains(original)) + if (!m_sessions.contains(original)) return false; QFile fi(sessionNameToFileName(original)); - // If the file does not exist, we can still clone if (!fi.exists() || fi.copy(sessionNameToFileName(clone))) { - m_core->settings()->setValue("Sessions", list); + m_sessions.append(clone); return true; } return false; diff --git a/src/plugins/projectexplorer/session.h b/src/plugins/projectexplorer/session.h index b149400f59c..3cbf09b1b84 100644 --- a/src/plugins/projectexplorer/session.h +++ b/src/plugins/projectexplorer/session.h @@ -189,8 +189,9 @@ private: QString m_displayName; QString m_sessionName; - mutable - QHash<Project *, QStringList> m_projectFileCache; + mutable QStringList m_sessions; + + mutable QHash<Project *, QStringList> m_projectFileCache; }; } // namespace ProjectExplorer -- GitLab